【问题标题】:How to find the row index of a cell array that matches certain row of cells in MATLAB?如何在 MATLAB 中找到与某行单元格匹配的单元格数组的行索引?
【发布时间】:2017-01-08 14:42:25
【问题描述】:

假设我有一个元胞数组

CELLARRAY = 
{{[]} {[]} {[1 1 1]} {[]} {[]} {[1 1 1]};

{[]} {[]} {[1 1 1]} {[]} {[]} {[]};

{[]} {[]} {[]} {[]} {[]} {[]}}


A = {{[]} {[]} {[1 1 1]} {[]} {[]} {[]}}

有没有一种聪明的方法可以在CELLARRAY 中找到与A 匹配的行索引?我的答案是 2?

【问题讨论】:

    标签: matlab row cell


    【解决方案1】:

    可能最快的方法是对行进行 for 循环,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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 2015-08-10
      • 1970-01-01
      • 2015-01-29
      • 2014-02-16
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多