在matlab中合并两个矩阵及其属性

时间:2015-05-18 11:39:38

标签: arrays matlab matrix

我有两个矩阵a和b,我想以一种方式组合行,在第一行中我没有重复值,在第二行中,在& b具有相同行值的b在新矩阵中加在一起。即

a =
 1     2     3
 8     2     5

b =
 1     2     5     7
 2     4     6     1

所需的outputc =

 1     2     3     5     7
10     6     5     6     1

欢迎任何帮助。

1 个答案:

答案 0 :(得分:3)

对于两行矩阵

您想要添加对应于相同第一行值的第二行值。这是uniqueaccumarray的典型用法:

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

一般情况

如果您需要累积具有任意列数的列(基于第一行值),您可以使用sparse,如下所示:

[ii, ~, kk] = unique([a(1,:) b(1,:)]);
r = repmat((1:size(a,1)-1).', 1, numel(kk));
c = repmat(kk.', size(a,1)-1, 1);
result = [ii; full(sparse(r,c,[a(2:end,:) b(2:end,:)]))];