使用Matlab比较不同单元阵列中的列

使用Matlab比较不同单元阵列中的列,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] 我想在任何地方都

我试图比较两个包含字符和数字的单元格数组。我想比较两个特定列,然后在另一个相关列中返回值

例如,我有两个单元格数组:

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]
我想在任何地方都能找到'One'的第2列等于'Two'的第3列,并在'Two'的第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。