MATLAB学习——结构体类型

前言

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
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值