Sort Matrix by rows

17 vues (au cours des 30 derniers jours)
Ege
Ege le 23 Oct 2014
Modifié(e) : Guillaume le 23 Oct 2014
I have a matrix which first row indicates index numbers and second indicated the data. For example it goes like this:
1 2 3 4 5 6
23 45 10 90 11 34
I want to sort these descending but I don't want to loose the corresponding index either.
4 2 6 1 5 3
90 45 34 23 11 10
I have a large amount of data so it needs to be efficient too. How can I do that?

Réponse acceptée

Julia
Julia le 23 Oct 2014
Modifié(e) : Julia le 23 Oct 2014
Hi,
A =
1 2 3 4 5 6
23 45 10 90 11 34
>> A=A'
A =
1 23
2 45
3 10
4 90
5 11
6 34
>> B=sortrows(A,-2)
B =
4 90
2 45
6 34
1 23
5 11
3 10
>> B=B'
B =
4 2 6 1 5 3
90 45 34 23 11 10
Or short:
B=(sortrows(A',-2))'
B =
4 2 6 1 5 3
90 45 34 23 11 10

Plus de réponses (3)

Torsten
Torsten le 23 Oct 2014
B=(sortrows(A',-2))';
where A is your input matrix.
Best wishes
Torsten.

Geoff Hayes
Geoff Hayes le 23 Oct 2014
Ege - consider using sortrows to perform the above task
A = [1 2 3 4 5 6
23 45 10 90 11 34];
B = sortrows(A',-2)';
We transpose A so that we can sort on the second column. The negative indicates descending sort order. The result is then transposed to get the desired output as
B =
4 2 6 1 5 3
90 45 34 23 11 10

Guillaume
Guillaume le 23 Oct 2014
Modifié(e) : Guillaume le 23 Oct 2014
Transpose your matrix, use sortrows along the second column, transpose it back and flip it left to right to get descending order
m = [1 2 3 4 5 6
23 45 10 90 11 34];
fliplr(sortrows(m', 2)')

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!

Translated by