博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sort和sortrows对矩阵排序
阅读量:4286 次
发布时间:2019-05-27

本文共 1911 字,大约阅读时间需要 6 分钟。

 

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     7I =     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     6I =     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     9I =     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     6I =     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     8I =     3     2     1>> [Y,I]=sortrows(X,-2)Y =     8     9     4     3     8     4     1     6     1     0     6     0     2     4     9I =     1     3     2

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

转载仅作为笔记使用,如有侵权请联系。原文地址:

 
你可能感兴趣的文章
Ruby On Rails总结
查看>>
Oracle数据库中使用java实现存储过程
查看>>
【JDBC4.2】一、JDBC简介
查看>>
【JDBC4.2】二、获取Connection
查看>>
SpringJDBC中DataSource的实现
查看>>
【JDBC4.2】三、Statements
查看>>
【JDBC4.2】ResultSet
查看>>
【JDBC4.2】JDBC中的Exception
查看>>
【JDBC4.2】Wrapper和AutoCloseable
查看>>
【JDBC4.2】JDBC事务&JTA事务
查看>>
【JDBC连接池】Tomcat连接池v8.5.9官方文档翻译
查看>>
tomcat-jdbc Pool 源码实现简单分析
查看>>
Java中的强引用、软引用、弱引用和虚引用及其实例
查看>>
Ubuntu下rails开发环境搭建
查看>>
Linux学习笔记(收藏的文章)
查看>>
各种数据库分页及Java实现
查看>>
NamedParameterJdbcTemplate常用方法总结
查看>>
Spring JdbcTemplate中的回调
查看>>
Postgresql9.6中的数字和字符类型
查看>>
Java8总结之函数式编程
查看>>