使用Matlab来比较不同单元格阵列中的列
我想比较两个包含字符和数字的单元格数组。我想比较两个特定的列,然后返回另一个相关列中的值。使用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]
任何帮助,将不胜感激。
选项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}]'
如果我的矩阵大小不同,该怎么办?我常常是这样,所以我总是遇到麻烦。 –
@JanaSmith我不明白你在问这个评论。澄清? –
我的单元阵列长度不一样(像9x1和11x1),Matlab从不喜欢那样。 –
我明白76,78和110,但我不明白为什么80排显示出来?错误? –
76,78和80对应于第三列中的2 ...,其对应于'一'的第二列中的2。 –