sortrows 在matlab中的用法

C =
1 2
2 1

用了sortrows(C)命令 结果为

ans =

1 2
2 1
请问为什么没有变化呢?不是应该每列升序排列吗?

以下是自己按照程序帮助写的,没有copy,希望能帮助到你。
sortrows有三种用法:
B = sortrows(A)
B = sortrows(A,column)
[B,index] = sortrows(A,...)

我们先创建一个矩阵
A=floor(gallery('uniformdata',[6 7],0)*100);
A(1:4,1)=95; A(5:6,1)=76; A(2:4,2)=7; A(3,3)=73
A =
95 45 92 41 13 1 84
95 7 73 89 20 74 52
95 7 73 5 19 44 20
95 7 40 35 60 93 67
76 61 93 81 27 46 83
76 79 91 0 19 41 1

默认依据第一列的数值按升序移动每一行,如果第一列的数值有相同的,依次往右比较。例:
B = sortrows(A)
B =
76 61 93 81 27 46 83
76 79 91 0 19 41 1
95 7 40 35 60 93 67
95 7 73 5 19 44 20
95 7 73 89 20 74 52
95 45 92 41 13 1 84

或是从某一列开始比较数值并按升序排序,例:
C = sortrows(A,2)
C =
95 7 73 89 20 74 52
95 7 73 5 19 44 20
95 7 40 35 60 93 67
95 45 92 41 13 1 84
76 61 93 81 27 46 83
76 79 91 0 19 41 1

亦可以从某一列开始以降序排列,例:
D = sortrows(A, -4)
D =
95 7 73 89 20 74 52
76 61 93 81 27 46 83
95 45 92 41 13 1 84
95 7 40 35 60 93 67
95 7 73 5 19 44 20
76 79 91 0 19 41 1

如果要求每一列都按照升序排列
E=sort(A)

如果要求每一列都按照降序排列
F=-sort(-A)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-28
SORTROWS Sort rows in ascending order.

它是按照行来做排序的

C =
2 2
2 1

就会变成

C =
2 1
2 2

它是把每一行当成一个数
譬如

0.4447 0.9218 0.4057
0.6154 0.7382 0.9355
0.7919 0.1763 0.9169

如果用sortrows排的话,它会把这个看成

444792184057
615473829355
791917639169

每一行中的一列相当于数的一位, 前面的权重大

如果需要每列升序排列,直接用sort即可
相似回答