Obtain the sorted index vector

Suppose a vector with element. in Matlab, I can use the following code to sort the vector in descending order as follow:
y=sort(x,'descend'), for example, x=[0.5; 0.4; 0.6; 0.9], then y=[0.9; 0.6; 0.5; 0.4].
I need to Obtain the sorted index vector. Here it will be z=[4; 3; 1; 2]
I need to find z for any arbitrary sorted vector.

 Accepted Answer

Use the second output of sort
x=[0.5; 0.4; 0.6; 0.9]
x = 4×1
0.5000 0.4000 0.6000 0.9000
[y,z] = sort(x,'descend')
y = 4×1
0.9000 0.6000 0.5000 0.4000
z = 4×1
4 3 1 2

More Answers (1)

x=[0.5; 0.4; 0.6; 0.9];
y=sort(x,'descend');
[Lia,Locb] = ismember(y,x);
z=Locb'
z = 1×4
4 3 1 2
% if want as a column vector
out=Locb(:)
out = 4×1
4 3 1 2

Categories

Community Treasure Hunt

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

Start Hunting!