2013-10-11 39 views
1

我有2個陣列Matlab的陣列:聯合收割機基於第一列

陣列A(4×2):

1 2 
4 13 
5 14 
6 13 

陣列B(3×2):

2 11 
4 34 
7 56 

我想獲得( 6x3):

1 2 
2  11 
4 13 34 
5 14 
6 13 
7  56 

即結合上面的2個不等s基於第一列中的元素進行ize,並創建一個新的數組,其中包含2個數組的列作爲不同的列。

感謝

+0

你是什麼要去使用,以填補空元素? –

+1

您可以使用'join'(統計工具箱)或參閱http://stackoverflow.com/q/16217059/395857。 –

回答

1

你可以這樣說:

c = unique([a(:,1); b(:,1)]); 
c(:,2:3) = NaN; 
c(ismember(c(:,1), a(:,1)), 2) = a(:,2); 
c(ismember(c(:,1), b(:,1)), 3) = b(:,2) 
+2

如果'a'或'b'可以包含'0',只需在第一行後面加上'c(:2:3)= NaN;'並刪除最後一行 –

+0

@Luis Mendo ..謝謝你的提示。這是我忽視的一個很好的見解。 – Zanam

+0

我們是否假定「A」和「B」的第一列總是排序? –