如果A的第1列重复
,我想合并A的第2列到结束列这
A = [2 3 1;
3 4 2;
2 6 8]
到
B{1}=2 3 1 6 8
B{2}=3 4 2 NaN NaN
或
B = [2 3 1 6 8;
3 4 2 NaN NaN]
行排序无关紧要。
我的第一个计划是
A=sortrows(A,1); % sort by 1st col
然后根据第一列(即不同的第一列元素的不同矩阵)将A划分为各种矩阵
然后horzcat每个2:每个矩阵的结束元素。
然后以某种方式将它们加入到一个对象中。
这只是我的计划或想象,虽然我无法弄清楚这是否可行。
答案 0 :(得分:0)
这是一个让你入门的方法。它会填充0
而不是NaN
,但是:
B = sortrows(A,1);
C = B(1,:);
for row = 2:size(B,1)
if B(row,1) == C(end,1)
C(end, end+1:end+2) = B(row, 2:3);
else
C(end+1, 1:3) = B(row, :);
end
end
或者你可以使用单元格数组做同样的事情而不必填充:
B = sortrows(A,1);
C = {B(1,:)};
for row = 2:size(B,1)
if B(row,1) == C{end}(1)
C{end}(end+1:end+2) = B(row, 2:3);
else
C{end+1} = B(row, :);
end
end