【问题标题】:Use Matlab to compare values in different columns of 2 cell arrays使用 Matlab 比较 2 个元胞数组的不同列中的值
【发布时间】:2015-12-03 14:31:07
【问题描述】:

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

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

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

我希望能够在任何地方找到“一”的第 2 列和第 3 列等于“二”的第 3 列和第 4 列,并返回“二”的第 5 列中的特定值(理想情况下也是第 3 列中的值)。在此示例中,“One”与“Two”具有相同的 X 2、Y 2、X 6 和 Y 6,因此我将获得以下结果:

Three=
[X 76
 Y 78
 X 110
 Y 120]

我目前拥有的单元格数组的大小也不同。任何帮助将不胜感激。

【问题讨论】:

  • 如果你有一个完整的字符矩阵,你可以使用ismember

标签: matlab


【解决方案1】:

您可以将 One 和 Two 声明为元胞数组 同时创建一个名为 Third 的空单元格。您可以比较并获得输出为

[m n]=size(One)
Three = {};
for i=1:m
   if ((One{i,2} == Two{i,3}) && (One{i,3} == Two{i,4}) )
       Three=[Three; {One{i,2},Two{i,5}}];
   end    
end

【讨论】:

  • 我正在尝试使用它,但由于我的矩阵尺寸不一致,我一直以错误告终。
  • 我在发布之前测试了这段代码。请与错误一起发布您的代码。或许我可以帮你。
  • 针对上面的问题,我现在是这样做的:One={['A':'G'],['X' 'Y' 'X' 'Y' 'X' 'Y' 'Z'],[2 2 5 5 6 6 6],[10 11 22 23 28 28 28]}; Two={['A':'H'],[1 1 1 1 1 1 1 1],['X' 'Y' 'Z' 'X' 'Y' 'Z' 'X' 'Y'],[2 2 2 4 4 4 6 6],[76 78 80 98 99 100 110 120]}; [m n]=size(One) Three = {}; for i=1:m if ((One{i,2} == Two{i,3}) && (One{i,3} == Two{i,4}) ) Three=[Three; {One{i,2},Two{i,5}}]; end end
  • 我收到“错误使用 == 矩阵尺寸必须一致。测试错误(第 8 行) if ((One{i,2} == Two{i,3}) && (一{i,3} == 二{i,4}) )"
  • 您遇到了错误,因为 One{i,2} 有 7 个元素,而 Two{i,3} 有 8 个元素。你总是比较相同长度的字符串。
猜你喜欢
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
相关资源
最近更新 更多