web-dev-qa-db-fra.com

Comment puis-je trier un tableau 2D dans MATLAB par rapport à une colonne?

Je voudrais trier une matrice en fonction d'une colonne particulière. Il existe une fonction sort, mais elle trie toutes les colonnes indépendamment.

Par exemple, si ma matrice data est:

 1     3
 5     7
-1     4

La sortie souhaitée (tri par première colonne) serait alors:

-1     4
 1     3
 5     7

Mais la sortie de sort(data) est:

-1     3
 1     4
 5     7

Comment puis-je trier cette matrice par la première colonne?

45
Midhat

Je pense que la fonction sortrows est ce que vous recherchez.

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7
75
Kena

Une alternative à sortrows(), qui peut être appliquée à des scénarios plus larges.

  1. enregistrez les indices de tri de la ligne/colonne que vous souhaitez commander par:

    [~,idx]=sort(data(:,1));
    
  2. réorganiser toutes les lignes/colonnes selon les indices triés précédents

    data=data(idx,:)
    
4
AlessioX