![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=1738906451-2j1n3DwJ8KnEGVrjIQMRbC03luZcdeT3-0-69a44889f3648d876a1bb20d065c7f8f)
图2-1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct。两种方法的具体操作步骤如下。
(1)通过字段赋值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。
例2-13:通过字段赋值创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_1.jpg?sign=1738906451-mdibsUnbbjvb5zlyzNueJTUApJcJvzL3-0-8ba8f5f25eb5d994014c386d31a8ca39)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_2.jpg?sign=1738906451-jvVUlpbJAUodqdPB9KFixx447kP4SFXd-0-ed49c188ffec8873ca6b1b499abe88b4)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_3.jpg?sign=1738906451-XBZ7iCZMucqDpO0Hs8Y0HIlGkUHrhVyv-0-6eed84595fbd1e3240562a3d5c22b7d0)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_4.jpg?sign=1738906451-vqOzx9sSEBAGQqoLegkVlVIIgVFtm1yJ-0-5a7e8119c6fea72223271c2b02d85b8c)
在本例中,先通过对4个字段进行赋值,创建了结构体对象Student;然后用whos函数分析出Student是一个1×1的结构体数组。
○ 注意
在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
(2)利用struct函数创建结构体。
struct函数的语法形式为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_5.jpg?sign=1738906451-eZJdxDrjhZZhQ3P9bKIlZ1flTGaRZw9g-0-a0cfe6d55cb5d8736df8dcb38223ee2d)
上述语句可以创建结构体对象StrArray,并将其n个字段分别赋值为var1,var2,…,varn。
例2-14:利用struct函数创建结构体。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_6.jpg?sign=1738906451-TytT903L0GLTRV0ezoXfWp9Ou7r3msiL-0-4b8f1742035bf02b4ed64d449b327c8c)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_49_7.jpg?sign=1738906451-o9ueWkTo9rpUxtauXUjx8hjuCpaFxZ2h-0-6cd53e599bb14004abdd0adbde4c580a)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_1.jpg?sign=1738906451-njlRI9MhqNizYE61dxv3fPtWAlC2Qe65-0-1f722ce049234ff07971e6a8a189af6d)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_2.jpg?sign=1738906451-DuikgurNaSBfH8g9jXYVws6yU2lr4Xc9-0-53a77fe5d3962a4da3ed4a01557a8efe)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_3.jpg?sign=1738906451-nNES7KWKealeCVzgybDj6M9kupkmqaF1-0-7e04c9fa5f492e65b8a8ec7252facb2d)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_4.jpg?sign=1738906451-HhkJpBViKcnDjhMJ3EwEJJIJQiub3CAi-0-9b86d862a1d70da05bdea5c200f1c03b)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_5.jpg?sign=1738906451-8K0WVZEcuGBLkhT29YcMl9q1KmxxwihR-0-46596c21d1af4db150b8ffcae6bc8146)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_6.jpg?sign=1738906451-mIinRNWAgRNNVXevV1rX1iNlNO1y6I5M-0-ff88f8b4a297f7f681ca0901dc3c448b)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_7.jpg?sign=1738906451-EufeTXI0IqLmPWoO9gh9h4MOlC0AmTn3-0-ef85664ef49f7b123087cc9625bda76e)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_8.jpg?sign=1738906451-6D1eZ8NtjWgwvURMYZz1ZUm2mAu5raAP-0-9329f134d50609f7805ebe0c922d9f64)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_9.jpg?sign=1738906451-3BvX7oCIjJXP9APs6WHWciCaqfCFrZOM-0-dae708eaeda519aa1718a2146feaebc8)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_10.jpg?sign=1738906451-fq6k0b6JVSGVUZbGy1jhyFDzJwJe0109-0-d8654e56dccd54c79fa322942d6e0b3a)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_50_11.jpg?sign=1738906451-TLMk5ueWgmww5bJpuumpQa43hY1QRvrD-0-6a82692370c08851a4b637c1e9f58896)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_1.jpg?sign=1738906451-gofhC7Y88oQa3RXpfWEeyufefUPGB4Br-0-a9601adac08785c0c53686640e7ce3a5)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_2.jpg?sign=1738906451-t1q78qkFturZ5YClHl9jQQIiJ3wmumJZ-0-d238f4526f8697901736a99dd3554955)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_3.jpg?sign=1738906451-x01e0TNur5fBoCM4H7v8YEzsjvoK16JB-0-61921582660092579911c16ace1a355e)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_4.jpg?sign=1738906451-L5wh5pHfp2HdfmIpvpaA9f5DRcvUnNG0-0-9acb146a65147dacbddde758a4ec39dc)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_51_5.jpg?sign=1738906451-CZauTOW9w3AYjm0CPCvRztHNZ5Xylu3o-0-62c138b7244649eaf9b49dd373c6b320)