MATLAB创建结构体的2种方法(新手必看)
MATLAB 中的结构体与 C语言中的结构体类似,一个结构体可以通过字段存储多个不同类型的数据。因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。
如下图所示,结构体 Student 中有 4 个字段:

图 1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数 struct。
【实例】通过字段赋值创建结构体。
在命令行窗口中输入以下语句,并显示相应的输出结果。
继续在命令行窗口中输入:
注意,在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB 默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
【实例】利用 struct 函数创建结构体。
在命令行窗口中输入以下语句,并显示相应的输出结果。
继续在命令行窗口中输入:
继续在命令行窗口中输入:
继续在命令行窗口中输入:
如下图所示,结构体 Student 中有 4 个字段:
- 姓名字段 Name 中存储了一个字符串类型的数据;
- 年级字段 Grade 中存储了一个浮点类型数值;
- 科目字段 Subject 中存储了一个一维字符串数组;
- 成绩字段 Result 中存储了一个一维数组。

图 1 结构体Student的示意图
一个结构体中可以有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中了。
创建结构体对象的方法有两种,即可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数 struct。
1、通过字段赋值创建结构体
在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一个结构体可以进行多个字段的赋值。【实例】通过字段赋值创建结构体。
在命令行窗口中输入以下语句,并显示相应的输出结果。
>> Student.Name = 'Sam'; >> Student.Grade = 6; >> Student.Subject = {'Chinese', 'Math', 'English'}; >> Student.Result = {99, 99, 99}; >> Student Student = 包含以下字段的 struct: Name: 'Sam' Grade: 6 Subject: {'Chinese', 'Math', 'English'} Result: {[99], [99], [99]}
继续在命令行窗口中输入:
>> whos Name Size Bytes Class Attributes Student 1x1 1370 struct在本例中,先通过对 4 个字段进行赋值,创建了结构体对象 Student;然后用 whos() 函数分析出 Student 是一个 1×1 的结构体数组。
注意,在进行字段赋值操作时,对于没有明确赋值的字段,MATLAB 默认赋值为空数组。通过圆括号索引进行字段赋值,还可以创建任意尺寸的结构体数组。需要注意的是,同一个结构体数组中的所有结构体对象具有相同的字段组合。
2、利用struct()函数创建结构体
struct() 函数的语法形式如下:StrArray = struct('field1', var1, 'field2', var2, ..., 'fieldn', varn)上述语句可以创建结构体对象 StrArray,并将其 n 个字段分别赋值为 var1,var2,…,varn。
【实例】利用 struct 函数创建结构体。
在命令行窗口中输入以下语句,并显示相应的输出结果。
>> Schedule(2) = struct('Day', 'Thursday', 'Time', '15:00', 'Number', 18) Schedule = 包含以下字段的 1x2 struct 数组: Day Time Number >> Schedule(1) % 结构体第一个元素没有赋值,因此所有字段均为空数组 ans = 包含以下字段的 struct: Day: [] Time: [] Number: []
继续在命令行窗口中输入:
>> ScheduleArray = repmat(struct('Day', 'Thursday', 'Time', '15:00', 'Number', 18), 1, 2) % ...表示续行 ScheduleArray = 包含以下字段的 1x2 struct 数组: Day Time Number >> ScheduleArray(1) % 1x2 的结构体数组的两个元素完全相同 ans = 包含以下字段的 struct: Day: 'Thursday' Time: '15:00' Number: 18
继续在命令行窗口中输入:
>> ScheduleArray(2) ans = 包含以下字段的 struct: Day: 'Thursday' Time: '15:00' Number: 18 >> newArray = struct('Day', {'Thursday', 'Friday'}, 'Time', {'15:00', '9:00'}, 'Number', {18, 6}) newArray = 包含以下字段的 1x2 struct 数组: Day Time Number
继续在命令行窗口中输入:
>> newArray(1) ans = 包含以下字段的 struct: Day: 'Thursday' Time: '15:00' Number: 18 >> newArray(2) ans = 包含以下字段的 struct: Day: 'Friday' Time: '9:00' Number: 6