2013-01-16 45 views
1

我想基於matlab中的一個 快速方式中的另一個矢量值對矩陣的列進行排序。 讓假設我有一個參考向量:矩陣中的快速列排序引用matlab中的另一個矢量

a = [1 8 3]; 

和矩陣我按行

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

排序想,我想基於矢量a結果,如果排序的是

a = [8 3 1] 

排序後的矩陣將現在爲

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

所以第一個向量的索引與列的索引相同 所以我們根據向量的值對列進行排序。

回答

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);