sort and assign ranking

29 visualizaciones (últimos 30 días)
Gokturk
Gokturk el 21 de En. de 2013
Respondida: TjeerdB el 27 de Oct. de 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?

Respuesta aceptada

Image Analyst
Image Analyst el 21 de En. de 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 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
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

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by