matble中建立结构体数组、sort的排序

来源:互联网 发布:手机淘宝叫快递 编辑:程序博客网 时间:2024/06/09 15:56

1、建立结构体数组

struct在matlab中是用来建立结构体数组的。通常有两种用法:
  s = struct('field1',{},'field2',{},...) 
  这是建立一个空的结构体,field1,field2是域名称
  s = struct('field1',values1,'field2',values2,...) 
  这是在建立结构体的时候就赋值,values1,values2就是针对field1,field2所赋的值。
  例如:s = struct('type',{'big','little'},'color',{'red'},'x',{3 4})
  这个结构体有三个域'type','color','x',根据英文意义可以看出分别是类型,颜色和值的意思。类型可以取的值有'big','little',也就是类型有两种,分别是大和小。颜色只有'red'红色,而值x可以是3或者4。

2、对结构体数组按某一个成员进行排序

[seednew,index] = sort([seed.z]) ;对seed.z升序排列
seednew 是升序排好的seed.z
查看只按z排列的结构体结果
则 seed(index(1))、seed(index(2)) 、seed(index(3))
或者seednew1=seed(index(:))
或seednew2=seed(index)

3、sort排序

Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中
A为待排序的向量;若欲保留排列前的索引,则可用 [sA,index] = sort(A) ,排序
后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为
可能。
事实上,这里A ≡sA(index) , [A恒等于sA(index)],这个结论确实很奇妙,而且很有用。不信你排序之后试下键入命令sA(index) ,看看得到的是不是就是排列前的A呢。
=====================
  在Matlab中排序某个向量(一维)时,可以使用sort(A),其中A为待排序的
向量,如果仅是用来排序A,那么直接使用sort(A)即可,如 果排序后还需要保留
原来的索引可以用返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保
持不变,ind是B中每一项对应于A中 项的索引。排序是安升序进行的。

(1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,A为二维时,对数组每一列进行排序.

eg: A=[1,5,3],sort(A)=[1,3,5]

   A=[1,5,3;2,4,1],sort(A)=[1,4,1;2,5,3]

(2)B=sort(A,dim),对数组按指定方向进行升序排序,

dim =1,表示对每一列进行排序,,dim=2表示对每一行进行排序.

(3)B=sort(A,dim,mode),mode为指定排序模式,mode"ascend",进行升序排序,"descend ",进行降序排序.

(4)[B,I]=sort(A,.....),I为返回的排序后元素在原数组中的行位置或列位置.

一些例子:


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

A =

     3     4     2
     1     5     3
     4     7     1

>> A(:)

ans =

     3
     1
     4
     4
     5
     7
     2
     3
     1

>> min(A(:))

ans =

     1

>> max(A(:))

ans =

     7

>> A

A =

     3     4     2
     1     5     3
     4     7     1

>> sort(A)

ans =

     1     4     1
     3     5     2
     4     7     3

>> A

A =

     3     4     2
     1     5     3
     4     7     1

>> sort(A(:))

ans =

     1
     1
     2
     3
     3
     4
     4
     5
     7

>> sort(A,1)

ans =

     1     4     1
     3     5     2
     4     7     3

>> sort(A,2)

ans =

     2     3     4
     1     3     5
     1     4     7

>> sort(A,1,"descend")
??? sort(A,1,"descend")
             |
Error: Missing variable or function.

>> sort(A,1,'descend')

ans =

     4     7     3
     3     5     2
     1     4     1

>> [B,I]=sort(A)

B =

     1     4     1
     3     5     2
     4     7     3


I =

     2     1     3
     1     2     1
     3     3     2


原创粉丝点击