How can I number each element of a matrix according to the corresponding ordered position, row by row?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Daniela Conforti
am 8 Jan. 2019
Bearbeitet: Daniela Conforti
am 8 Jan. 2019
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
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 8 Jan. 2019
Bearbeitet: Andrei Bobrov
am 8 Jan. 2019
[~,ii] = sort(A,2);
[~,out] = sort(ii,2)
1 Kommentar
Weitere Antworten (1)
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
Siehe auch
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!