目录
访问结构体数组中的数据
该示例演示了如何访问结构体数组的内容。为了运行此示例中的代码,先将多个变量加载到名为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 都包含变量 X、map 和 caption。S 是 1×2 数组。
S(2) = load('cape.mat')
S=2×3 struct
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) 的语句,后者尝试为结构体的多个元素的字段建立索引。