Replace the values of a matrix by another values.
Show older comments
i have a 3*3 matrix like [750 360 500 ; 550 520 780 ; 150 350 270] I want to replace these values in the matrix by comparing each row from the largest to small. (i.e largest =1 ,second largest=2 and smallest =3 ). Finally is should get a matrix like [1 3 2 ;2 3 1 ;3 1 2]
Accepted Answer
More Answers (1)
Star Strider
on 31 Jul 2018
This appears to do what you want:
A = [750 360 500 ; 550 520 780 ; 150 350 270];
[~,Idx] = sort(A,2,'descend'); % Sort Matrix Row-Wise, Descending, Return Indices
[~,Out] = sort(Idx,2) % Sort Indices Row-Wise, Ascending, Return Indices To Get Output
Out =
1 3 2
2 3 1
3 1 2
2 Comments
jonas
on 31 Jul 2018
+1
I figured there was a simpler solution...
Star Strider
on 31 Jul 2018
Thank you.
This took a bit of experimenting to discover. It is probably robust, although I did not test it with other matrices.
Categories
Find more on Data Preprocessing 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!