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

StackOverflow https://stackoverflow.com/questions/134712

  •  02-07-2019
  •  | 
  •  

質問

特定の列に従って行列を並べ替えたいと考えています。があります sort 関数ですが、すべての列を個別にソートします。

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

 1     3
 5     7
-1     4

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

-1     4
 1     3
 5     7

しかし、の出力は sort(data) は:

-1     3
 1     4
 5     7

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

役に立ちましたか?

解決

私は思います 並べ替え 関数はあなたが探しているものです。

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7

他のヒント

の代替案 sortrows(), 、より幅広いシナリオに適用できます。

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

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

    data=data(idx,:)
    
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top