Sort Matrix by rows

16 Ansichten (letzte 30 Tage)
Ege
Ege am 23 Okt. 2014
Bearbeitet: Guillaume am 23 Okt. 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?

Akzeptierte Antwort

Julia
Julia am 23 Okt. 2014
Bearbeitet: Julia am 23 Okt. 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

Weitere Antworten (3)

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

Geoff Hayes
Geoff Hayes am 23 Okt. 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 am 23 Okt. 2014
Bearbeitet: Guillaume am 23 Okt. 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)')

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by