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?

 채택된 답변

Image Analyst
Image Analyst 2013년 1월 21일

0 개 추천

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

Gokturk
Gokturk 2013년 1월 25일
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

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

TjeerdB
TjeerdB 2017년 10월 27일

3 개 추천

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

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

질문:

2013년 1월 21일

답변:

2017년 10월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by