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

Arrays 如何将使用matlab ismember找到的索引项分配给另一个数组?,arrays,matlab,for-loop,vector,assign,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 问题是我希望每个“ind”值都存储在一个数组中 for i=1:17 ind(i) = find(ismember(P,D(i))); msgbox(sp

我有两个向量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
问题是我希望每个“ind”值都存储在一个数组中

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中的元素数量必须相同。

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

并给出相同的结果。

数据的维度是什么?它们只是普通向量吗?对于每个i,您希望发现单个或多个事件?如果您希望找到数量可变的事件,则可能是出现错误的原因。你现在犯的错误是什么?我会把这些信息添加到我的问题中。你不知道我花了多少时间试图得到正确的东西。。啊。非常感谢!!对于第二部分,我得到了一个错误,上面写着“矩形空矩阵的赋值不正确”。但是由于第一部分这样做了,所以它很好。非常感谢!!