开发者

How can I sort a 2-D array in MATLAB with respect to 2nd row?

开发者 https://www.devze.com 2023-01-11 07:48 出处:网络
I have array say \"a\" a = 145 672 if i use function b=sort(a) gives ans b = 142 675 but i want ans like b =

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

精彩评论

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