在Matlab中的组内最大值

时间:2014-12-29 23:05:43

标签: arrays matlab max

我有以下矩阵:

[ 2 5 7 8  1 3 4 6  5 7 3 1;
  1 1 1 1  2 2 2 2  3 3 3 3;]

第一行代表值,第二行代表

如果第二行中的值相同,我希望得到最大值,即它们的特征是相同的。所以,我想拥有的是:

[ 8 6 7],因为8是第二行为1时的最高值,6当第二行为2时为73 1}}当第二行是{{1}}时。我可以用循环来做,但我想要矢量化解决方案,如果可能的话,当然,在一行。

1 个答案:

答案 0 :(得分:3)

accumarray完全符合您的要求

x=[ 2 5 7 8 1 3 4 6 5 7 3 1; 1 1 1 1 2 2 2 2 3 3 3 3;]
accumarray(x(2,:)',x(1,:)',[],@max)