Main Content

Structure array

A *structure array* is a data type that groups related data
using data containers called *fields*. Each field can contain any
type of data. Access data in a field using dot notation of the form
`structName.fieldName`

.

When you have data to put into a new structure, create the structure using dot notation to name its fields one at a time:

s.a = 1; s.b = {'A','B','C'}

`s = `*struct with fields:*
a: 1
b: {'A' 'B' 'C'}

You also can create a structure array using the `struct`

function,
described below. You can specify many fields simultaneously, or create a nonscalar
structure array.

`s = struct`

creates a scalar (1-by-1) structure with
no fields.

`s = struct(`

creates a structure array with the specified field and value. The
`field`

,`value`

)`value`

input argument can be any data type, such as a
numeric, logical, character, or cell array.

If

`value`

is*not*a cell array, or if`value`

is a scalar cell array, then`s`

is a scalar structure. For instance,`s = struct('a',[1 2 3])`

creates a 1-by-1 structure, where`s.a = [1 2 3]`

.If

`value`

is a nonscalar cell array, then`s`

is a structure array with the same dimensions as`value`

. Each element of`s`

contains the corresponding element of`value`

. For example,`s = struct('x',{'a','b'})`

returns`s(1).x = 'a'`

and`s(2).x = 'b'`

.If

`value`

is an empty cell array`{}`

, then`s`

is an empty (0-by-0) structure.

`s = struct(field1,value1,...,fieldN,valueN)`

creates a
structure array with multiple fields.

If none of the

`value`

inputs are cell arrays, or if all`value`

inputs that are cell arrays are scalars, then`s`

is a scalar structure.If any of the

`value`

inputs is a nonscalar cell array, then`s`

has the same dimensions as that cell array. Also, if two or more`value`

inputs are nonscalar cell arrays, then they all must have the same dimensions.For any

`value`

that is a scalar cell array or an array of any other data type,`struct`

inserts the contents of`value`

in the relevant field for all elements of`s`

. For example,`s = struct('x',{'a','b'},'y','c')`

returns`s(1).x = 'a'`

,`s(2).x = 'b'`

,`s(1).y = 'c'`

, and`s(2).y = 'c'`

.If any

`value`

input is an empty cell array,`{}`

, then output`s`

is an empty (0-by-0) structure. To specify an empty field and keep the values of the other fields, use`[]`

as a`value`

input instead.

`s = struct([])`

creates an empty (0-by-0) structure
with no fields.

`s = struct(`

creates a scalar
structure with field names and values that correspond to properties of
`obj`

)`obj`

. The `struct`

function does not
convert `obj`

, but rather creates `s`

as a
new structure. This structure does not retain the class information, so
private, protected, and hidden properties become public fields in
`s`

. The `struct`

function issues a
warning when you use this syntax.

`cell2struct`

| `fieldnames`

| `isfield`

| `isstruct`

| `orderfields`

| `rmfield`

| `struct2cell`

| `struct2table`

| `substruct`

| `table`

| `table2struct`