在Matlab中将相同的数字分配给向量的相等行

时间:2018-08-02 15:49:39

标签: matlab

请考虑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发布的索引,但无法获得所需的输出。有帮助吗?

2 个答案:

答案 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