Main Content

结构体数组中数据的组织方法

至少有两种方法可用来组织结构体数组中的数据:平面组织和按元素组织。最适合您的数据的方法取决于您计划访问数据的方式,而对于大型数据集,取决于是否存在系统内存约束。

使用平面组织更易于访问字段中的所有值。使用按元素组织更易于访问与单个元素或记录相关的所有信息。以下部分包括每种组织类型的示例:

当创建结构体数组时,MATLAB® 将有关每个元素和字段的信息存储于数组标头中。因此,具有多个元素和字段的结构体比包含相同数据的简单结构体需要更多的内存。

平面组织

以具有与颜色强度值对应的三个数组的 RGB 图像为例。

RGB image represented with three arrays

如果工作区中存在数组 REDGREENBLUE,则以下命令将创建一个使用平面组织、名为 img 的标量结构体:

img.red = RED;
img.green = GREEN;
img.blue = BLUE;

使用平面组织更易于提取整个图像平面以进行显示、过滤或其他处理。例如,将红色强度值乘以 0.9

adjustedRed = .9 * img.red;

如果您有多幅图像,可以将它们添加到 img 结构体,一个元素 img(1),...,img(n) 包含一幅图像。对于将元素添加到结构体的示例,请参阅以下部分。

按元素组织

以包含患者信息的一个数据库为例。每条记录包含一位患者的姓名、测试结果和帐单金额的数据。

Data structure of patient information

以下语句在名为 patient 的结构体数组中创建一个元素:

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

附加患者对应于结构体中的新元素。例如,为第二位患者添加一个元素:

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

按元素组织支持简单索引以访问特定患者的数据。例如,计算第一位患者的测试结果的平均值,按行(维度 2)而不是按列计算。

aveResultsDoe = mean(patient(1).test,2)

该代码返回

aveResultsDoe =
   75.6667
  178.5000
  212.0000

另请参阅

相关主题