2013-10-04 5 views
1

Ma situation est la suivante:Comment trier une matrice en utilisant des valeurs dans un autre vecteur dans matlab?

Je reçois une matrice 1000 * 2 et un vecteur 1000 * 1.

Et la ligne i dans la matrice est mappée à l'élément i dans le vecteur.

Et les éléments dans le vecteur sont tous entiers.

Maintenant je veux trier les éléments dans le vecteur de bas en haut.

Et je veux obtenir une nouvelle matrice avec la séquence du nouveau vecteur. Et les relations de mappage sont égales à la situation d'origine.

Comment faire cela dans Matlab?

Merci!

Répondre

4

Utilisation sortrows:

d'abord concat votre vecteur à votre matrice:

M2 = [V, M]; 

Puis trier les lignes:

M2 = sortrows(M2); %// You should just do sortrows([V, M]) here, I just split it for the explanation 

ensuite Fractionner le vecteur et la matrice:

V_sorted = M2(:,1); 
M_sorted = M2(:, 2:end); 

Ou bien vous pouvez utiliser la deuxième sortie de sort:

[V_sorted, newRowOrder] = sort(V); 
M_sorted = M(newRowOrder, :); 
+0

Une explication très claire! – Jane

Questions connexes