我在Matlab向量B维nx1包含整数从1到n按照一定的顺序,例如n=6 B=(2;4;5;1;6;3).
我有一个矢量A维数mx1与m>1包含在升序每一个重复任意次数,例如,相同的整数m=13 A=(1;1;1;2;3;3;3;4;5;5;5;5;6).
我想获得C维度mx1,其中整数in A按顺序重新排序B.在这个例子中,C=(2;4;5;5;5;5;1;1;1;6;3;3;3)
ismember和sort- 的一种方法-
[~,idx] = ismember(A,B)
[~,sorted_idx] = sort(idx)
C = B(idx(sorted_idx))
Run Code Online (Sandbox Code Playgroud)
如果你是单行,那么另一个bsxfun-
C = B(nonzeros(bsxfun(@times,bsxfun(@eq,A,B.'),1:numel(B))))
Run Code Online (Sandbox Code Playgroud)