sort函数,sortrows函数【Matlab】

1、sort函数

sort函数用于对矩阵元素按升序或者降序进行排序,其调用语法如下。

(1)B=sort(A):对A进行默认的升序排序。输入参量A可以是向量、矩阵或字符串,若为向量,则对向量中的所有元素进行排序;若为矩阵,则对列方向各元素进行排序;若为字符串,则按其对应的ASCII码的大小进行排序。

(2)B=sort(A,dim):对矩阵A中的第dim维进行升序排序。

(3)B = sort(...,mode):按照指定升序或降序进行排序。mode可以是'ascend'(默认,升序),或者是'descend'(降序)。

(4)[B,IX] = sort(A,...):对A进行排序,并返回排序后各元素的下标值。

【例4-20】  sort函数使用示例。

>>  A = [ 3 7 5;0 4 2 ]

A =

     3     7     5

     0     4     2

>> sort(A,1)                %  列方向排序

ans =

     0     4     2

     3     7     5

>> sort(A,2)                %  行方向排序

ans =

     3     5     7

     0     2     4

>> sort(A,2,'descend')      %  行方向降序排序

ans =

     7     5     3

     4     2     0

>> [B,IX] = sort(A,2)      %  排序并返回下标

B =

     3     5     7

     0     2     4

IX =

     1     3     2

     1     3     2

>> B=reshape(18:-1:1,3,3,2)  %  创建高维矩阵

B(:,:,1) =

    18    15    12

    17    14    11

    16    13    10

B(:,:,2) =

     9     6     3

     8     5     2

     7     4     1

>> sort(B,1)              %  列方向排序

ans(:,:,1) =

    16    13    10

    17    14    11

    18    15    12

ans(:,:,2) =

     7     4     1

     8     5     2

     9     6     3

>> sort(B,2)             %  行方向排序

ans(:,:,1) =

    12    15    18

    11    14    17

    10    13    16

ans(:,:,2) =

     3     6     9

     2     5     8

     1     4     7

>> sort(B,3)           %  页方向排序

ans(:,:,1) =

     9     6     3

     8     5     2

     7     4     1

ans(:,:,2) =

    18    15    12

    17    14    11

    16    13    10

2.sortrows函数

sortrows函数用于在保持各行相对元素不变的情况下,对各行整体进行升序排列。sortrows函数调用语法如下。

(1)B = sortrows(A):按行对A进行升序排列。输入变量A必须是矩阵或者列向量。

(2)B = sortrows(A,column):基于向量column指定的列对矩阵A进行排序。

(3)[B,index] = sortrows(A,...):在对矩阵A进行排序的同时,返回下标索引。如果A是一个列向量,则B = A(index);如果A是一个m×n的矩阵,则B = A(index,:)。

【例4-21】  sortrows函数使用示例。

>> rand('state',0)                    %  设定随机数种子,以便于读者验证

>> A = floor(rand(6,7) * 100);     %  创建测试矩阵,floor函数用于取整,以便于观察

>> A(1:4,1)=95;  A(5:6,1)=76;  

>> A(2:4,2)=7;  A(3,3)=73       %   修改部分数据,以体现函数用法

A =

    95    45    92    41    13     1    84

    95     7    73    89    20    74    52

    95     7    73     5    19    44    20

    95     7    40    35    60    93    67

    76    61    93    81    27    46    83

    76    79    91     0    19    41     1

>> B = sortrows(A)            %  按照第1列元素大小对矩阵A进行排序

B =

    76    61    93    81    27    46    83

    76    79    91     0    19    41     1

    95     7    40    35    60    93    67

    95     7    73     5    19    44    20

    95     7    73    89    20    74    52

    95    45    92    41    13     1    84

通过比较可以看到,矩阵A中第1列具有相等的元素。sortrows函数在进行排序操作时,如果指定列中存在相等元素,则通过比较指定列右侧列中的元素来进行排序,右侧列中若还有相等元素,则按照右侧再下一列的元素进行排序。

>> C = sortrows(A,2)          %  按照第2列的大小进行排序

C =

    95     7    73    89    20    74    52

    95     7    73     5    19    44    20

    95     7    40    35    60    93    67

    95    45    92    41    13     1    84

    76    61    93    81    27    46    83

    76    79    91     0    19    41     1

>> D = sortrows(A,[1 7])      %  按照第1列和第7列进行排序,首先按照第1列进行排序,如果第1列中存在相等元素,则按照第7列进行排序。

D =

    76    79    91     0    19    41     1

    76    61    93    81    27    46    83

    95     7    73     5    19    44    20

    95     7    73    89    20    74    52

    95     7    40    35    60    93    67

    95    45    92    41    13     1    84

>> E = sortrows(A,[1 -7])       %  按照第1列和第7列进行排序,[1 -7]中的负号的含义是按照降序排序。

E =

    76    61    93    81    27    46    83

    76    79    91     0    19    41     1

    95    45    92    41    13     1    84

    95     7    40    35    60    93    67

    95     7    73    89    20    74    52

    95     7    73     5    19    44    20

 

>> F = sortrows(A, -4)  %  按照第4列进行降序排序

F =

    95     7    73    89    20    74    52

    76    61    93    81    27    46    83

    95    45    92    41    13     1    84

    95     7    40    35    60    93    67

    95     7    73     5    19    44    20

    76    79    91     0    19    41     1

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值