matlab sort() 升序降序

matlab sort() 升序降序


2024年3月13日发(作者:)

matlabsort()升序和降序

(2011-12-0518:46:17)

转载

标签:

杂谈

B=sort(A)%沿着输入参量A的不同维的方向、从小到大重新排列A中的元素。A可

以是字符串的、实数的、复数的单元数组。对于A中完全相同的元素,则按它们在A中的

先后位置排列在一块;若A为复数的,则按元素幅值的从小到大排列,若有幅值相同的复

数元素,则再按它们在区间[-π,π]的幅角从小到大排列;若A中有元素为NaN,则将

它们排到最后。若A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进

行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素像向量一样进行处理。

B=sort(A,dim)%沿着矩阵A中指定维数dim方向重新排列A中的元素。

[B,IX]=sort(A);%其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素

相对应的置换位置记号。

在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逆序排列采用如下步骤:

1.X=eye(size(A));

2.X=rot90(X);

3.A=A*X;

上述降序办法不好。

简单好用的是:A=-sortrows(-A',第几行);A=A';

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

1.b=a(1,:);

2.[c,pos]=sort(b);

3.a(2,:)=a(2,pos);

4.a(1,:)=c;

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

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

a=a(:,pos);

X=magic(5)

X=

%pos为排序后的下标,c为第一行的排序结果

%第二行按照第一行排序的下标对应

%第一行结果重新赋给a的第一行

17241815

23571416

46132022

101219213

11182529

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

a=

18151724

57141623

46132022

310121921

29111825

b=

34512

23451

12345

51234

45123

结果解释:

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

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

例如b的第一行显示34512,那么将原矩阵X的第一行的第34512个元素取出来,

顺次排列,就变成a矩阵的第一行。

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

举例:A=[335

042];

sort(A,1)%纵向排列

ans=

0

34

sort(A,2)%横向排列

ans=

3

02

3

4

5

3

5

2


发布者:admin,转转请注明出处:http://www.yc00.com/news/1710304595a1734127.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信