![MATLAB R2022a完全自学一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/854/47548854/b_47548854.jpg)
2.1.5 结构体类型
MATLAB中的结构体与C语言中的结构体类似,一个结构体可以通过字段存储多个不同类型的数据。因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。
如图2-1所示,结构体Student中有4个字段:姓名字段Name中存储了一个字符串类型的数据;年级字段Grade中存储了一个浮点类型数值;科目字段Subject中存储了一个一维字符串数组;成绩字段Result中存储了一个一维数组。
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_48_8.jpg?sign=1738928216-2GpUm4tc3m0JqHkuUQ4YBShrIRxzsJvn-0-69d76bfb6b71b92e4b8a4463381c45e4)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1738928216-FMdBZnzneNso1VLIXkcJSuYrwJPJTOtQ-0-f57a2825971b213a9bedde5ebca8e271)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1738928216-JSnnjnqRmZGB09rw3nHcohYGs3IwYHoy-0-6aa92a8fafbb07a48f8c9d6599c17af4)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1738928216-esJkwTNuArL7z7Mn0WAnowahdZe76FrK-0-9b836e174a181019d836d00098ab63ad)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1738928216-JL6R2zNZoqy7XCRME3UIexqyY7gmCoXS-0-c8181638c8be5779bc11d0ee1c41bd8f)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1738928216-VTciZiJ39wcO54euhWJkyYx1QP5vQVPP-0-e4b19383313f072abcb93db1da8679a8)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1738928216-SDje1kDS0lqThiBVVBxqCr2kBxibnSbo-0-32e89a7f0a4253033d9ef98f75980d62)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1738928216-Eofu7b5abTNUOC8gnfnRcHZ2ystBs9Zo-0-acaa088559e6ebaa2fcef881a88d73e1)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1738928216-vmjUzH8HO5SPeHgAx9zIJ4veQmNX7n6B-0-d44eea60726b6bd509963e451f07fdcc)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1738928216-usZwA4cTGjBIw6YzxgI5QYLFKGQtLZ8G-0-445e23199ddc866a3b96eb0efadff322)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1738928216-HEbZbJKKaZBKUFN7fbeSa9Z0nwrJ7XXC-0-7efc5c80ce624633d41d014ea14ed309)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1738928216-mbvu0bnxpNPgYpOae959gOTEqmoMPRSa-0-0ad3e586a71462ea678f72331ca2a69c)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1738928216-VIr9BhVcyu7p3phwwkBAv0eURRXRR7jM-0-8c8ed9a0d94f33dcefb777617ce73f69)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1738928216-yx9PzGpUO8NiVjwNB4tt1RjsRKjPhYvz-0-07cb34a7574321a979a4f46831f9d755)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1738928216-rTVAxfXrmAuipQLsVpJKdLs7hvJaprtS-0-b6a08d792fd186e154f984f387cff3ee)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1738928216-n6TqZZ3GsbfD8jKnXC8bEfC7iwvzgjrz-0-ad7d8190fa9f65f89afbb88c0fe7dc9d)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1738928216-6mBTPcueWpNv4SysPYC9AG3pRSUYNzvu-0-8bab4fe1157b49b2abc47a51c567dcc2)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1738928216-2jSVWgWc727VAwu5tstSGs8zdJVneJ5j-0-6a4e04b974b0ef41f9fcd1c9f4595f9b)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1738928216-T3OQ2Lbvt43b4qL9WfSWXBjp4MZ8ubrW-0-81336b1fc5ffb509534a3cec9b76bd5d)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1738928216-1uo1az0e2TMeNjwLxAbgfbsk68fvHm9Y-0-6e7a3d78221b7630d12183026989cd5e)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1738928216-uYkd4sbmD6FPeJ1FsjE5gukOTdLLRzZb-0-e6c913ed819dc00bdabd142f8723faac)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1738928216-NF5KmV7bfU6zLaGr4KhwX3HxKUl6Eyq9-0-4461e8b62c28b93954cb100286777b74)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1738928216-qGdHgYVPLJdRFEGUBTGrElFWXj2obfAj-0-e12d599894a91d1aae8e7c93f8f8f848)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1738928216-BLZjjxrH5cKh90AcJyZq51LYoGd7lRWf-0-2a2224b919f78bb16ef1d8e2602aba1e)