在Matlab中同时查找单元格数组中的多个值

时间:2013-07-25 19:51:07

标签: matlab

我有CellArray1个50个唯一字符串,CellArray2有2000个唯一字符串(其中50个与CellArray1中的字符串相同)。有没有办法在不使用循环的情况下从第二个单元阵列中的第一个单元阵列中找到所有50个唯一字符串的位置?

1 个答案:

答案 0 :(得分:2)

是 - 以下代码演示了这一点:

cellArray1 = {'hello', 'world'};
cellArray2 = {'good', 'morning', 'world'};
overlap = find(ismember(cellArray2, cellArray1)};

这将在3中返回值overlap,因为cellArray2{3}中出现了cellArray1

<强>更新

上面的代码返回索引,但不是原始的顺序。如果您需要原始订单,可以执行以下操作

overlap = cellfun(@(x)find(ismember(cellArray2, x)), cellArray1, 'uniformOutput', false);
overlapSorted = cell2mat(overlap);

可以说cellfun实际上有一个隐式循环(但是所有向量操作都有隐式循环,真的);但其中一个结构将按照你的要求进行。如果你不需要它排序,我想象的第一个会明显更快。