MATLAB supports specialized data constructs such as structures and cell arrays. MATLAB structures are array-oriented data constructs. They provide a convenient way to group related data of different types.
Structures are MATLAB data constructs with named "data containers" called fields. The fields of a structure can contain any kind of data. For example, one field might contain a text string representing a name, another might contain a scalar representing a billing amount, a third might hold a matrix of medical test results, and so on.
% Draw a visualization of a structure.
strucdem_helper(1);
You can construct a structure simply by assigning values to its fields. With these commands, we create the structure we've depicted.
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 172 170 169];
patient
patient =
name: 'John Doe'
billing: 127
test: [3x3 double]
You can also build an array of structures to collect similar items together. A structure array has the following properties:
* All structures in the array have the same number of fields. * All fields have the same field names.
You can build a structure array by adding subscripts after the structure name.
patient(2).name = 'Ann Lane'; patient(2).billing = 28.50; patient(2).test = [68 70 68; 118 118 119; 172 170 169]; % Update the visualization. strucdem_helper(2);
You can access any field in a structure as easily as you access a regular variable. For example, we can draw a bar graph of the test data for patient(1).
bar(patient(1).test)
The FIELDNAMES function returns the field names for a structure array.
You can remove a given field from every structure within a structure array using the RMFIELD function.
fnames1 = fieldnames(patient)
patient2 = rmfield(patient,'test');
fnames2 = fieldnames(patient2)
fnames1 =
'name'
'billing'
'test'
fnames2 =
'name'
'billing'
Structures can be nested. You can use the STRUCT function or direct assignment statements to nest structures within existing structure fields.
A = struct( 'data', {[3 4 7; 8 0 1], [9 3 2; 7 6 5]}, ... 'nest', {... struct( 'testnum', 'Test 1', ... 'xdata', [4 2 8], 'ydata', [7 1 6]), ... struct( 'testnum', 'Test 2', ... 'xdata', [3 4 2], 'ydata', [5 0 9])}); % Update the visualization. strucdem_helper(3)
Here are some more structure commands in action. For further information on structures, please consult the HELPDESK or the MATLAB Manual.
anotherfield = 'myfield'; st = struct('yourfield','foo',anotherfield,'foo'); st.(anotherfield)='bar'; st = rmfield(st,anotherfield); if isfield(st,anotherfield); disp(st) end