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程序设计》王广、邢林芳
- Matlab与数据结构 -- 搜索向量或矩阵中非零元素的位置
- C++与Matlab混合编程之:矩阵数据结构
- C++与Matlab混合编程之:矩阵数据结构
- 封装c++与matlab引擎交互的数据结构:行优先矩阵类
- 关于matlab中动态增长数据结构的实验记录
- Matlab与数据结构 -- 对向量的排序
- MATLAB数据结构
- Matlab与数据结构 -- 对矩阵的排序
- Matlab与数据结构 -- 如何获取给定目录中的文件
- Matlab使用Java的数据结构类型
- Matlab使用Java的数据结构类型
- Matlab基本数据结构
- matlab,可视化稀疏矩阵的数据结构(即非零元位于哪些位置)
- 【Matlab学习笔记】(六)基本数据结构(矩阵定义方法)
- matlab数据结构-元胞数组
- Matlab与数据结构 -- 如何获取完整文件名
- 关于matlab的table数据结构的使用
- Matlab与数据结构 -- 求向量或矩阵的最大值
- matlab的命令补全功能
- Matlab设置gca修改坐标显示