2012-12-21 109 views
2

可能重複:
How can I sort a 2-D array in MATLAB with respect to one column?
Sort a matrix with another matrixMATLAB - 排序基於掀起了矩陣向量的排序

我有429個值的向量 'A' 和矩陣「 B'爲429x200的值。 A和B中的行共享相同的索引。我的向量'A'包含值1:1:429,但它們在整個向量中隨機排列。我想對A重新排序,以便從1到429的順序編制索引,並且我還想按照與新排序的「A」相同的順序對矩陣「B」中的行進行排序。

如果沒有for-loop,這可以快速簡單的完成嗎?

下面是一個例子來說明我的觀點:

A = 
    5 
    3 
    1 
    2 
    4 


B = 
    3 7 0 4 6 
    1 2 5 0 8 
    4 0 2 0 0 
    3 0 1 0 5 
    2 2 3 4 4 


sortedA = 

1 
2 
3 
4 
5 

sortedB = 

4 0 2 0 0 
3 0 1 0 5 
1 2 5 0 8 
2 2 3 4 4 
3 7 0 4 6 

謝謝大家!

回答

2

示例性數據:

A = [ 5, 3, 1, 2, 4 ]'; 

B = [ 3, 7, 0, 4, 6; 1, 2, 5, 0, 8; 4, 0, 2, 0, 0; 3, 0, 1, 0, 5; 2, 2, 3, 4, 4 ] 

排序矩陣:

[sortedA,IX] = sort(A); 

sortedB = B(IX,:); 

sortedA = 
1 
2 
3 
4 
5 

sortedB = 
4  0  2  0  0 
3  0  1  0  5 
1  2  5  0  8 
2  2  3  4  4 
3  7  0  4  6