![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=1739405919-cXLZrLoUSFlI4TF3ElZ04Mi4Jkx2i6Km-0-032b678378430ce82a4e97d9a873aaf5)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1739405919-FezGZdS5v5eL5Ae0vvSEqtE3bEyKs3O0-0-a4b85743bb807a4482270ce39c7e2958)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1739405919-a0tG9gcMMK62h78WdO2DSqWPMY9HydOl-0-4486865b211a8f5ecada1bc5a2e668a7)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1739405919-gSwOI7RFmLXswla8yWbpePvOsEJkajwl-0-adf06bffba66cb8d3e45f360730f3561)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1739405919-0jh5fGwA5zipldJR1h38TcEl0LnxUt8Y-0-fc816d377c7bd2689e56e6b8f5819652)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1739405919-ec3ob2d0HMzUlfuZvUR44A5nabuIqlym-0-4af29c3c1166a53087f2d4c027e77ca6)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1739405919-j0LiH9Xfwi0Ea4IvhVttFUhOhON4cKNt-0-36b834ef2e2a4b079d2419ad25be0c1e)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1739405919-IQe09bN5MxooCE9V5XNwHLaOkV9eXYlI-0-e3fac7ec5188240ad06d944a309d605e)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1739405919-BIvfuz94r90iffYDzgqCq9f5sQNYNynh-0-7b7243fb4cb06b497fd0faf3ddfeb249)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1739405919-fBl7tyLlRv6FEU5kMKsWOvjpjXVDgudB-0-9da56e4136feb7ace7fc0389932af8b1)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1739405919-HdZ3FQEfCCT6U0Q2ZPJooJEcCEtIbyaX-0-b4271d9740bdd9d6e696f961d5e1d890)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1739405919-2P8k3lDjA5Cgk4cjfFOBF5JLmXfUIHal-0-fcae46d70fd82a8b8d24bbde98d24111)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1739405919-RvrC3zdEjvju9tawyzoNcF7zz3F4kZw1-0-0e3e822945e00972829d326084b759b0)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1739405919-cpn15eZbzPsuTiBFhJVnbJmc9DvBaREF-0-883c22c526251508a8d09d04eba5f648)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1739405919-evxkyA84HOlL5fwIZQrJU30ZarO5GSmo-0-903f811a8d64e9229197853245c05ee6)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1739405919-32QU6zyojw5Zk9Q1RW73lCs3GXM8hXDE-0-38b39ab2e7961d87c139674ab6330fa2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1739405919-Ck3aprGgGxN7x0cNfiZNnhh4vj9Ej9iZ-0-8139415d73f6f4c322ee04d5a705dffb)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1739405919-MwjT1TjbhLUpvQZVnyCMpSSkTSOHOzU0-0-aa3d7468177be02644e5e4dfdf0ce210)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1739405919-DAMbiFKfxqNNoEuLc7itZR0G0zRVjnEX-0-0469c03162c7dbd902a711b77fcfec75)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1739405919-zTEXEukAfXh8dTuJorkKA2GC3uSsSvGm-0-8e0be8f140a524120ee7dbfa4c9b1a66)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1739405919-Ro27DJTsYGXFKXojMNm31mJa34bNaY05-0-1be91ae84b6507f24da10baafe2b6300)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1739405919-6JWrY1DBSmwnXRxULRhoRixfYcXfS2aQ-0-8b5650bc3d94b8bd1f6cf32095c28ca1)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1739405919-MIBBpGFyxrtRxS5i2fbC8GRF1ifMJVM4-0-cd37b75f98e06519e2c8497934b83573)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1739405919-i5U8hZrJ7aRqELUFRh6DrHCMW877oghw-0-c56cea888610298ef457600d4462a9fa)