• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab排序之sort()函数和sortrows()函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

sortrows()函数的格式:

sortrows(A,column)

A是一个矩阵,如果没有第二个参数column,则默认按照第一列升序排列,如果遇到重复数字,则按照第二列升序排列,依次类推。。。

如果存在第二个参数column,则按照指定的列排序,当指定的列有重复元素的时候,则重复元素所在的行保持原来的顺序,且不按第二列排序。

举例:

A =[82 42 51;

      9 47 79;
    37 47 29;
    37 55 56;
    42 54 58]

sortrows(A)的结果:

ans =

9 47 79
37 47 29
37 55 56
42 54 58
82 42 51

 

sortrows(A,2)的结果:

ans =

82 42 51
9 47 79
37 47 29
42 54 58
37 55 56

 



 

 

sort和sortrows对矩阵排序

sort函数排序

在处理问题时,排序是一个非常常见的需求。sort函数是Matlab内置的排序函数,可以满足常用的排序需求。sort函数的基本形式如下

[Y,I] = sort(X,DIM,MODE)
  • Y表示对X排序后的结果
  • I 表示Y中对应元素原来在X中的下标

  • mode的默认值是‘ascend’升序排列,‘descend’为降序排列

  • DIM的默认值是1,如果X是矩阵,则默认对矩阵的各个列进行升序排列,即sort(X,1)与sort(X)等效(矩阵在matlab中是按列存储的)
  • sort(X,2)表示对矩阵的各行中的元素按照升序排列
  • 如果X是行向量,则Y与I也是行向量;如果X是列向量,则Y与I也是列向量,如果X是矩阵,则Y与I是与X维数相同的矩阵
    -由于在排序的时候保留了数据在原数组的下标信息,所以排序是可逆的。如果[Y,I] = sort(X,DIM,MODE)X是排序前的向量,Y是排序后的向量,I是下标的索引,则X=Y(I),可以还原原来的向量。

DEMO1

>> X = fix(rand(1,5)*10)

X =

     7     1     4     6     4

>> [Y,I] = sort(X)

Y =

     1     4     4     6     7


I =

     2     3     5     4     1

>> X = fix(rand(5,1)*10)

X =

     4
     6
     0
     0
     0

>> [Y,I] = sort(X)

Y =

     0
     0
     0
     4
     6


I =

     3
     4
     5
     1
     2

>> X = fix(rand(3,5)*10)

X =

     8     9     4     3     8
     6     0     2     4     9
     4     1     6     1     0

>> [Y,I] = sort(X)

Y =

     4     0     2     1     0
     6     1     4     3     8
     8     9     6     4     9


I =

     3     2     2     3     3
     2     3     1     1     1
     1     1     3     2     2

>> [Y,I] = sort(X,2)

Y =

     3     4     8     8     9
     0     2     4     6     9
     0     1     1     4     6


I =

     4     3     1     5     2
     2     3     4     1     5
     5     2     4     1     3

sortrows函数

[Y,I]=sortrows(X,Colnum)
  • sortrows函数可以使用矩阵的某列值的大小对矩阵行进行排序,就像excel 中按照某列排序并扩展选定区域一样。
  • X是待排序的矩阵
  • Colnum 是列的序号,指定按照第几列进行排序,正数表示按照升序进行排序,负数表示按照降序进行排序
  • Y是排序后的矩阵
  • I 排序后的行在之前矩阵中的行标

Demo2

>> X = fix(rand(3,5)*10)

X =

     8     9     4     3     8
     6     0     2     4     9
     4     1     6     1     0

>> [Y,I]=sortrows(X,1)

Y =

     4     1     6     1     0
     6     0     2     4     9
     8     9     4     3     8


I =

     3
     2
     1

>> [Y,I]=sortrows(X,-2)

Y =

     8     9     4     3     8
     4     1     6     1     0
     6     0     2     4     9


I =

     1
     3
     2

注:对矩阵行的排序排序方法都可以用在矩阵列的排序中,因为矩阵有个转置运算,行列式可以互换的,可以将对列的运算转化成对行的运算

 http://blog.csdn.net/liuweiyuxiang/article/details/78036572?utm_source=blogxgwz0


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab之fliplr()函数发布时间:2022-07-18
下一篇:
.net C# inputBox文字输入对话框,类似delphi的inputBox发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap