How to give ranking from highest to lowest

301 Ansichten (letzte 30 Tage)
Mekala balaji
Mekala balaji am 6 Dez. 2014
Kommentiert: Image Analyst am 27 Jan. 2024
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 Kommentar
amrith sg
amrith sg am 31 Mär. 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Roger Stafford
Roger Stafford am 6 Dez. 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 Kommentar
Image Analyst
Image Analyst am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (4)

Azzi Abdelmalek
Azzi Abdelmalek am 6 Dez. 2014
Bearbeitet: Azzi Abdelmalek am 6 Dez. 2014
Data=[5 6 9 1 5 2]
[sd,r]=sort(Data,'descend')
sd % sorted data
r % the corresponding indices
  5 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 6 Dez. 2014
Ok Roger, I understand now.
Azzi Abdelmalek
Azzi Abdelmalek am 6 Dez. 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)

Melden Sie sich an, um zu kommentieren.


Sandeep Sai Kiran
Sandeep Sai Kiran am 9 Feb. 2021
Bearbeitet: Image Analyst am 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 am 2 Jun. 2021
Bearbeitet: Image Analyst am 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 am 27 Jan. 2024
Bearbeitet: Image Analyst am 27 Jan. 2024
Diese(r) Antwort wurde durch Dyuman Joshi markiert
A=ones(4);
m=length(A);
r=rank(A)
r = 1
  2 Kommentare
Dyuman Joshi
Dyuman Joshi am 27 Jan. 2024
Bearbeitet: Dyuman Joshi am 27 Jan. 2024
That rank() is different from what OP is asking about.
Image Analyst
Image Analyst am 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.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by