45 votes

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

Je voudrais trier une matrice selon une colonne particulière. Il existe une fonction sort, mais elle trie toutes les colonnes de manière indépendante.

Par exemple, si ma matrice data est :

 1     3
 5     7
-1     4

Alors le résultat désiré (tri par la première colonne) serait :

-1     4
 1     3
 5     7

Mais le résultat de sort(data) est :

-1     3
 1     4
 5     7

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

75voto

Kena Points 5046

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

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7

6voto

AlessioX Points 2615

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

  1. enregistrer les indices de tri de la ligne/colonne que vous souhaitez ordonner :

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

    data=data(idx,:)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X