请考虑Matlab中包含可能重复的整数的列向量A
。
使用unique
,我构造了包含B
元素的向量A
,没有重复。
假设我有一个向量C
,大小为size(B,1)x1
。
我希望您能帮助构造一个大小D
的向量size(A,1)x1
,将C
的相同元素分配给A
的相等元素。
让我用一个例子更好地解释。
clear
A=[2;
3;
3;
1;
4;
2;
2;
4;
5;
1];
B=unique(A,'stable');
%B=[2;
% 3;
% 1;
% 4;
% 5] %selected elements
C=[100;
101;
102;
103;
104]; %size(B,1)x1
然后,开始将C
的顶部元素分配给A
的顶部元素,我想得到
D=[100; %C(1)
101; %C(2)
101; %C(2)
102; %C(3)
103; %C(4)
100; %C(1)
100; %C(1)
103; %C(4)
104; %C(5)
102];%C(3)
我尝试使用unique
发布的索引,但无法获得所需的输出。有帮助吗?
答案 0 :(得分:3)
您可以使用ismember
的第二个输出:
[~, idx] = ismember(A,B)
D = C(idx);
答案 1 :(得分:1)
使用数组函数在B的每个元素的A中查找索引:
idxs = arrayfun(@(x)find(B==x,1),A);
D=C(idxs)
D =
100
101
101
102
103
100
100
103
104
102