matlab中的数据结构

在Matlab中,结构是包含一组记录的数据类型,记录是存储在相应的字段中,结构的字段可以是任意一种类型的变量或者对象,结构类型的变量可以是一维的、二维的或者多维的数组,在访问结构类型数组的元素时,需要使用下标配合字段的形式。下表展现了元胞数组与结构数组的异同:

内容元胞数组对象结构数组对象
基本元素元胞结构
基本索引全下标方式、单下标方式全下标方式、单下标方式
可包含的数据类型任何数据类型任何数据类型
数据的存储元胞字段
访问元素的方法花括号和索引圆括号、索引、字段名

数据的创建的方法主要有直接赋值法和利用struct函数创建。
直接赋值法创建结构:直接用结构的名称,配合操作符‘.’和相应的字段的名称完成创建,创建是直接给字段赋具体的数值。还可以用直接赋值法创建结构数组。

Stu.name='Dong';
Stu.age=18;
Stu.grade=uint16(1);
whos
Stu
Stu
  Name      Size            Bytes  Class      Attributes

  A         1x6               976  cell                 
  A1        1x1                 8  double               
  A2        1x1                 8  double               
  A3        1x1                 8  double               
  B         1x6                 6  logical              
  C         1x6                48  double               
  D         3x4                96  double               
  E         2x2               544  cell                 
  F         1x3                24  double               
  Stu       1x1               546  struct               
  ans       1x6                12  char    
Stu = 
     name: 'Dong'
     age: 18
     grade: 1

Matlab中,还可以利用struct函数创建结构,struct函数的基本语法如下:
Struct-name=struct(field1,val1,feild2,val2,…)
Struct-name=struct(field1,{val1},field2,{val2},…)
在实际中,在Matlab中一般是不能直接使用这个函数的,因为Matlab无法识别每一个field的性质,所以Matlab是无法判断直接给出的value值是否是合法的。为了确保不出错,一般可以这样处理:先给每一个field赋值,每一个field都赋值完成后,再使用struct()函数。再写作形式上,field与相应的value同名,这样一来必是合法的写作形式。这可以看作是struct()函数中field与value的一致性。

example:
Student=struct('name',{'Deni','Sherry'},'age',{22,24},'grade',{2,3})
Student = 
1x2 struct array with fields:
    name
    age
    grade

结构的基本操作:
对于结构的基本操作其实是对结构数组元素包含的记录的操作,主要有结构记录数据的访问、字段的增加和删除。
访问结构数组元素包含的记录的方法如下:
1.直接使用结构数组的名称和字段的名称以及操作符‘.’完成相应的操作;
2.使用‘动态’字段的形式:利用动态字段形式访问结构数组元素,便于利用函数完成对结构字段数组的重复操作。
内嵌结构:当结构的字段记录了结构时,则称其为内嵌结构。创建内嵌结构可以使用直接赋值的方法,也可以使用struct函数完成。

Student=struct('name',{'Deni','Sherry'},'age',{22,24},'grade',{2,3},'score',{rand(3)*10,randn(3)*10});
Student
Student(2).score
Student(2).score(1,:)
Student.name
Student.('name')

Student = 
1x2 struct array with fields:
    name
    age
    grade
    score
ans =
   -7.6967   11.1736    5.5253
    3.7138  -10.8906   11.0061
   -2.2558    0.3256   15.4421
ans =
   -7.6967   11.1736    5.5253
ans =
Deni
ans =
Sherry
ans =
Deni
ans =
Sherry

结构操作函数:

函数说明
struct创建结构或其他数据类型转变成结构
fieldnames获取结构的字段名称
getfield获取结构字段的数据
setfield设置结构字段的数据
rmfield删除结构的指定字段
isfield判断给定的字符串是否为结构的字段名称
isstruct判断给定的数据对象是否为数据类型
oderfields将结构字段排序

参考:《MATLAB GUI程序设计》王广、邢林芳

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值