您的位置:首页 > 编程语言 > MATLAB

matlab中的sort函数

2016-05-09 22:17 387 查看
在Matlab中排序某个向量(一维)时,可以使用sort(A),其中A为待排序的向量,如果仅是用来排序A,那么直接使用sort(A)即可, 如果排序后还需要保留原来的索引可以用返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保持不变,ind是B中每一项对应于A
中项的索引。排序是安升序进行的。

在Matlab中,访问矩阵中的元素,一维用A(1)访问向量A的第一个元素;(下标从1开始);二维用A(1,2)访问A中第一行,第二列的元素。

由于在sort函数的结果中,是安升序排序的,要转换成降序,先用X=eye(n)生成一个n维的单位阵,然后用X=rot90(X)将其旋转为次对角线的单位阵,再用原来矩阵乘以X即可,如要讲A逆序排列采用如下步骤:

X=eye(size(A));

X=rot90(X);

A=A*X;

复制代码

假如a是一个2*n的矩阵,即两行.

b=a(1,:);

[c,pos]=sort(b); %pos为排序后的下标,c为第一行的排序结果

a(2,:)=a(2,pos); %第二行按照第一行排序的下标对应

a(1,:)=c; %第一行结果重新赋给a 的第一行

复制代码

以下适用于m*n的矩阵按第一行排序

[ b, pos ] = sort( a( 1, : ) );

a = a( :, pos );

X=magic(5)

X =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

>> [a,b]=sort(X,2)

a =

1 8 15 17 24

5 7 14 16 23

4 6 13 20 22

3 10 12 19 21

2 9 11 18 25

b =

3 4 5 1 2

2 3 4 5 1

1 2 3 4 5

5 1 2 3 4

4 5 1 2 3

结果解释:

a是原来的矩阵x按照行,每行从小到大重新排列得到的新矩阵。

b告诉你重排的详细信息,也就是做了什么样的变动。

例如b的第一行显示3 4 5 1 2,那么将原矩阵X的第一行的第3 4 5 1 2个元素取出来,顺次排列,就变成a矩阵的第一行。

sort(X,2) 和sort(X,1)分别意思如下

x =

3 7 5

0 4 2

sort(x,2)

ans =

3 5 7

0 2 4

按行重新排列原来的矩阵,从小到大

sort(x,1)

ans =

0 4 2

3 7 5

按列重新排列原来的矩阵,从小到大
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: