2010-08-14 123 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排序由指定行,所有的人遵循的顺序。