如何将使用matlab ismember找到的索引项分配给另一个数组



我有两个向量p和D。我写了下面的代码,它查看D的每个元素,然后在p中找到相同的元素(两者都有不同顺序的相同元素),并返回p中该元素的索引。下面的代码可以做到这一点。

for i=1:17
 ind = find(ismember(P,D(i)));
 ind 
 msgbox(sprintf('n i is: %dn',ind));
end

问题是,我希望每个"ind"值都存储在一个数组中。

for i=1:17
 ind(i) = find(ismember(P,D(i))); 
 msgbox(sprintf('n i is: %dn',ind));
end

返回一个错误。

是否可以将find(ismember)分配给数组的不同条目?

谢谢!

编辑:

我的向量p和D看起来如下:

P = {'Fz' 'Fp1' 'Cz' 'T3' 'T4'}
D = {'T4' 'Cz' 'T3' 'Fp1' 'Fz'}

我现在得到的错误是:在赋值A(:)=B中,A和B中的元素数必须相同。

您不必自己实现,ismember已经可以做到:

P = {'Fz' 'Fp1' 'Cz' 'T3' 'T4'};
D = {'T4' 'Cz' 'T3' 'Fp1' 'Fz'};
[~, ind] = ismember(D, P)

中的结果

ind =
     5     3     4     2     1

但如果你真的想自己做——你的代码基本上已经可以了

ind = zeros(size(D));
for i = 1 : numel(D)
    ind(i) = find(ismember(P, D(i)));
end

并给出了相同的结果。

最新更新