![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=1738959012-5NMUrMaJkCC1dsKX4ioQlP5KIOKcXiKL-0-43827c3e500ddab8bf4416c03fb250f0)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1738959012-G876CRkHRjCyuIkvvAJAJNsikQ04cchj-0-a39320ce845513ff59195f7f93e4779b)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1738959012-xOq42kfA73eF0XE6wNIWcTfr2g7SjirQ-0-db8a2f887f52cff05b8a32b4a52108f1)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1738959012-81udaSVW8Oq9Lw0okbPpmnG74CJndNFv-0-c126b1bf64cb8eba00101848e03cf155)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1738959012-xB8eo4k3TYXyV33maWPk87XHM8fmRXcG-0-75c0d4c122d0bf0775280e215f77905e)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1738959012-NkaR7sftqutAnsSAyRJQBbCl8ejnxXFp-0-9d079be4f645f912c9bd83a14e2a5517)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1738959012-qJEHgRLXeVsNgFlp9EkfDyic2Xx2VEKV-0-b61aa1d51992c21ccc56636aeb81b8e1)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1738959012-lnuvM29I1Z0IL5706U6hXH3VRQHPfge9-0-aa48c1187dbc24ed1a6af7647808e55f)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1738959012-B6QHAoVscHR4TgGlkUPvH6ep3Zjm5AaF-0-7a32543c3b6e71434e60527c5069f303)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1738959012-M88nmlRnZPCNfsCI90SVQjdF0AD48L3k-0-129fc6c7ebf1941a1b8c04c9b0a89e37)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1738959012-9IS5vIgHPszZ7pvsqF46saK7s8uevH9T-0-f0046ada8e7c1365bb57319c8ed89119)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1738959012-JjPHKmLdMejBae2zAS2X5oYcbasP8Oj0-0-2784b6867afaca4a50ae20cdef9befd3)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1738959012-nse6dYqritRVxVdeaMAchpdM9dfLuUgO-0-6d073a27a8749b682f2b2b751114a228)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1738959012-uNA1ZhBii0lspuIFrAEA8cHAaOqnTdSQ-0-438e54163df9c1197d35297016e14d2b)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1738959012-8GA8YewBAAEeYileQYxYJxFRj8t5eUaR-0-0ab8a225384614bf7064a054c9b3ae93)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1738959012-SE5K45xkVPGpBsGi9oV3bIQbRPrfDqW4-0-bcf0304235d2cd130ca075a3b8e55eb5)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1738959012-itt7TxiFQSEs0q5bhZPTF9Tp2hI1e6u4-0-653abae690c461bb1977cdebd44ac22f)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1738959012-anUhiigdLA9v51fNJkw57SdKeTVxgmoj-0-721da0d3fb72104cf093a7b00c342146)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1738959012-0vosHvom9LGQfxWAoWRZA1k1inrB4spR-0-70b046bb8880b8439f353e6e2495531a)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1738959012-82arRgkdLY1BGPxmOGM2QfMuEZCuXzgA-0-d89cfc35c94e35093bb66064950b4a33)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1738959012-7yYN58ZQcCwF9So9ie68o2364W6I0zgd-0-49381de3dcefe08c3026da34a3709b06)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1738959012-CjwgfflZfi1QDFMgZgBilEMNJpxnFlua-0-48f3e8cc9acbff4e3ed6fefc73499c67)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1738959012-KI1LTNtvI0sK8vbuLVCTIegsQ1X3ykZg-0-d20b385aca5b74dbecbe33132fe9828a)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1738959012-C3T1DAFG9bhKX7kLuORyT1qcVJWPP7rW-0-af03cb0f57830b533cae6baa1ca30e7b)