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
所需的时间?
谢谢。
答案 0 :(得分:1)
find
有一些可选参数,允许您只获得前N个结果。我还没有证实这会导致短路评估;这取决于MATLAB的JIT编译器是否根据需要重新排序操作ismember
。
i = find(ismember(A,B), 1, 'first');
nd = find(X, k)
或ind = find(X, k, 'first')
最多返回与k
的非零条目对应的第一个X
索引。k
必须是正整数,但它可以是任何数字数据类型。
您当前的解决方法看起来既直截了当又保证具有所需的复杂性。