我有两个向量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
并给出了相同的结果。