前言
MATLAB 中的数据类型主要包括数值类型、 逻辑类型、 字符串、函数句柄、 结构体和单元数组类型。 这6种基本的数据类型都是按照数组形式存储和操作的。
一、结构体类型
MATLAB中的结构体与C语言中的结构体类似, 一个结构体可以通过字段存储多个不同类型的数据。 因此, 结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。
如下图所示, 结构体student中有4个字段, 姓名字段name中存储了一个字符串类型的数据; 年级字段grade中存储了
一个浮点数值; 科目字段subject中存储了一个一维字符串数组; 成绩字段result中存储了一个一维数组。
一个结构体中可以具有多个字段, 每个字段又可以存储不同类型的数据, 通过这种方式就把多个不同类型的数据组织
在一个结构体对象中。
创建结构体的方法:
1、直接通过赋值语句给结构体的字段赋值,
2、使用结构体创建函数struct。
创建结构体的步骤:
1、通过字段赋值创建结构体
在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写, 对同一个结构体可以进行多个字段的赋值。
实例1:通过赋值创建结构体。
在命令行窗口中输入:
>> Student.Name='WangMing';
>> Student.Grade=6;
>> Student.Subject={
'Chinese','Match','English'};
>> Student.Result={
99,99,99};
>> Student
输出结果:
Student =
包含以下字段的 struct:
Name: 'WangMing'
Grade: 6
Subject: {
'Chinese' 'Match' 'English'}
Result: {
[99] [99] [99]}
在命令行窗口中输入:
>> whos
输出结果:
Name Size Bytes Class Attributes
Student 1x1 1462 struct
U 1x5 10 char
V 1x6 12 char
W 1x11 22 char
ans 1x2 16 double
string 1x20 40 char
上例中, 通过对4个字段赋值, 创建了结构体对象Student, 然后用whos函数分析出Student是一个1×1的结构体数组。
注意:
在进行字段赋值操作时, 没有明确赋值的字段, MATLAB默认赋值为空数组。 通过圆括号索引进行字段赋值, 还可以
创建任意尺寸的结构体数组。 需要注意的是, 同一个结构体数组中的所有结构体对象具有相同的字段组合。
struct函数的句法形式为:
>> StrArray=struct('field1',varl,'field2',var2,..,'fieldn',varn)
上述语句可以创建结构对象StrArray, 并将其n个字段分别赋值为var1,var2,…,varn。
2、利用struct函数创建结构体。
实例2:利用struct函数创建结构体。
在命令行窗口中输入:
>> Schedule(2)=struct('Day','Thursday','Time','15:00','Number',18)
输出结果:
Schedule =
包含以下字段的 1×2 struct 数组:
Day
Time
Number
在命令行窗口中输入:
>> Schedule(1)
输出结果:
ans =
包含以下字段的 struct:
Day: []
Time: []
Number: []
未赋值的结构体数组。
在命令行窗口中输入:
>> ScheduleArray=repmat(struct('Day','Thursday','Time','15:00','Number',18),1,2)
>%建立一个新结构体数组,和Schedule一样。
输出结果:
ScheduleArray =
包含以下字段的 1×2 struct 数组:
Day
Time
Number
在命令行窗口中输入:
>> ScheduleArray(1) %1*2的结构体数组的两个元素完全一致
输出结果:
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',{
'16:00','8:00'},'Number',{
18,6})
>%新建一个newArray数组,以struct结构体为基本。
输出结果:
newArray =
包含以下字段的 1×2 struct 数组:
Day
Time
Number
在命令行窗口中输入:
>> newArray(1)
>%实例化一个newArray数组。
输出结果:
ans =
包含以下字段的 struct:
Day: 'Thursday'
Time: '16:00'
Number: 18
在命令行窗口中输入:
>> newArray(2)
>%实例化一个newArray数组。
输出结果:
ans =
包含以下字段的 struct:
Day: 'Friday'
Time: '8:00'
Number: 6