【问题标题】:set rows to zero except maximum value将行设置为零,最大值除外
【发布时间】:2014-03-26 07:36:15
【问题描述】:

希望有人可以帮助我解决以下 MATLAB 问题。 我有一个矩阵,例如:

a = [ 1 2 3 ; 4 6 5 ; 9 8 7]

我想创建一个矩阵,每行只有最大值,其余设置为零。 所以在这种情况下:

amax = [ 0 0 3 ; 0 6 0 ; 9 0 0 ]

我觉得这不是那么难哈哈,但我想不通! 提前感谢您的帮助。

【问题讨论】:

  • 从逻辑上思考如何在每一行中找到最大值。您需要遍历矩阵中的每个项目,将其与前一个最大值进行比较,如果它更大,则保存位置。将除最大值之外的所有位置设置为 0。对每一行重复此操作。去写一些代码。
  • 我现在每行都有 'a(a
  • 它适用于什么编程语言?这是纯粹的数学问题吗?你都尝试了些什么?暂时投反对票。

标签: matlab matrix row max zero


【解决方案1】:
amax = a .* bsxfun(@eq, a, max(a,[],2));

【讨论】:

  • 哇——太完美了!但是你是怎么计算'max(a,[],2)'部分的?!我想明白,下一次..!
猜你喜欢
  • 1970-01-01
  • 2020-08-08
  • 2017-07-28
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多