2013-07-31 108 views
1

我要合併A的第2個結束欄,如果A的第1列是重複合併2日至最後一列的第1列重複

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] 

row o rdering並不重要。

我的第一個方案是

A=sortrows(A,1); % sort by 1st col 

,然後除以根據第一柱A成各種矩陣(針對不同的第1列元素即,不同基質)

然後horzcat每個2:對於每個矩陣端部元件。

然後以某種方式將它們連接成一個對象。

這只是我的計劃或想象,雖然我無法弄清楚這是否可能。

+2

相關的問題:集團在不同的值行第一列索引](http://stackoverflow.com/q/17447474/1336150) –

回答

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 
相關問題