- MATLAB R2022a完全自学一本通
- 刘浩等编著
- 775字
- 2023-12-06 17:04:01
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=1739028494-6QdrdSfBACfiiRCjA89aRAogK0aKp2WH-0-77842114314dbc1ece02d849461adc01)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1739028494-JSGjFMYeiW2SC2dKG5VkoH1k6MPGzzQQ-0-7d19f00d4fba2f64b37c91b1655a8fe2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1739028494-rCrGjvEqFN1SYG8mV66TvLI6g6ODtHT5-0-15db155720f02802618615945d9d3971)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1739028494-s1KBzbdf7xLaFUdqWc4IgewGEIspWMmB-0-a55f976803c88351dd1b4a23a1035b66)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1739028494-DS4jCI40d4v6YNIxiK38mW7Z9hYHSr1Q-0-60a7175e34729b5bcb0d1b846dfe1d0c)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1739028494-ALCk1O3pOF6PS15GRkIpyoClUoaq3H6Z-0-8e8b0d7482dcf7908a92349352f66a30)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1739028494-IQ9EVguM4ydhflh29ChoPL9B1FVv6vWw-0-4e36a867926be166c78b2fda9f8fbe84)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1739028494-BwTBr73jQrWz05cjPtu5G8vgGGqb6XX0-0-399a70f3bc9e79c150d929a03ab85509)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1739028494-B2GrUchkTvVY9V8buSVN5fZ1rMiHxCyR-0-815cf5538e0aaac8e546d5861b1e7e98)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1739028494-bRgCEYCKO3K8xLvSHs235zhLcwBMR9zt-0-5e78a68bc2ad14e26dc6b5079e85fab5)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1739028494-BdQjEbX55sg9HTb42XDcBogbSSSIvazE-0-ecdeaa52f776b63caf626ef3a3693f5b)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1739028494-fZdbjIIo1f5mtyJdhasgNgMVrsSiMbHn-0-cabc7cdce33bd733200bcd5f8a6cf761)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1739028494-oMqh69fyzg92j0cYVeKICFRUDngmH9Yx-0-275f9825af08a8425cefa86a06530dec)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1739028494-0QQ1ly7D9nN3czhUtlkdAiwVg6Xr88ZK-0-e90e4a8c18fea7e95cb3caaabcf8ce6a)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1739028494-jGCusAvZOjZ5pReM9qbV1wzNQDO96VRx-0-6c4acdead685b8738af1b3614700d109)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1739028494-Y3mWdBAuOpf0GvoViusdMdUAFhswuggb-0-565ba34a7b3a7f6473fb903eb30dc137)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1739028494-eosv422faETqb4439xuVkHE8Bcj1Mger-0-05c064d6c56334e3589c07488a048315)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1739028494-5NcjhXuHiYzRch7G0GXQ8SuLvvsg7E7z-0-a657f21f2130ea3125ae213fcddd3594)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1739028494-9Q8koAz18QTuh74yubURogTHPYplsHtj-0-b496b63b0ae6b8bb196bdc92618bd23c)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1739028494-hxUMuwtIlv2YbklzY24m8nNCat5Nh4iK-0-cafc314edadae10fd236f58f3a7bcd9a)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1739028494-EO3eNtg9H3lPginuIeodwRRrwCBt6XsL-0-5d090fd03a0425cbf4d1ff308feb5cf2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1739028494-yz3p0O6jWJm6Rl2vxvj0q1xPGjAuCU2A-0-77116a9bf2fec7d2f271d0b4bf8a30db)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1739028494-6WTgPwlpVfUCc7lmgayxyGJI4R5Adt2Z-0-aec5c3939160b5cf543ea56ab4f6181a)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1739028494-y0ucphw1ZI6GdcsHc3bqjHhYM09R38ym-0-d3971a85adc3a7fbc4ddb2e85535d6a9)