web-dev-qa-db-ja.com

MATLABで1つの列に関して2次元配列を並べ替えるにはどうすればよいですか?

特定の列に従ってマトリックスをソートしたいと思います。 sort関数がありますが、すべての列を個別にソートします。

たとえば、私の行列dataが次の場合:

_ 1     3
 5     7
-1     4
_

目的の出力(最初の列でソート)は次のようになります。

_-1     4
 1     3
 5     7
_

ただし、sort(data)の出力は次のとおりです。

_-1     3
 1     4
 5     7
_

この行列を最初の列で並べ替えるにはどうすればよいですか?

45
Midhat

sortrows 関数があなたが探しているものだと思います。

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7
75
Kena

sortrows()の代替であり、より広範なシナリオに適用できます。

  1. 並べ替える行/列のソートインデックスを保存します。

    [~,idx]=sort(data(:,1));
    
  2. 前のソートされたインデックスに従ってすべての行/列を並べ替えます

    data=data(idx,:)
    
4
AlessioX