vektor - Wie kann ich ein 2-D-Array in MATLAB in Bezug auf eine Spalte sortieren?




sort matrix r (2)

Ich möchte eine Matrix nach einer bestimmten Spalte sortieren. Es gibt eine sort , aber es sortiert alle Spalten unabhängig voneinander.

Zum Beispiel, wenn meine Matrixdaten sind:

 1     3
 5     7
-1     4

Dann wäre die gewünschte Ausgabe (Sortierung nach der ersten Spalte):

-1     4
 1     3
 5     7

Aber die Ausgabe von sort(data) ist:

-1     3
 1     4
 5     7

Wie kann ich diese Matrix nach der ersten Spalte sortieren?


Eine Alternative zu sortrows() , die auf breitere Szenarien angewendet werden kann.

  1. Speichern Sie die Sortierindizes der Zeile / Spalte, die Sie bestellen möchten:

    [~,idx]=sort(data(:,1));
    
  2. Ordnen Sie alle Zeilen / Spalten entsprechend den vorherigen sortierten Indizes neu an

    data=data(idx,:)
    

Ich denke die sortrows Funktion ist, was Sie suchen.

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7




octave