在 MATLAB 中匹配元胞数组

Matching cell arrays in MATLAB

我试图在 MATLAB 的另一个元胞数组中查找一个元胞数组中元素的索引。例如:

a = {'Hello', 'Good', 'Sun', 'Moon'};
b = {'Well', 'I', 'You', 'Hello', 'Alone', 'Party', 'Long', 'Moon'};

我希望得到以下结果,它显示数组 $b$ 中 $a$ 的元素索引:

index=[4, NaN, NaN, 8];

我知道可以使用循环来实现它,但我认为有一种我不知道的简单方法可以做到这一点。

谢谢。

ismember-

[matches,index] = ismember(a,b)
index(~matches) = nan

intersect-

[~,pos,idx] = intersect(a,b)
index = nan(1,numel(a))
index(pos) = idx

你可以使用 ismember

[flag,index] = ismember ( a, b )

您可以使用 ismember 的第二个输出参数:

[ida,idb]=ismember(a, b)

ida =    1     0     0     1
idb=     4     0     0     8

如果你真的需要 NaN 就这样做:

idb( idb == 0 ) = NaN