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

时间:2015-02-19 00:10:11

标签: arrays matlab for-loop vector assign

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

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

问题在于我希望每个人都能得到这样的信息。要存储在数组中的值。

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

返回错误。

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

谢谢!

编辑:

我的向量P和D如下所示:

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

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

1 个答案:

答案 0 :(得分:2)

您不必自己实现此功能,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

并给出相同的结果。