合并两个矩阵并找到其属性的最大值
Merge two matrix and find the maximum of its attributes
我有两个矩阵 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
欢迎任何帮助。()
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).'];
唯一的区别是匿名函数。
我有两个矩阵 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
欢迎任何帮助。(
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).'];
唯一的区别是匿名函数。