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

Sorting 如何在MATLAB中根据第二行对二维数组进行排序?,sorting,matlab,Sorting,Matlab,我得说“a” a= 如果我使用函数 b=排序(a) 给出一个答案 b= 但是我想要像这样的 b= 平均第二行应该被排序,但ist行的元素应该保持不变,并且应该与第二行相对应。您可以仅在第二行上使用该函数,然后使用索引输出对整个数组进行排序: [junk,sortIndex] = sort(a(2,:)); b = a(:,sortIndex); 怎么样 a = [1 4 5; 6 7 2] a = 1 4 5 6 7 2 >> [

我得说“a”

a=

如果我使用函数 b=排序(a)

给出一个答案

b=

但是我想要像这样的

b=

平均第二行应该被排序,但ist行的元素应该保持不变,并且应该与第二行相对应。

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

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

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
获得所需的排序顺序,然后将其应用于整个事件。

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按指定的行排序,所有其他的按其顺序排序。

垃圾可以替换为:[~,sortIndex]这在Matlab的较新版本中更干净。不幸的是,它非常不向后兼容,当您为使用稍旧版本的Matlab的用户编写代码时,可能会非常尴尬。
[junk,sortIndex] = sort(a(2,:));
b = a(:,sortIndex);
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
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