Main Content

本页面提供的是上一版软件的文档。当前版本中已删除对应的英文页面。

访问结构体数组中的数据

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

访问标量结构体中的数据

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

S = load('flujet.mat')
S = struct with fields:
          X: [400x300 double]
        map: [64x3 double]
    caption: [2x32 char]

该文件中的变量(Xcaptionmap)现在为结构体中的字段。

使用 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.matcape.mat 都包含变量 XmapcaptionS 是 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) 的语句,后者尝试为结构体的多个元素的字段建立索引。

相关主题