合并两个矩阵并找到其最大属性

时间:2015-05-24 14:26:25

标签: matlab matrix max cell-array

我有两个矩阵ab,我希望以第一行中没有重复值和第二个值的方式组合行,ab中具有相同行值的列在新矩阵中获取最大值。即。

a = 1     2     3
    8     2     5 

b = 1     2     5     7
    2     4     6     1 

期望的输出

c =  1     2     3     5     7
     8     4     5     6     1

欢迎任何帮助。(the case for accumulation is asked here

2 个答案:

答案 0 :(得分:2)

Accumarray接受匿名函数和内置函数。它使用sum函数作为默认值。但您可以将此更改为任何内置或匿名函数,如下所示:

在这种情况下,您可以使用max功能。

in = horzcat(a,b).';
[uVal,~,idx] = unique(in(:,1));

out = [uVal,accumarray(idx,in(:,2),[],@max)].'

答案 1 :(得分:1)

根据您之前的问题并查看accumarray的帮助文件,其中有一个确切的示例。

[ii, ~, kk] = unique([a(1,:) b(1,:)]);
result = [ ii; accumarray(kk(:), [a(2,:) b(2,:)], [], @max).'];

唯一的区别是匿名功能。