如何在MATLAB中找到与某一行单元格匹配的单元格数组的行索引?

时间:2017-01-08 14:42:26

标签: matlab row cell

说我有一个单元格数组

round()

是否有一种智能方法可以在CELLARRAY = {{[]} {[]} {[1 1 1]} {[]} {[]} {[1 1 1]}; {[]} {[]} {[1 1 1]} {[]} {[]} {[]}; {[]} {[]} {[]} {[]} {[]} {[]}} A = {{[]} {[]} {[1 1 1]} {[]} {[]} {[]}} 中找到与CELLARRAY匹配的行索引?我的答案是2?

1 个答案:

答案 0 :(得分:3)

可能最快的方法是通过行循环,MATLAB的JIT编译器应该能够很好地优化它。

matches = false(1, size(CELLARRAY, 1));

for k = 1:size(CELLARRAY, 1)
    matches(k) = isequal(CELLARRAY(k,:), A);
end

indices = find(matches);

或者,您可以使用类似cellfun的内容为您执行操作,但可能会更慢

matches = cellfun(@(x)isequal(x, A), num2cell(CELLARRAY, 2)); 
indices = find(matches)