How to sort a matrix based on two columns
37 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Assume matrix A as follows:
A = [
1 1 20
1 2 32
1 3 10
2 1 45
2 2 10
2 3 15
3 1 43
3 2 90
];
I want to sort matrix A based on the third column. However, I want to keep the first column also sorted. Whenever the ID changed, then column 3 is sorted. The output should be something likes:
B = [
1 3 10
1 1 20
1 2 32
2 2 10
2 3 15
2 1 45
3 1 43
3 2 90
];
1 commentaire
Stephen23
le 22 Mai 2017
@Zhan: you keep asking questions, but you have not accepted any of the answers to any of your questions. Accepting answers shows which answer solved your question, and is also an easy way for you to say "thank you" for our volunteer effort helping you.
Réponse acceptée
dpb
le 21 Mai 2017
>> sortrows(A,[1 3 2]) % doc sortrows for details...
ans =
1 3 10
1 1 20
1 2 32
2 2 10
2 3 15
2 1 45
3 1 43
3 2 90
>>
3 commentaires
dpb
le 23 Déc 2020
>> help sortrows
sortrows Sort rows of a matrix.
B = sortrows(A) sorts the rows of matrix A in ascending order as a
group. B has the same size and type as A. A must be a 2-D matrix.
B = sortrows(A,COL) sorts the matrix according to the columns specified
by the vector COL. If an element of COL is positive, the corresponding
column in A is sorted in ascending order; if an element of COL is
negative, the corresponding column in A is sorted in descending order.
For example, sortrows(A,[2 -3]) first sorts the rows in ascending order
according to column 2; then, rows with equal entries in column 2 get
sorted in descending order according to column 3.
...
So,
sortrows(A,[1 3 2]) % doc sortrows for details...
sorts A in ascending order by column order of first, third, second. This can be seen to be so by inspection of the output.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!