Obtain the sorted index vector

33 visualizaciones (últimos 30 días)
YAHYA AL-MOLIKI
YAHYA AL-MOLIKI el 4 de Mzo. de 2022
Comentada: YAHYA AL-MOLIKI el 4 de Mzo. de 2022
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.

Respuesta aceptada

Bruno Luong
Bruno Luong el 4 de Mzo. de 2022
Editada: Bruno Luong el 4 de Mzo. de 2022
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

Más respuestas (1)

Arif Hoq
Arif Hoq el 4 de Mzo. de 2022
Editada: Arif Hoq el 4 de Mzo. de 2022
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

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by