How to give ranking from highest to lowest

303 views (last 30 days)
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
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

Sign in to comment.

Accepted Answer

Roger Stafford
Roger Stafford on 6 Dec 2014
This should give you the rank you are asking for, Mekala:
[~,p] = sort(Data,'descend');
r = 1:length(Data);
r(p) = r;
'r' will be the ranking.
  1 Comment
Image Analyst
Image Analyst on 27 Jan 2024
Data=[5 6 9 1 5 2]
Data = 1×6
5 6 9 1 5 2
% I want to rank them as: [3 2 1 6 4 5]
[~,p] = sort(Data,'descend');
r = 1:length(Data);
r(p) = r
r = 1×6
3 2 1 6 4 5

Sign in to comment.

More Answers (4)

Azzi Abdelmalek
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
Azzi Abdelmalek
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)

Sign in to comment.


Sandeep Sai Kiran
Sandeep Sai Kiran on 9 Feb 2021
Edited: Image Analyst on 27 Jan 2024
Data =[4 8 9 4 7 4]
Data = 1×6
4 8 9 4 7 4
Kal = sort(Data , 'Descend')
Kal = 1×6
9 8 7 4 4 4
Kapil =sort(Kal)
Kapil = 1×6
4 4 4 7 8 9

Zalán Kocsis
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']
ans = 2×6
5 6 9 1 5 2 3 2 1 5 3 4

ASWIN
ASWIN on 27 Jan 2024
Edited: Image Analyst on 27 Jan 2024
This answer was flagged by Dyuman Joshi
A=ones(4);
m=length(A);
r=rank(A)
r = 1
  2 Comments
Dyuman Joshi
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
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.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!