2015-12-02 104 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从不喜欢那样。 –