gpt4 book ai didi

arrays - 在 Matlab 中重新排序向量?

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:23 25 4
gpt4 key购买 nike

我在 Matlab 中有一个矢量 B维度 nx1包含来自 1 的整数至 n以某种顺序,例如n=6 B=(2;4;5;1;6;3) .

我有一个矢量 A维度 mx1m>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)

最佳答案

ismembersort 的一种方法 -

[~,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com