如何将使用 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
并给出相同的结果。
我有两个向量 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
并给出相同的结果。