How can I number each element of a matrix according to the corresponding ordered position, row by row?

3 views (last 30 days)
For example, I have matrix A:
A = [9 15 1 16
15 9 1 16
1 6 2 4]
The sorted matrix is:
B= [1 9 15 16
1 9 15 16
1 2 4 6]
For each rows of A, I want to determine if each element corresponds to the first, second, third or fourth position, as follows:
A'= [2 3 1 4
3 2 1 4
1 4 2 3]
Thanks for help

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 8 Jan 2019
Edited: Andrei Bobrov on 8 Jan 2019
[~,ii] = sort(A,2);
[~,out] = sort(ii,2)

More Answers (1)

madhan ravi
madhan ravi on 8 Jan 2019
Edited: madhan ravi on 8 Jan 2019
Note: Your A' doesn't correspond to the exact position. See https://www.mathworks.com/help/matlab/ref/sort.html#bt8nojg-1-I
A = [9 15 1 16 ;...
15 9 1 16 ;...
1 6 2 4 ];
Adash = [2 3 1 4 ;...
3 2 1 4 ;...
1 4 2 3];
[B,I]=sort(A,2) % B - sorted matrix , I - position of the original values --> see doc sort for explanation
Gives:
B =
1 9 15 16
1 9 15 16
1 2 4 6
I =
3 1 2 4
3 2 1 4
1 3 4 2
To compare A' you could do somethig like below:
Adash==I
Gives:
ans =
3×4 logical array
0 0 0 1
1 1 1 1
1 0 0 0
  1 Comment
Daniela Conforti
Daniela Conforti on 8 Jan 2019
This is not what I want to achieve. I need the opposite corrispondence. If we have, for example, only the vector A= [9 15 1 16] the sorted vector is B= [1 9 15 16]; If we look at B, 9 is the second element, 15 is the third, 1 is the first and 16 is the forth. I want to obtain A' --> [2 3 1 4], but for all rows.

Sign in to comment.

Categories

Find more on Shifting and Sorting Matrices 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!