Documentation Center

  • Trial Software
  • Product Updates

Ways to Organize Data in Structure Arrays

There are at least two ways you can organize data in a structure array: plane organization and element-by-element organization. The method that best fits your data depends on how you plan to access the data, and, for very large data sets, whether you have system memory constraints.

Plane organization allows easier access to all values within a field. Element-by-element organization allows easier access to all information related to a single element or record. The following sections include an example of each type of organization:

When you create a structure array, MATLAB® stores information about each element and field in the array header. As a result, structures with more elements and fields require more memory than simpler structures that contain the same data. For more information on memory requirements for arrays, see Memory Allocation.

Plane Organization

Consider an RGB image with three arrays corresponding to color intensity values.

If you have arrays RED, GREEN, and BLUE in your workspace, then these commands create a scalar structure named img that uses plane organization:

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

Plane organization allows you to easily extract entire image planes for display, filtering, or other processing. For example, multiply the red intensity values by 0.9:

adjustedRed = .9 * img.red;

If you have multiple images, you can add them to the img structure, so that each element img(1),...,img(n) contains an entire image. For an example that adds elements to a structure, see the following section.

Element-by-Element Organization

Consider a database with patient information. Each record contains data for the patient's name, test results, and billing amount.

These statements create an element in a structure array named patient:

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

Additional patients correspond to new elements in the structure. For example, add an element for a second patient:

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

Element-by-element organization supports simple indexing to access data for a particular patient. For example, find the average of the first patient's test results, calculating by rows (dimension 2) rather than by columns:

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

This code returns

aveResultsDoe =
   75.6667
  178.5000
  212.0000

For information on processing data from more than one element at a time, see Access Data in a Structure Array.

Was this topic helpful?