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

3 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 8 Jan. 2019
Bearbeitet: Andrei Bobrov am 8 Jan. 2019
[~,ii] = sort(A,2);
[~,out] = sort(ii,2)

Weitere Antworten (1)

madhan ravi
madhan ravi am 8 Jan. 2019
Bearbeitet: madhan ravi am 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 Kommentar
Daniela Conforti
Daniela Conforti am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by