如何根据另一个列表的顺序对列表进行排序?

时间:2015-08-17 12:30:44

标签: matlab sorting

我需要根据另一个列表没有循环的顺序对列表的值进行排序。例如:

 A=[1 2 3 4 5] 

 B=[8 5 6 2 10 3 1 9 4]

根据A中值的顺序排序B的结果是:

 C=[5 2 3 1 4]

2 个答案:

答案 0 :(得分:2)

您的问题需要明确许多方面,例如AB中的数字是否始终是唯一的? A中的所有数字是否始终位于B中。但要从CA获取B,您可以这样做:

B(ismember(B,A))

如果A是唯一的,但B不是,例如:

 A=[1 2 3 4 5] 
 B=[8 5 5 6 3 2 10 3 1 9 4]

然后您需要将其更改为

unique(B(ismember(B,A)),'stable')

答案 1 :(得分:0)

试试这个:

A = [1 2 3 4 5]
B = [8 5 6 2 10 3 1 9 4]
m = 1;

C = zeros(size(A))
for n =1:length(B)
    if B(n) <= length(A)
        C(m) = A(B(n));
        m = m + 1;
    end
end

C