Matlab中的sort函数的用法学习笔记

Matlab中的sort函数的用法学习笔记

碎碎念:emmm,好久都没有写过blog了,7月份参加了一个电设比赛,很遗憾只有省三,之后就回家玩了玩。现在决心要好好学习天天向上一波了。

在MATLAB中,矩阵元素的排序使用函数sort( ),该函数默认按照升序排列,返回排序后的矩阵。

Y=sort(X):

该函数对矩阵按照升序进行排列。当X为向量时返回由小到大排序后的向量;当X为矩阵时,返回X中各列按照由小到大排序后的矩阵。

简单的说就是:按升序排列X的每一列。

Y=sort(X, DIM):

该函数返回在给定的维数上的按照由小到大的顺序排序后的结果,当DIM=1时,按照列进行排序当DIM=2时,按照行进行排序。

Y=sort(X, DIM, 'MODE' ): 

该函数可以指定排序的方式。参数MODE默认值为ascend',即按照升序进行排列;当MODE为'descend'时,对矩阵进行降序排列。

举几个栗子:

clear all;
A=[1 0 3;0 3 1;9 4 2]
B=sort(A)
C=sort(A,2)
D=sort(A,'descend')
E=sort(A,2,'descend')

A =

     1     0     3
     0     3     1
     9     4     2


B =

     0     0     1
     1     3     2
     9     4     3


C =

     0     1     3
     0     1     3
     2     4     9


D =

     9     4     3
     1     3     2
     0     0     1


E =

     3     1     0
     3     1     0
     9     4     2

 在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 =
     1     3     2
     7     6     5
     4     9     8

sortrows(data,1)
ans =
     1     3     2
     4     9     8
     7     6     5

sortrows(data,-1)
ans =
     7     6     5
     4     9     8
     1     3     2

猜你喜欢

转载自blog.csdn.net/jiayoudangdang/article/details/81588020