1.概念
结构(structure array)是一种具有容器特性的数据类型,它使用称为字段的数据容器对相关数据进行分组,每个字段可以包含任何类型或大小的数据,所有元素都具有相同数量的字段和相同的字段名称。(与元胞数组描述类似,都是容器型数据类型,组织结构不同);
(1)包含1个元素的结构数组,数据结构如下:
(2)包含2个元素的结构数组,数据结构如下:
2.创建方法(2种方法)
(1)方法一:使用圆点(.)运算符,示例:数组名.字段名=字段值,遍历所有字段名赋值;
(2)方法二:使用struct函数创建,示例:数组名=struct(‘字段名’,‘字段值’...),注意字段名和字段值成对排列,字段值未指定时使用默认值为[](默认为空矩阵,与元胞数组相同)。
程序示例如下:
%方法1:(分别列出字段信息,元素名与字段信息用圆点(.)分隔)
student.xingming='zhangsan'; %student是结构数组名,后跟字段名,等号右侧为字段值
student.xuehao='00001';
student.chengji=[1 2 3;4 5 6]
%方法2:(struct函数创建,分别列出每条字段信息,最后赋值给变量名)
stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])
3.多元素结构数组
上述是最简单的结构数组,仅包含一个元素,结构数组还可以包括多个元素,创建方法在上面的基础上,继续添加元素即可,添加时使用数组索引。
程序示例如下:
%方法1:(在前面基础上添加)
student.xingming='zhangsan';
student.xuehao='00001';
student.chengji=[1 2 3;4 5 6]
student(2).xingming='lisi';
student(2).xuehao='00002';
student(2).chengji=[7 8 9;1 2 3]
%方法2:
stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])
stu(2)=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])
4.预分配内存
结构数组不需要完全连续的内存,但每个字段需要连续的内存,对于大型的结构数组,增加字段的数量或字段中数据的数量可能会导致Out of Memory错误,因此,必要时,结构数组需要初始化和预分配内存,程序示例如下:
st(100,100)=struct('a',[]) %边界思想,设置结构数组的边界元素为字段名为'a'且字段值为[]的结构数组,其他元素值默认填充为空[]
st.a %索引st的字段'a',返回100个空矩阵
5.判断是否为结构数组
判断一个数组是否为结构数组使用函数isstruct,程序示例如下:
stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])
isstruct(stu) %判断结构数组
6.结构数组的索引
首先介绍一个概念,前面已经说过,结构数组创建的时候使用圆点,使用圆点的访问某一字段的索引叫做字段索引,这是结构数组特有的索引方式,数组索引在视频6Matlab自学笔记六:矩阵索引的概念、下标索引、线性索引、逻辑索引、冒号和end索引、超出索引报错已有讲解,结构数组的索引遵循了数组索引的基本方法,但注意索引和字段索引的配合使用,,程序示例如下:
stu=struct('xingming','zhangsan','xuehao','00001','chengji',[1 2 3;4 5 6])
stu.chengji %字段索引
stu.chengji(1:3)%2级索引,与元胞数组类似
%多元素结构数组操作
student.chengji %若不指定哪个元素,则显示所有该字段名的值
student(2).chengji %指定第2个元素,显示该元素的该字段值
% student.chengji(1:3) %2个及以上元素的结构数组不能直接使用二级索引,因未指定元素,无法确定索引的结果
student(2).chengji(1:3)
更多相关内容
1.36/Matlab结构数组/很简洁/很实用
14.6 Matlab微分方程数值解法 经典ode45 龙格库塔 数学建模
22.3/Matlab/fmincon/带约束多元函数最小值/解优化问题数学建模
31.11/Matlab函数绘图/隐函数绘图/分段函数作图数学建模
66.15/Matlab有点飘:未定义函数或变量/函数或变量无法识别
36.1 Matlab GUI 界面设计初学者光速入门
45.1 一个实例入门Matlab深度学习|卷积神经网络
Matlab/1.3/调用函数/何须浅碧深红色,自是花中第一流
End