2015-12-02 105 views
0

我想比較兩個包含字符和數字的單元格數組。我想比較兩個特定的列,然後返回另一個相關列中的值。使用Matlab來比較不同單元格陣列中的列

例如,我的形式兩個單元陣列:

One=   Two= 
[A 2 10  [A 1 2 76 
B 2 11  B 1 2 78 
A 5 22  C 1 2 80 
B 5 23  D 1 4 98 
A 6 28  E 1 4 99 
B 6 28  F 1 4 100 
C 6 28]  G 1 6 110] 

而且我希望能夠找到無處不在的「一個」等於「兩課」的第3列2列,返回的特定值在'二'的第4列。所以對於這個例子,我會得到的結果是:

Three= 
[76 
78 
80 
110] 

任何幫助,將不勝感激。

+0

我明白76,78和110,但我不明白爲什麼80排顯示出來?錯誤? –

+0

76,78和80對應於第三列中的2 ...,其對應於'一'的第二列中的2。 –

回答

0

選項1:轉換爲數字陣列的第一

X = cell2mat(One(:,2:end)); 
Y = cell2mat(Two(:,2:end)); 
result = Y(X(:,1)==Y(:,2),3) 

選項2:轉換爲數字陣列的各個點

result = cell2mat(Two(cell2mat(One(:,2))==cell2mat(Two(:,3)),4)) 

選項3:轉化細胞以表第一

T1 = cell2table(One); 
T2 = cell2table(Two); 
result = T2.Two4(T1.One2==T2.Two3) 

選項4:濫用Matlab單元陣列和數值陣列如何工作

result = [Two{([One{:,2}]==[Two{:,3}])',4}]' 
+0

如果我的矩陣大小不同,該怎麼辦?我常常是這樣,所以我總是遇到麻煩。 –

+0

@JanaSmith我不明白你在問這個評論。澄清? –

+0

我的單元陣列長度不一樣(像9x1和11x1),Matlab從不喜歡那樣。 –