我正在尝试检查特定值在单元格中的哪些行,然后从另一个单元格中检索这些位置中的行并将它们放入变量中。
我的数据如下:
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行到一个新变量。
据我所知,像==
这样的逻辑运算可能不足以满足我的目的。我应该考虑哪些功能来实现这一目标?
由于
答案 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);