如何在MATLAB中针对第二行对二维数组进行排序?

时间:2010-08-14 10:45:15

标签: sorting matlab

我有阵列说“a”

a =

 1     4     5
 6     7     2

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

给出了

b =

 1     4     2
 6     7     5

但我想要像

一样

b =

 5     1     4
 2     6     7

表示第二行应该排序,但是ist行的元素应该保持不变,并且应该对应于第二行。

3 个答案:

答案 0 :(得分:3)

调用sortRows(A '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按指定行排序,其他所有行都遵循其顺序。

答案 1 :(得分:0)

您可以在第二行使用SORT函数,然后使用索引输出对整个数组进行排序:

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

答案 2 :(得分: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的第二个参数来获取所需的排序顺序,然后将其应用于整个事物。