我有两个矩阵a
和b
,我希望以第一行中没有重复值和第二个值的方式组合行,a
和b
中具有相同行值的列在新矩阵中获取最大值。即。
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
答案 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).'];
唯一的区别是匿名功能。