sort a matrix depending on first row

52 views (last 30 days)
Raviteja
Raviteja on 17 Sep 2011
Commented: Bruno Luong on 3 Aug 2020
I have a matrix B
>> B
B =
5.0000 1.0000 6.0000 3.0000
0.6076 0.4943 0.1097 0.4754
-0.1178 -1.4831 1.1287 1.1741
0.6992 -1.0203 -0.2900 0.1269
0.2696 -0.4470 1.2616 -0.6568
depending on the first rwo values I want to sort the data. i.e., my result should look like this
>>
ans=
1.0000 3.0000 5.0000 6.0000
0.4943 0.4754 0.6076 0.1097
-1.4831 1.1741 -0.1178 1.1287
-1.0203 0.1269 0.6992 -0.2900
-0.4470 -0.6568 0.2696 1.2616
How to do this?

Answers (2)

Andrei Bobrov
Andrei Bobrov on 17 Sep 2011
Edited: Stephen23 on 11 Apr 2019
out = sortrows(B.',1).'
variant
[~,inx]=sort(B(1,:));
out = B(:,inx);
  3 Comments
Barrett Durtschi
Barrett Durtschi on 3 Aug 2020
Thank you for this answer! What would I change in the statement if I wanted the first four row values?

Sign in to comment.


TAB
TAB on 17 Sep 2011
[mat inx]=sort(b(1,:));
SortedMat=[b(:,inx(1)),b(:,inx(2)),b(:,inx(3)),b(:,inx(4))];

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!