Picking array elements based their values (largest, second largest,...)
1 view (last 30 days)
Show older comments
Hi community. I have the following code which I intended to use to pick numbers from a matrix from the matrix based on their value such that, I can pick the largest, second largest and so forth. My problem is this, the code seems to waork only for a matrix with unique elements. In situations where the matrix has some repeated elements, the code returns wrong results. To some extent, I know where the problem is, my code first sort the numbers and arrange them in ascending order, then it picks values based on their positions pointed by the subsequent lines after sorting but not values anymore which is undesirable for me. When the code below is executed, it picks 7, 7 and 6 instead of 7, 6, 5. How can I instruct the code to pick the values based on their values and not positions after sorting. So that if the desired value is repeated, the code only pick it once and ignores the rest. Because with a large matrix it is impossible to look and correctly define the positions of the values as have done below. Am using R2016a. Please help. Thanks in advance.
Y=[1 1 0 0 6 5 4 7 7]
[ii,ii] = sort(Y);
Largest=Y(ii([end]));
Second_largest = Y(ii([end-1]));
Third_largest=Y(ii([end-2]));
Accepted Answer
Arif Hoq
on 26 Jan 2023
Y=[1 1 0 0 6 5 4 7 7];
a=unique(Y);
[ii,ij] = sort(a,'descend');
Largest=ii(1)
second_largest=ii(1+1)
third_largest=ii(1+2)
0 Comments
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!