sorting in descending order by row

1 view (last 30 days)
arad rad
arad rad on 21 Aug 2018
Commented: Stephen23 on 22 Aug 2018
hi, i have a square matrix and i need to sort it in descending order in each row, i mean from left to right along columns for each row. all the functions like sort and sortrow are in ascending order or sort in descending order by column ! thank you
  2 Comments
Stephan
Stephan on 21 Aug 2018
If you need a good performance, then accept the answer given by Stephen Cobeldick:
A = rand(12000) - 0.5;
tic
B = sort(A,2,'descend'); % The way i did it
toc
tic
C = -sort(-A.').'; `% the way Stephen Cobeldick did
toc
with result:
>> sort_performance
Elapsed time is 3.725967 seconds.
Elapsed time is 2.971930 seconds.
and the winner is... ;-)
arad rad
arad rad on 22 Aug 2018
thanks it was really helpful

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 21 Aug 2018
Where M is your matrix:
>> M = randi(9,4)
M =
6 1 9 5
5 1 8 8
6 4 9 9
6 3 3 4
>> -sort(-M.').'
ans =
9 6 5 1
8 8 5 1
9 9 6 4
6 4 3 3
  2 Comments
Stephen23
Stephen23 on 22 Aug 2018
@arad rad: you should really use Stephan Jungs's answer.

Sign in to comment.

More Answers (1)

Stephan
Stephan on 21 Aug 2018
Hi,
use:
A =
10 -12 4 8
6 -9 8 0
2 3 11 -2
1 1 9 3
>> sort(A,2,'descend')
ans =
10 8 4 -12
8 6 0 -9
11 3 2 -2
9 3 1 1
to sort descending in row-direction.

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!