[转载]MATLAB排序函数

2017-06-27  by:CAE仿真在线  来源:互联网

源自网络

============================================================

sort(A)若A是向量不管是列还是行向量,默认都是对A进行升序排列。sort(A)是默认的升序,而sort(A,'descend')是降序排序。
sort(A)若A是矩阵,默认对A的各列进行升序排列
sort(A,dim)
dim=1时等效sort(A)
dim=2时表示对A中的各行元素升序排列

看下面的例子

>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2

>> sort(A)
ans =
3 1 2
4 5 6
8 9 7

>> sort(A,1)
ans =
3 1 2
4 5 6
8 9 7

>> sort(A,2)
ans =
1 6 8
3 5 7
2 4 9

===================

Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用[sA,index] = sort(A),排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。

事实上,这里A≡sA(index),[A恒等于sA(index)],这个结论确实很奇妙,而且很有用。不信你排序之后试下键入命令sA(index),看看得到的是不是就是排列前的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逆序排列采用如下步骤:
  
  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 );

=======================

matlab按某一列排序,其他列不变办法

b=sortrows(a,2)%a 为要排序的矩阵。2表示按第几列进行排序,整数代表升序,负数代表降序。
%将矩阵a按照第2列的升序排列,其他列不会作升序排列,而是将跟随着第2列 的变化,保持一一对应。

b=sortrows(a,-3)
%将矩阵a按照第3列的降序排列,其他列将跟随着第3列 的变化,保持一一对应。

data =
132
765
498

sortrows(data,1)
ans =
132
498
765

sortrows(data,-1)
ans =
765
498
132


开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:[转载]MATLAB排序函数 MatLab培训 MatLab培训课程 MatLab在线视频教程 MatLab技术学习教程 MatLab软件教程 MatLab资料下载 MatLab代做 MatLab基础知识 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com