鉴于我有两个阵列,请说:
key
现在我想根据b中的数字来订购a中的条目,因为我希望所有的1在相应的顺序中排在第一位,然后是2s,然后是3 ..,这些示例数组我想得到以下内容:
a = [0.8, 0.2,0.1,20,1.5,5.8,12]
b = [2,1,3,1,2,2,3]
如何在MATLAB中有效地完成这项工作? TKS
答案 0 :(得分:4)
首先,排序b
并在排序矩阵中获取b
的索引(sort
的第二个输出)。由于这是一种稳定的排序,因此将保留订单。然后在a
中使用这些索引来获得结果数组:
>> a = [0.8, 0.2,0.1,20,1.5,5.8,12];
>> b = [2,1,3,1,2,2,3];
>> [~,I]=sort(b)
I =
2 4 1 5 6 3 7
>> a(I)
ans =
0.20000 20.00000 0.80000 1.50000 5.80000 0.10000 12.00000