我有两个矩阵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
欢迎任何帮助。
答案 0 :(得分:3)
您想要添加对应于相同第一行值的第二行值。这是unique
和accumarray
的典型用法:
[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,:)]))];