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

Mid*_*hat 45 sorting matlab matrix octave

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

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

 1     3
 5     7
-1     4
Run Code Online (Sandbox Code Playgroud)

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

-1     4
 1     3
 5     7
Run Code Online (Sandbox Code Playgroud)

但输出sort(data)是:

-1     3
 1     4
 5     7
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*ena 75

我认为sortrows函数就是你要找的东西.

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7
Run Code Online (Sandbox Code Playgroud)


Ale*_*ioX 5

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

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

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

    data=data(idx,:)
    
    Run Code Online (Sandbox Code Playgroud)