# Ranking values - sorting into descending order

4 views (last 30 days)
david crowley on 24 Jul 2021
Answered: Max Heiken on 24 Jul 2021
I have a that for each row (i) ranks the column values. However, it ranks them in the ascending order. I require it to be ranked in descending order. Can anyone help with modifying the below code block to descending order?
for i = 1:height(d)
[temp, ranked] = ismember(X(i,:),unique(X(i,:)));
rnkR1List(i,:) = ranked;
end

Max Heiken on 24 Jul 2021
If you do not expect there to be duplicates, I too recommend to use sort instead.
[~, rnkR1List] = sort(X, 2, 'descend');
If you absolutely need identical values to have the same ranks, then you could extend your own code by just inverting the ranks:
for i = 1:height(d)
[temp, ranked] = ismember(X(i,:),unique(X(i,:)));
rnkR1List(i,:) = ranked;
end
max(rnkR1List, [], 2) - rnkR1List + 1;

Yazan on 24 Jul 2021
Just use the Matlab function sort without any looping. See an example below.
X = randn(10, 10);
Xranked = sort(X, 2, 'descend');

R2020b

### Community Treasure Hunt

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

Start Hunting!