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?

 Respuesta aceptada

Image Analyst
Image Analyst el 21 de En. de 2013

0 votos

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 comentario

Gokturk
Gokturk el 25 de En. de 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

Iniciar sesión para comentar.

Más respuestas (1)

TjeerdB
TjeerdB el 27 de Oct. de 2017

3 votos

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

Categorías

Etiquetas

Preguntada:

el 21 de En. de 2013

Respondida:

el 27 de Oct. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by