45

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

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

 1     3
 5     7
-1     4

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

-1     4
 1     3
 5     7

但输出sort(data)是:

-1     3
 1     4
 5     7

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

4

2 回答 2

75

我认为sortrows功能是您正在寻找的。

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7
于 2008-09-25T18:34:42.987 回答
5

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

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

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

    data=data(idx,:)
    
于 2016-03-06T21:27:31.423 回答