![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=1738916484-XK9D4RYxUdD2EjLwB1eUyZJAH0aGoUSe-0-57e1ddfcaa6a4dcbf78a9eeec8ad21de)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1738916484-hVjwrnAsSLcpvTWOHOXEDNTSC4mPb4KI-0-6874fe71e3ab173260d11f277430ee65)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1738916484-aFLF1wU0ja6P12rOJWR0TefteBvzcz9d-0-2d1344e9e92f566a1be9abedfa731ce6)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1738916484-Yerx0hMp1MPKO7Wpjw0cVdiPODQK7LMe-0-3929fc3d51c3466914881bbad90b20e3)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1738916484-kYle0CmNGegtjTxEthPcpdROROlqh8uz-0-de26daf72ca2a9d5d78d41026a4c845c)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1738916484-jU1ixFlLAgMGzUodiq4xYfd9HV9az7dg-0-7138b251d12fd018075fdcddba8bef3d)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1738916484-l4Uyiz8qMBkpLBJjKpcWR0NLKSIHweXC-0-ca06bf2d4ecbb109975e5d7c1c04d99f)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1738916484-PYvwQ62NftZ2QYn5UpW3HaqWiYWp7g2Y-0-c987e52de500fef275f2ecc399e95c17)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1738916484-loRKH2QiYB6GLaTSqNgxnNCJbBbxbLbl-0-ab7b3ff43bf32fde7c88b0b8da86de94)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1738916484-1uSpbOlVTig4ZpvVbXLnWcnEdCdSskZO-0-1af9bf236ad57dfab7a6be151c93f9e6)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1738916484-MMClxhUoKTwTdTBIBBx0p5eKspxB8NM4-0-1204f25005d89356c0a246ecc9129336)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1738916484-mHvtSBwvETxAtsRdEbOpM2xmTeaZuaHt-0-3ffe899b22dcc88c36e1707cbc3b12a4)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1738916484-7grhDmOtbSlGVzXeDKMo4UK98pB8AKYN-0-d6abe785c4a205424ea7465ff6288ccf)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1738916484-tGeoj22P6TisA6ufYgUtNzQzCsGasgql-0-0b9573eee7dbe2d02ff2f0e1fb8efc52)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1738916484-Ii77SOZ1ilW8OoslXKmHMrPCBAmIIv0r-0-a7b81fdc0109af537aeaac48f8820b0d)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1738916484-tsrb8ZXNDY5iXDRg3ZXbJHIROY4tEDM6-0-74e89c30f2ff748967853a01d2447785)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1738916484-HxP8eGjwopuH69A4SVBer0SzA3NyonQw-0-2c4e61b0d69382fe663476cd165145d5)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1738916484-HiMUIUV2UaE15df0PnQjsc2E5iUEOu7e-0-2e140dbeec776593f280ab6cae9e8800)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1738916484-BcEVUkfW4FN8VayGgmObrIYzvSoNsgkB-0-4f841e28977909c80a806b4d2788cb56)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1738916484-JsxacrQF2xakJItk8XKoI7sXhoG3c9GB-0-c372cd51c8ecaca4537f924e5604e5af)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1738916484-VLGBxLowy1iMQRvleoNimIcF4HaCjw9x-0-918deac93f1ddf99e1f3f6e2def7bf96)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1738916484-dkaMrgiXtcO9S6QBshbwagFQJvPG7boO-0-17dbfd75c4f4c19400834ab84aae3b86)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1738916484-P1hibOYnTcGYx0iZmxTp2bOJKTGtLC62-0-2fe5392289820fdcda294345c047cdc5)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1738916484-7bddBnwGUfxBmDEpZbGHNkfP33HM2qcx-0-96047ee3c8ee4d956bd55b4701c66716)