我在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)