我在 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
其中 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))
如果您喜欢单行,那么使用 bsxfun
的另一行-
C = B(nonzeros(bsxfun(@times,bsxfun(@eq,A,B.'),1:numel(B))))
关于arrays - 在 Matlab 中重新排序向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817300/