![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=1739428151-ByaO66Ccd80T7rcqvIEfZGHTb8aFVdwR-0-3a1c285a7f2546203b572df5e7484222)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1739428151-K50m5t51dY7sr3fOFnmli75oBPIav7tT-0-ffda2fe97bb40f526d9a506a80dc0c2a)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1739428151-kv9OYPPHiBPLgwiCM2ml7DscLSmOZeK1-0-ca27380a0d954a2d2323c1d58db1db3c)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1739428151-YNHaTbtpviFRdKFWrS7bkQi8WWC7xtsL-0-89a5290f9f65b4811afacab360957728)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1739428151-xQ9ZTWX7L5o7046KbLgxNT0dca35r3dx-0-800d53b582dcdd0fc0625f2eda871f14)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1739428151-N31AjseoxHnr6GSUDciz4OcURxadrH9I-0-9ce5fae1428d530d173326040c8cd948)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1739428151-ctDrbaygNcAXWJMdb5TpE14UJhAyfTmJ-0-32165b5faa6006d152e7385d1423fe78)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1739428151-VPgwlh1QzzATE08X7YW997wAnsXZ4vBt-0-86b80f42a1c2f07029e88df8757392be)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1739428151-A8ThvIWxVrwQtXA1tUil0wQ0BPWXWi03-0-5186143ab06abdc605653d667e2a1add)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1739428151-HhIzmLTeBXNvWpYKuiezDp7CkArFa1Qh-0-8b72d54603187e7cbd331d2e9316ab8a)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1739428151-2NTvRick3ErzvZWdIe8AEa56tZhIpqcs-0-2c56bcb95125584dd6c119454ea8e1b2)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1739428151-wZG9887NbVCU6Zry0cz3s2Xr9clJtk9B-0-5c5a044a1ba3d76871ee8763fb94e4b8)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1739428151-3XApPuipaT4deUWseNfBTzPEhdbgGRLw-0-c5e4b0cd18a3b4d5904e91b7c056945d)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1739428151-Cpa6b8OKbRdxNfnc8X7ZhEaNRHXQ3ZYO-0-5e52ce762a11ed99baaa503c30a974cd)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1739428151-OB9yI27fcOaqtlKRGghwp6xBkOlBiPE2-0-dd39175c5845249d1bec0e2b65957bce)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1739428151-NyvhNzjtO3De8RkqZOc9YUrduwJyykQ0-0-eb9b9a1661e698c1e94e13080a6b3451)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1739428151-9WdpSSQHLk9X2YVTxct2HxMng0iB7P4C-0-84c1ccfed5094af7b8a4244c1c6ae789)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1739428151-GfbqxJzbpx5jBCBIBI4OqjD9qn6b4esd-0-d93751d0e17da8a8f351b387eca8c8b5)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1739428151-1O3jm1TlLLNhDywswG2XCKyOPBgpEeyl-0-26f20550c9a9289b3d7701016b8ee0ae)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1739428151-ySpJENP1fPkJHzU5YcozRHfYBUyhVhwl-0-b9d30d843ad19f51212c521247ef69d3)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1739428151-gf0FOqS863zleCBAsQYsniONEasFfqK3-0-5c9b36ee067d95187d2b2cc52fc691f7)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1739428151-JyWuQCDFLikKQs5LjgePSFhX5v6hgu33-0-0c63487fa466a72975a7cde2e621833f)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1739428151-RomFlfRcN1Zx0Iv9JfGmKObLPAEBcWUi-0-2d0e775905acf5f23a093785a0103bd2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1739428151-i5i5pEh3NI9o5ulCK7DL3urApKAd0QKl-0-02987a5b6f99216ac839e719cd0dfa71)