您的位置:首页 > 理论基础 > 数据结构算法

matlab中的数据结构

2020-07-14 05:43 302 查看

在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程序设计》王广、邢林芳

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: