![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=1739290585-XLLT7oMix29kAtYgymOxfVYaRFXEcPJf-0-e59f8bc299d4f09c0bae1259399a44dd)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1739290585-kzibUOP0DwWD7yweQcuQ7wGCWNCZ6zyu-0-c381cb5b4095d439a732a318d3786a73)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1739290585-rmmrPwOwuClNUXTVtz1X4UixPmC2WoO9-0-da1d6c2c4139d03916d38549b2010119)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1739290585-gtzvOiSzH6CbkvJzyo6Tr46Ug6b7tzfb-0-e10a8f5dc44a196d210b230a5050e1fd)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1739290585-X1blw7ghgNmssXFu9FpOlukAij3lsh17-0-910b07696db01c57e93450dd031f1c40)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1739290585-QZTQ9fHq8fL38yUYYlArrXzoQNdwt1hr-0-f9b467c21d16900f432f071c716790b9)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1739290585-Po1tkCkaMP8O96TJyMXXoXtTwjlXOUII-0-94e89a247fa9c79d46db1dee4c736453)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1739290585-kGYvBp8tP7bJm5zyK0WU0yHQnGwM9tl7-0-2bb6d7db4215d3ec2e9771cbdcf67fd8)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1739290585-h9SNjnboIbIrIC61WKNOgrVe2lNhmsge-0-75cef00ed8a8bc78b7d7e856ac1e5081)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1739290585-BKR1tbcBVqoPZcR67Y1LQScnlE1mzFvR-0-01759ca6d4226400b30fe13581cdc878)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1739290585-z7yazXCQBKkCSMA7ZDbkKeODvqCFJFzH-0-a130f7aaf040b9d175af8944a5bcbc59)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1739290585-sYQsQF0kk8vonsYmQATmlpkbqQxhhA2s-0-bb351d8f548643b4a9a57290f2c626e2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1739290585-sy0HRwX1akInry57V4k4orZbXMuhUNB8-0-7359fa65d5ac911942202fabc88216bf)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1739290585-uVs5g0xVL4BnyjOXQT5uGSP7m6SwzTgf-0-ab92e8c704fcf04934a3129d5d0ec38f)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1739290585-GWRu0tHzw4pQ2FsDYcpwcHBgKLj03Chx-0-1ed283712f2343213b4618237d12b9b4)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1739290585-Bb5diFQxt3QFotcOKMgLqghGnqYPbhbM-0-28082d4fcffcf4c64b76c4d2264ff5fb)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1739290585-av2kAwTb8uh0Y5eQVl9odXlewRMRZVpC-0-419633b8f297b056be06b6696294f44b)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1739290585-2V6ILlZoEutgB4zmnDYyXxf28yfv77pk-0-43df6b90f2b7b666a9946c21ad78a012)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1739290585-kJrWnSonifBtAbZ9WCciLyGyTm0L65V7-0-070d93c1315c4ef784a103b0a5015926)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1739290585-8I61dQ8KgeWs2yiGVcBPpXSZoK38n8iC-0-cb1f0726bb6a4223046e581ce0698314)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1739290585-DhFH0iciMvQIqkN5b1uPYlayJSQKLnmQ-0-a603e07f22e613e4bc44c2936f529767)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1739290585-c0GLvbo3CHmLYg9NEiS19oUc3TabFy7F-0-0feb0743e251d38eb8af5c1bb874fc95)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1739290585-e160oQor37nCeuHv8OHepaxbJNPU4brn-0-952ea45d409e50dccb43b9294f486a79)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1739290585-r8IdEwbmNRjiK7OQiHNOlv9R5SnSxfXE-0-5eaafaabc64c7f89c7a9b9f0fdca2f0e)