矩阵的快速列排序在matlab中引用另一个向量

时间:2013-01-16 14:52:36

标签: matlab matrix

我正在尝试根据a中的另一个向量值对矩阵的列进行排序 在matlab中快速的方式。 假设我有一个参考向量:

a = [1 8 3];

矩阵我想按行排序

b =[2 3 4
    5 6 4
    1 2 1];

如果排序的a是

,我希望结果基于向量a
 a = [8 3 1]

排序的矩阵现在是

b = [3 4 2 
     6 4 5
     2 1 1];

因此第一个向量的索引与列的索引相同 因此,我们根据向量的值对列进行排序。

1 个答案:

答案 0 :(得分:4)

在Matlab中,sort function返回两个变量,第一个是排序的矢量/矩阵,第二个是一组索引,可以与原始数据组合以产生排序值。

A = [ 5 4 1 2 3 ];

[A_sorted1, idx] = sort(A);

A_sorted2 = A(idx);

A_sorted1A_sorted2是等效的。

如果b中的行数等于a中的元素数,那么您只需使用:

[~, idx] = sort(a);
b_sorted = b(idx,:);

如果您想按列排序,请使用:

b_sorted = b(:,idx);