# How do we sort scalar value in ranks?

조회 수: 4(최근 30일)
Mira le 2021년 5월 2일
답변: Sanman 2021년 5월 25일
Hello everyone, I have struct R bellow, I sort these sequence in ascending order according to Weights values, Now I want to rank them, if weights values are the same so I put them in the same rank and have the same value:
R:
sequence Cost Weights Rank
1x197 double [4;0;0;184] 188 1
1x197 double [4;0;0;189] 193 1
1x197 double [4;0;0;189] 193 1
1x197 double [4;0;0;190] 194 1
1x197 double [4;0;0;191] 195 1
1x197 double [4;0;0;192] 196 1
1x197 double [4;0;0;192] 196 1
The result that I want to obtain is this
sequence Cost Weights Rank
1x197 double [4;0;0;184] 188 1
1x197 double [4;0;0;189] 193 2
1x197 double [4;0;0;189] 193 2
1x197 double [4;0;0;190] 194 3
1x197 double [4;0;0;191] 195 4
1x197 double [4;0;0;192] 196 5
1x197 double [4;0;0;192] 196 5
Thank you

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

### 채택된 답변

Sanman 2021년 5월 25일
Hi Mira,
Since you already have your structure field “weights” sorted, you can make use of “unique” function here. MATLAB function “unique” returns unique values in array, along with the rank as well.
The following command should return the rank of the weights as you expect.
>> [~,~,rank] = unique(R.Weights)
You can also refer to this documentation page for further reference.
https://www.mathworks.com/help/matlab/ref/double.unique.html

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

### 범주

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

R2017a

### Community Treasure Hunt

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

Start Hunting!

Translated by