1

如果 A 的第一列重复,我想将 A 的第二列合并到结束列

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

然后根据第1列将A划分为各种矩阵(即不同的第1列元素的不同矩阵)

然后 horzcat 每个矩阵的每个 2:end 元素。

然后以某种方式将它们连接成一个对象。

这只是我的计划或想象,虽然我不知道这是否可能。

4

1 回答 1

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
于 2013-07-31T07:54:58.847 回答