help文档中第一句就说明,可以用sort将参量中的元素按升序或降序排列~

格式:

B = sort(A) %沿着输入参量

A的不同维的方向、从小到大重新排列 A中的元素。A 可以是字符串的、实数的、复数的单元数组。对于 A 中完全相同的元素,则按它们在 A

中的先后位置排列在一块;若 A 为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间[-π ,π

]的幅角从小到大排列;若 A 中有元素为NaN,则将它们排到最后。若

A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素像向量一样进行处理。

B=sort(A,dim) %沿着矩阵A中指定维数dim方向重新排列A中的元素。

[B,IX]=sort(A);

%其中IX是一个大小等于size(A)的数组,其每一列是A中列向量的元素相对应的置换位置记号。

举例:A = [ 3 3 5

0 4 2 ];

sort(A,1) %纵向排列

ans =

0 3 2

3 4 5

sort(A,2) %横向排列

ans =

3 3 5

0 2 4

>>A = [-1.9, -0.2, 3.1415926, 5.6,

7.0, 2.4+3.6i];

>>[B1,INDEX] = sort(A)

计算结果为:

B1 =

Columns 1 through 4

-0.2000 -1.9000 3.1416 2.4000 + 3.6000i

Columns 5 through 6

5.6000 7.0000

INDEX

=

2 1 3 6 4 5

由此可知,如果A与另一个矩阵C(char或cell)一一对应,如果用[B1,INDEX] =

sort(A)对A进行排序,则可以取得索引INDEX,进而可以查询B1中每个元素与C中哪一个对应。

-----------------------------------------------------------------------------

Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用

[sA,index] = sort(A)

,排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。

有久没有用Matlab都忘了。。。。。

事实上,这里A

≡sA(index) ,

[A恒等于sA(index)],这个结论确实很奇妙,而且很有用。不信你排序之后试下键入命令sA(index)

,看看得到的是不是就是排列前的A呢。[因为鸿1018问到这个问题,特此补写这一段] 2008-10-20 13:18

+

对于一般矩阵An*m(n,m均大于等于2),只要修正一下index的值,结论sA(index) ≡ A仍然成立,修正代码如下:s=size(A);

for k=1:s(2)

index(:,k)=index(:,k)+(k-1)*s(1);

end

-----------------------------------------------------------------------------------

在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 );

------------------------------------------------

主要是前一篇在实现几种编码的时候遇到了好些问题。

1.元胞数组

因为要生成各个符号的码字,他们的长度都不一样,

没法用一般的矩阵来存。

c = cell(5,2)

c{1,1} = 1

反正用cell创建,用{}引用就是了。

另外,把若干字符串连接成一个元胞数组:

strvcat('Hello','Yes')

(特别鸣谢yhsa678同学的指点)

2.for循环

matlab的for让人觉得很不爽。

c:

for ( i = 1 ; i <= n ; i ++ ){...}

vb:

for i = 1 to n

...

next i

pascal:

for i := 1 to n begin

...

end

以上的东西执行完后,i的值都是n+1

但是,matlab的for i = 1:n完了之后!

i == n

。。。这在平时真的没啥。。但在有的时候,就要增加点编码了,很烦。

比如这个例子:

我们要寻找数组中有没有0。有0就干什么事,没有就干什么事。

x = [1 3 2] ;

for i = 1:3

if x(i) ==

0

break ;

end

end

这个完了之后,如果i==3,

那么你就无法确定是因为3好元素是0,break掉的。

还是循环执行完了,i停在3的。

所以相比前几种语言来说,这个设计实在是不爽。。

只有多加点东西:

x = [1 3 2] ;

has0 = 0 ;

for i = 1:3

if x(i) ==

0

has0 = 1

break ;

end

end

if has0

..

else

..

end

3.sort

第一个就是,sort是从小到大,那么从大到小就有点囧了。

可以用逆置数组的办法来完成:

p = sort(p)

p = fliplr(p)

这下就是从大到小了。

fliplr是左右逆置。

还有个flipud是上下逆置。

第二个就是,sort的返回值确实很有用处,当年还不会matlab的时候在这里看到过。

今天做编码的时候,有两个要先从大到小排序再处理。

但是处理完之后交回调用者的码字应该是按照原顺序排的。

这个时候,就好利用sort的返回值了。

>> x = [ 3 1 2]

x =

3 1 2

>> [y i] = sort(x)

y =

1 2 3

i =

2 3 1

执行完后,有这个关系:y = x(i)

比如,调用这要求得到的c是对应于以前的x的。

但我们处理的时候,是基于排序后的y的。那么这时得到的c。应该做个处理:

c(i) = c ;

这下就OK了。

------------------------------------------------------

matlab矩阵排序sort,Matlab 用sort函数排序相关推荐

  1. MATLAB矩阵乘法、MATLAB矩阵的转置、MATLAB串联矩阵

    MATLAB矩阵乘法 MATLAB中如果有两个矩阵 A 和 B ,其中 A 是 m*n 矩阵,B 是 n*p 矩阵,那么他们相乘能够产生一个 m*p 的矩阵 C. MATLAB矩阵乘法只发生在矩阵 A ...

  2. matlab矩阵 代表什么,matlab中矩阵AB是什么意思

    Q1:matlab矩阵中的'代表什么意思 A(1)是指矩阵中的第一个元素. matlab中矩阵的排列是按照从上往下,从左往右的: 比如说,一列数,给转化为矩阵,排列如下: >> a=1:1 ...

  3. matlab 矩阵旋转变换矩阵,matlab 矩阵与线性变换与计算.ppt

    matlab 矩阵与线性变换与计算 第五章:矩阵与线性变换 1 有限维空间的线性变换是简单而常用的数学变换,其实现可以归结为矩阵运算 y=Ax 刚体的运动,物体的线性变形,光线的反射等,都可以归结为线 ...

  4. matlab矩阵变成行向量,matlab中将一个矩阵按照行拼成一个行向量应该怎么输?

    %by dynamic %see also http://www.matlabsky.com %contact me matlabsky@gmail.com %2009.2. % 按行优先排列成行向量 ...

  5. matlab 矩阵 幂运算符,matlab矩阵的乘方power运算

    matlab顾名思义为"矩阵实验室",其矩阵计算功能非常强大.对于不同性质矩阵的乘方运算,处理方式也不同. 实例 条件:在a^p 中a, p不可都是矩阵,必须一个是标量,一个是方阵 ...

  6. matlab 矩阵3d显示,Matlab 3D视图矩阵

    让A是MATLAB的4×4视图矩阵,从视图函数获得: A = view; A(1:3,1:3)应对应于旋转和缩放, A(1:3,4)应对应翻译, A(4,:)应该是[0 0 0 1]. 将相机参数设置 ...

  7. matlab 矩阵角标,MATLAB中的矩阵索引

    MATLAB中的矩阵索引 作者:SteveEddins and Loren Shure   译:王茂春 利用矩阵的索引取出原矩阵的子集元素是一种有效的方式.MATLAB的多种索引类型不仅强大.灵活,而 ...

  8. matlab矩阵行列向量化,matlab矩阵向量化

    MATLAB自问世以来,就是以数 值计算称雄.MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使 的MATLAB高度"向量化".由于它不需定义数组的维数,并给出矩阵.. ...

  9. matlab 矩阵维度受限,matlab中变量问题——readonly 索引超出矩阵维度 workspacefunc 215...

    matlab程序运行过程中会出现如上提示,在网上检索未果,键入dbstop if error语句也无法定错误之处,就想这个错误不是一般的错误. 通过间隔打断点的方式最后定位错误为一句exist = f ...

  10. matlab 矩阵大小变换,matlab 矩阵变换

    matlab 矩阵变换 对角阵 –diag() 三角阵----triu(),tril() 矩阵的转置 -' 矩阵的旋转 rot90() 矩阵的翻转 –fliplr() –flipud() 矩阵求逆 – ...

最新文章

  1. matplotlib 子图超过4个_走进Matplotlib世界(四)
  2. 那么都数据库表,那么多不同记录。是怎样都存储在一个key-value数据库的?
  3. React 头像插件 react-avatar-editor 的使用
  4. 郁金香2013网授汇编逆向与外挂 [ 91课,全 ]
  5. 【转】C++ vector的reserve和resize详解
  6. 电脑 你离我有多远!
  7. 【es】Elasticsearch:inverted index,doc_values及source
  8. 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)——ubuntu环境设置默认是utf-8,文件编码可使用Encodersoft批量转换
  9. 基类成员函数和派生类成员函数不构成重载
  10. mysql维护计划 自动备份_MysQL windows 下自动备份,同时加入计划任务脚本
  11. 基于速度学习机的局部感受野
  12. 【clion】实现类似自定义代码自动补全的功能(懒人利器)
  13. python音频识别_音频识别和比较
  14. 超越宝典汽配汽修管理系统——“维修业务”模块功能实现
  15. 分享12个高质量的PPT图片素材下载站
  16. 台湾瑞昱Realtek RTL8153-VC-CG USB3.0 to lan简介
  17. FAT文件系统简明教程
  18. Python实现将mp3音频格式转换为wav格式
  19. 如何分析多个极兔快递物流每个网点之间是否超过12小时
  20. Internet Download Manager2023稳定版下载器

热门文章

  1. Java技术图谱!黑马java培训课程目录
  2. 机器学习——Azure机器学习模型在线搭建实验原理+详细操作步骤+分析(以UCI数据库的数据为例)
  3. 计算机应用基础 电子科技大学出版社,大学计算机基础课本答案(电子科技大学出版社)...
  4. php查重,知网查重时检测php之类的源码吗?【干货分享】
  5. 3ds max软件如何彻底卸载干净
  6. 电子设计教程42:限流软启动电路
  7. 壳浏览器 android,QQ浏览器2020安卓版
  8. 深入浅出理解奈奎斯特(Nyquist)稳定判据
  9. 计算机电源接口作用,计算机DIY必修课程,电源接口的详细说明
  10. libtorrent源码分析(三)BT下载相关知识总结