0

我正在尝试检查特定值位于单元格中的哪些行,然后从另一个单元格中检索这些位置中的行并将它们放入变量中。

我的数据是这样的:

1x4 Cell =

     A           B          C            D           %Cell labels for clarity
{10x1 Cell} {10x1 Cell} {10x1 Cell} [10x1 Double]

   B          blue          M           4.78
   R          red           N           6.43
   R          red           N           6.89
   B          blue          M           7.99
   B          blue          M           5.87
   B          blue          M           4.78
   R          red           N           6.43
   R          red           N           6.89
   B          blue          M           7.99
   B          blue          M           5.87

例如,它会像这样:1) 搜索"blue"位于 中的行B,2) 发现“蓝色”位于第 1、4、5、6、9 和 10 行。然后 3) 提取行1、4、5、6、9 和 10 从另一个数据单元C, 到一个新变量。

据我所知,像这样的逻辑操作==可能不足以完成我想做的事情。我应该考虑哪些功能来实现这一目标?

谢谢

4

2 回答 2

2

试试这个:

C(cellfun(@isequal, B, repmat({'blue'},10,1)))

解释:

  • repmat制作一个大小为 B 的 'blue' 单元阵列
  • isequal比较两个单元格的内容
  • cellfun对所有单元格重复并返回逻辑列
  • C(...)用该列索引 C 并返回匹配的行

问候

于 2013-01-05T23:00:02.287 回答
2

我会分两步做。首先进行比较并获取逻辑数组,然后使用它和单元格乐趣来提取您的行。

idx = strcmp('blue', A{2});
B = cellfun(@(x) x(idx), A, 'UniformOutput', false);
于 2013-01-05T23:36:16.927 回答