合并第1列中重复项的第2列到最后一列

时间:2013-07-31 07:33:47

标签: matlab

如果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:每个矩阵的结束元素。

然后以某种方式将它们加入到一个对象中。

这只是我的计划或想象,虽然我无法弄清楚这是否可行。

1 个答案:

答案 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