使用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。