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

时间:2008-09-25 17:30:02

标签: matlab sorting matrix octave

我想根据特定列对矩阵进行排序。有sort函数,但它会独立排序所有列。

例如,如果我的矩阵data是:

 1     3
 5     7
-1     4

然后所需的输出(按第一列排序)将是:

-1     4
 1     3
 5     7

sort(data)的输出是:

-1     3
 1     4
 5     7

如何按第一列对此矩阵进行排序?

2 个答案:

答案 0 :(得分:75)

我认为sortrows功能正是您所需要的。

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7

答案 1 :(得分:4)

sortrows()的替代方案,可应用于更广泛的方案。

  1. 保存您要订购的行/列的排序索引:

    [~,idx]=sort(data(:,1));
    
  2. 根据先前排序的索引重新排序所有行/列

    data=data(idx,:)