2010-08-14 110 views
3

我有陣列說 「一個」如何在MATLAB中對第二排排序二維數組?

一個=

1  4  5 
6  7  2 

如果我使用功能 B =排序的(a)

給出ANS

B =

1  4  2 
6  7  5 

但我想像

B =

5  1  4 
2  6  7 

平均2行應該進行排序,但IST行的元素應該保持不變,應該通訊員行第二。

回答

0

您可以使用只在第二排的SORT功能,然後使用索引輸出到整個數組進行排序:

[junk,sortIndex] = sort(a(2,:)); 
b = a(:,sortIndex); 
+1

垃圾可以被替換爲: [〜,sortIndex]這是在MATLAB – MatlabDoug 2010-08-18 14:48:13

+1

的較新版本乾淨了一點遺憾的是,這是非常不向後兼容,並且可以可怕的尷尬,當你的用戶代碼誰使用稍微大一點Matlab版本。 – Jonas 2010-08-19 19:13:17

0

如何

a = [1 4 5; 6 7 2] 
a = 
    1  4  5 
    6  7  2 
>> [s,idx] = sort(a(2,:)) 
s = 
    2  6  7 
idx = 
    3  1  2 
>> b = a(:,idx) 
b = 
    5  1  4 
    2  6  7 
換句話說

,您使用第二個參數sort以獲得您想要的排序順序,然後將其應用於整個事情。

3

調用sortRows(一 '2)'

拉此開:

a = 1  4  5 
    6  7  2 

a' = 1 6 
    4 7 
    5 2 

sortrows(a',2) = 5 2 
       1 6 
       4 7 

sortrows(a',2)' = 5 1 4 
        2 6 7 

這裏的關鍵是調用sortRows排序由指定行,所有的人遵循的順序。