How to give ranking from highest to lowest
Show older comments
Hello, I have number like
Data=[5 6 9 1 5 2]
I want to rank them as: [3 2 1 6 4 5] Can any please help me How can I do this. Thanks in advance.
1 Comment
amrith sg
on 31 Mar 2022
i got a average accuracy 79% at rank 1
from rank 2 to rank 10 , i need to find different average accuracy that should be greater than 79%
please give me the code regarding this problem
Accepted Answer
More Answers (4)
Azzi Abdelmalek
on 6 Dec 2014
Edited: Azzi Abdelmalek
on 6 Dec 2014
Data=[5 6 9 1 5 2]
[sd,r]=sort(Data,'descend')
sd % sorted data
r % the corresponding indices
5 Comments
Mekala balaji
on 6 Dec 2014
Azzi Abdelmalek
on 6 Dec 2014
You said from the highest to the lowest:
sd = 9 6 5 5 2 1
r = 3 2 1 5 6 4
your result is false, because the fifth element is not the lowest
Roger Stafford
on 6 Dec 2014
@Azzi: The 'rank' is the inverse of the index vector that 'sort' returns. That is, in the requested 3 2 1 6 4 5, the 6 in position 4 indicates that the element in the 4th position of Data is of the 6th rank, the 5 in position 6 indicates that the 6th position in Data is of the 5th rank, etc. Thus the positions and ranks are reversed from sort's returned 2nd argument.
Azzi Abdelmalek
on 6 Dec 2014
Ok Roger, I understand now.
Azzi Abdelmalek
on 6 Dec 2014
We can get the result by sorting the indices resulting from the first sort
Data=[5 6 9 1 5 2]
[~,ii]=sort(Data,'Descend')
[~,r]=sort(ii)
Sandeep Sai Kiran
on 9 Feb 2021
Edited: Image Analyst
on 27 Jan 2024
Data =[4 8 9 4 7 4]
Kal = sort(Data , 'Descend')
Kapil =sort(Kal)
Zalán Kocsis
on 2 Jun 2021
Edited: Image Analyst
on 27 Jan 2024
Here's one that assigns the same rank to same values (ties):
Data=[5 6 9 1 5 2];
[C,~,ic] = unique(Data,'sorted'); % ic are ranks from lowest to highest ; C are unique values
r=(1+max(ic)-ic); % r: rank (highest receives 1; lowest receives length(C); tied values receive same rank)
[Data;r']
1 Comment
HB
on 19 Oct 2021
Thanks!
ASWIN
on 27 Jan 2024
Edited: Image Analyst
on 27 Jan 2024
A=ones(4);
m=length(A);
r=rank(A)
2 Comments
Dyuman Joshi
on 27 Jan 2024
Edited: Dyuman Joshi
on 27 Jan 2024
That rank() is different from what OP is asking about.
Image Analyst
on 27 Jan 2024
By "ranking" he really meant sorting. Your solution does not give the answer of [3 2 1 6 4 5] that he asked for.
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!