开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜