根据MATLAB中的另一个数组排序数组

时间:2017-12-03 21:34:23

标签: arrays matlab

鉴于我有两个阵列,请说:

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

1 个答案:

答案 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