Matlab中创建结构体数组和访问结构体中数组

目录

创建结构体数组

访问结构体中数组

访问标量结构体中的数据

通过对结构体数组进行索引来访问数据


创建结构体数组

        下面的示例说明了如何创建结构体数组。结构体是使用被称为字段的数据容器将相关数据组合在一起的一种数据类型。每个字段都可以包含任意类型或任意大小的数据。将记录存储在含有字段 name、billing 和 test 的标量结构体中。                                                             

patient(1).name = 'John Doe';
patient(1).billing = 127.00;
patient(1).test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205];
patient


patient = struct with fields:
       name: 'John Doe'
    billing: 127
       test: [3x3 double]

        通过在数组名称后添加下标,可在此数组中添加其他患者的记录。                                                           

patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68, 70, 68; 118, 118, 119; 172, 170, 169];
patient


patient=2×3 struct
    name
    billing
    test

        数组中的每条患者记录都是struct类的结构体。由结构体构成的数组通常称为结构体数组。与其他MATLAB数组类似,结构体数组可以具有任意维度。

        结构体数组具有下列属性:

  • 数组中的所有结构体都具有相同数目的字段。

  • 所有结构体都具有相同的字段名称。

  • 不同结构体中的同名字段可包含不同类型或大小的数据。

        数组中新结构体的任何未指定字段均包含空数组。

patient(3).name = 'New Name';
patient(3)


ans = struct with fields:
       name: 'New Name'
    billing: []
       test: []

        访问结构体数组中的数据,看一下以下数据,并根据其测试结果创建一个条形图。

amount_due = patient(1).billing

amount_due = 127

bar(patient(1).test)
title(['Test Results for ', patient(1).name])

     

访问结构体中数组

        该例子如何访问结构体数组的内容。为了运行此示例中的代码,先将多个变量加载到名为S的结构体中。

访问标量结构体中的数据

        首先,将数据从 flujet.mat 加载到标量结构体 S 中。文件 flujet.mat 包含一幅仿真天体物理射流经历紊流的图像。

S = load('flujet.mat')


S = struct with fields:
          X: [400x300 double]
        map: [64x3 double]
    caption: [2x32 char]

        该文件中的变量(X、caption 和 map)现在为结构体中的字段。使用 structName.fieldName 形式的圆点表示法访问数据。例如,将字段 X 中的数值数据传递给 image 函数:

image(S.X)
colormap(S.map)

        要访问字段的一部分内容,请添加适合字段中数据的大小和类型的索引。例如,将 X 的左中部分传递给 image 函数。

centerLeft = S.X(150:250,1:50);
image(centerLeft)

        如果一个字段包含元胞数组,请使用花括号访问数据,例如 S.cellField{1:50,1:80}

通过对结构体数组进行索引来访问数据

        通过将文件 cape.mat 中的数据加载到数组 S 的第二个元素中来创建一个非标量数组。文件 cape.mat 包含马萨诸塞州鳕鱼角的图像。

        一个结构体数组的每个元素都必须具有相同的字段。flujet.mat 和 cape.mat 都包含变量 Xmap 和 captionS 是 1×2 数组。

S(2) = load('cape.mat')


S=1×2 struct array with fields:
    X
    map
    caption

        对于非标量结构体,访问字段的语法为 structName(indices).fieldName。显示鳕鱼角的图像,将 2 指定为 S 的索引。

image(S(2).X)
colormap(S(2).map)

        添加索引以选择和显示 S(2).X 的一小部分。

capeSection = S(2).X(200:300,150:250);
image(capeSection)

注意

        仅当引用结构体数组的单个元素时,才能为字段的部分内容建立索引。MATLAB® 不支持诸如 S(1:2).X(1:50,1:80) 的语句,后者尝试为结构体的多个元素的字段建立索引。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值