MATLAB:查找属于另一个单元格数组的单元格数组的第一个元素

时间:2014-06-06 15:12:28

标签: string matlab find match cell

MATLAB中是否有一个函数可以让我找到同样属于字符串单元格数组A的字符串单元格数组B的第一个元素?

我目前正在使用:

    i = find(ismember(A,B));
    string = A{i(1)};

但是我想知道在ismember的最后一个元素之前是否有一个函数不会计算A,而是在找到第一个匹配时停止。原因是A包含大约1,800,000个字符串,我只对找到第一个匹配感兴趣。

如果我这样做,for循环会更快:

    for j=1:length(A)
      if ismember(A{j}, B)
        string = A{j};
        break
      end
    end

...

A中的元素数量是否会影响计算ismember所需的时间?

谢谢。

1 个答案:

答案 0 :(得分:1)

find有一些可选参数,允许您只获得前N个结果。我还没有证实这会导致短路评估;这取决于MATLAB的JIT编译器是否根据需要重新排序操作ismember

i = find(ismember(A,B), 1, 'first');

来自the documentation

  

nd = find(X, k)ind = find(X, k, 'first')最多返回与k的非零条目对应的第一个X索引。 k必须是正整数,但它可以是任何数字数据类型。

您当前的解决方法看起来既直截了当又保证具有所需的复杂性。