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

Merge two matrix and find the maximum of its attributes

我有两个矩阵 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

欢迎任何帮助。()

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

在这种情况下,您可以使用 max 函数。

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

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

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

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

唯一的区别是匿名函数。