首页 > 编程笔记 > MATLAB笔记 阅读:50

MATLAB创建结构体的2种方法(新手必看)

MATLAB 中的结构体与 C语言中的结构体类似,一个结构体可以通过字段存储多个不同类型的数据。因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。

如下图所示,结构体 Student 中有 4 个字段:

图 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

相关文章