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

How do I assign index entries found using matlab ismember to another array?

我有两个向量 P 和 D。我编写了以下代码,它查看 D 的每个元素,然后在 P 中找到相同的元素(两者具有相同的元素,只是顺序不同)和 returns P 中该元素的索引。以下代码能够做到这一点。

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

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

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

returns 一个错误。

是否可以将 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

并给出相同的结果。