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条)