How can I sort a 2-D array in MATLAB with respect to 2nd row?
I have array say "a"
a =
 1     4     5
 6     7     2
if i use function b=sort(a)
gives ans
b =
 1     4     2
 6     7     5
but i want ans like
b =
 5     1     4
 2     6     7
mean 2nd row should be sorted but elements of ist row should remain unchanged and should be corresponden开发者_Go百科t to row 2nd.
sortrows(a',2)'
Pulling this apart:
a =  1     4     5
     6     7     2
a' = 1 6
     4 7
     5 2
sortrows(a',2) = 5 2
                 1 6
                 4 7
sortrows(a',2)' = 5 1 4
                  2 6 7
The key here is sortrows sorts by a specified row, all the others follow its order.
You can use the SORT function on just the second row, then use the index output to sort the whole array:
[junk,sortIndex] = sort(a(2,:));
b = a(:,sortIndex);
How about
a = [1 4 5; 6 7 2]
a =
     1     4     5
     6     7     2
>> [s,idx] = sort(a(2,:))
s =
     2     6     7
idx =
     3     1     2
>> b = a(:,idx)
b =
     5     1     4
     2     6     7
in other words, you use the second argument of sort to get the sort order you want, and then you apply it to the whole thing.
 加载中,请稍侯......
      
精彩评论