搜索细胞&提取行

时间:2013-01-05 18:45:33

标签: matlab

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

我的数据如下:

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)从另一个数据中心C中提取第1,4,5,6,9和10行到一个新变量。

据我所知,像==这样的逻辑运算可能不足以满足我的目的。我应该考虑哪些功能来实现这一目标?

由于

2 个答案:

答案 0 :(得分:2)

试试这个:

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

说明:

  • repmat制作一个尺寸为B
  • 的'蓝色'酒窖
  • isequal比较两个单元格的内容
  • cellfun重复所有单元格并返回逻辑列
  • C(...)使用此列索引C并返回匹配的行

此致

答案 1 :(得分:2)

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

idx = strcmp('blue', A{2});
B = cellfun(@(x) x(idx), A, 'UniformOutput', false);