sort and assign ranking

29 visualizzazioni (ultimi 30 giorni)
Gokturk
Gokturk il 21 Gen 2013
Risposto: TjeerdB il 27 Ott 2017
Hi I need to sort a vector and assign a ranking for the corresponding sorting order. I'm using sort function [sortedValue_X , X_Ranked] = sort(X,'descend'); but the problem is it assignes different ranks for the same values (zeros). ie x = [ 13 15 5 5 0 0 0 1 0 3] and i want zeros to take the same last rank which is 6 and fives needs to share the 3rd rank etc.. any suggestions?

Risposta accettata

Image Analyst
Image Analyst il 21 Gen 2013
You can use the third return argument of unique(): Try this:
X = [ 13 15 5 5 0 0 0 1 0 3]
[sortedValue_X , X_Ranked] = sort(X,'descend')
[uniqueValues, ia, ic]=unique(sortedValue_X)
X_Ranked = max(ic)-ic+1 % <- there's your answer!
In command window:
X_Ranked =
1 2 3 3 4 5 6 6 6 6
  1 Commento
Gokturk
Gokturk il 25 Gen 2013
Hi, I do have a small but an important issue, X_ranked vector gives sorted values, points should be in their places, X_Ranked should be [1 2 3 3 6 6 6 5 6 4] can you pls help on this? many thanks

Accedi per commentare.

Più risposte (1)

TjeerdB
TjeerdB il 27 Ott 2017
X = [13 15 5 5 0 0 0 1 0 3];
[temp,X_ranked] = ismember(X,unique(X))
In command window:
X_ranked =
5 6 4 4 1 1 1 2 1 3

Categorie

Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by