![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=1739689863-0j19etm4xCBCDjJdMJzp9DfeJDXMtBE8-0-50822b55d601755210d77e18b03adf5d)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1739689863-UPRpRbUkNBWgkhAXAS8c8VoHAL3bvG2i-0-6592feb2336c96cdc9bdc65735f7bec2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1739689863-Krvm279uDXnbCi5dFmcq7NTcxguc4gTn-0-c76d38588a7fd15fb03961a72fa852c1)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1739689863-UQ21twz6cbvw1PtJrkwEINwBMzh1afc8-0-743d2efdd3a4d579c00c13e733f8632f)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1739689863-GpRJ0ZYQ0WiTyZWKbFQCOSa5aPX5x16H-0-ad9f88879902593a39535fa9320bd50a)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1739689863-nyOc4egR7myelufSC4XP8lX1HOhVaEsw-0-f22cc8198c1976a45950873330dba193)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1739689863-sWaIYwSehaOu58t32BiPkxWwXi3orFVf-0-e604715eb9689d1559151daba9d52fec)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1739689863-gJ3gAjzWaC5ALssesWL26JraSduQ4jkg-0-541232c253854eb2fe8ba83ebbded522)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1739689863-FW9jbRGMWOFMDYZumTqABmuYTKNyVwPl-0-b674f47bd17fe2cd0595c92aa95b1b52)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1739689863-8WjsMxocwRcGIHOJo3A9RG6Qt3B7MjNa-0-e99582b97464302559aa16ee11a80c84)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1739689863-27fdC8TEhtH5ZhN0RqF12tlOBrtvJz6i-0-13a5a9d43cb6ecf54a7502da78d21979)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1739689863-BwAnsAosQWiJTgDUYzu9XhVjVsxoAtk6-0-5d1318e6e96462e6ae81e70925605388)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1739689863-hLJHkJIGC4JLiABMm0WPJhpzNJpFx3UR-0-2a7cb292998c13ab9234e4e15bbc4efd)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1739689863-ZNUh2IP2Qzxnh1DEWtmkkAzlOu6UmW3x-0-020fb5d960e6b5dc3c4262a17613ecf4)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1739689863-wbm7nYw1LOqgdwu1CbSbIgJ8x4OSQMrF-0-134c96f4ead6052394e50530f67fa000)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1739689863-7BXdIbra5nEeeOnqI9uVGSklEuIBKyAa-0-458f0385ee7cae02fef502042a1fb57c)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1739689863-qv04sdFT3nBZhpYxkbNXodpzjQ89I6za-0-2a495fbec643bbfb97436692b1765141)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1739689863-Bi4oYrZjtR5Tyi67n4fYkRrw2sWY6erb-0-071f84258ce4cac263d613f006d7473e)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1739689863-0YtNhQtFpDjwcZmVn0Mqs8REWmIFF0RX-0-a5581eaeea453e49931d9c3b4c899d1f)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1739689863-ISofsdPPvfZjM3FViIW9qopsbedjvZEZ-0-1ee2728ae10925a9dc62ea1e9fbb76d5)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1739689863-Q8Ze20iMImlQBqyvkERryidwQSDCswmV-0-92fb8a672671f301389e8f2813c18ccc)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1739689863-TIcB9aV3rblqhuRQxWVkc9atRnhDcvs6-0-fc461abd132317483c7c0983be4b1853)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1739689863-955Qdn4qjPxV5mZZrbZOyPahcLFyFmHm-0-76bf746ee1b9ab612a2107ebdf8def1c)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1739689863-dni1MmRQzoCEohg7CGF1SaZhEzErsiA8-0-b4bc6c0ad018db4c4332619955d8e8b1)