在 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
[~,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
我试图在 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
[~,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