Main Content


Field values from structure array



a = extractfield(S,name) returns the field values specified by the field name of structure S.


collapse all

Load a structure that contains information about roads in Concord, MA.

roads = shaperead('concord_roads.shp');
r = roads(1:5)
r=5×1 struct array with fields:

Get the x- and y-coordinates of the roads. Display the map, and highlight the first few elements using the color magenta.

hold on

Extract the names of the roads, stored in the field STREETNAME. The field values are character vectors, so the result is returned in a cell array.

names = extractfield(r,'STREETNAME')
names = 1x5 cell
    {0x0 char}    {'WRIGHT FARM'}    {'WRIGHT FARM'}    {'WRIGHT FARM'}    {'WRIGHT FARM'}

Extract the X field from the structure and examine the format of the returned values. All values have the same numeric data type (double), so the result is returned in a vector.

uniformType = extractfield(r,'X')
uniformType = 1×42
105 ×

    2.0884    2.0884    2.0884    2.0883    2.0883    2.0882    2.0882    2.0882    2.0882    2.0882    2.0882    2.0883    2.0883       NaN    2.0884    2.0886    2.0887    2.0889    2.0890    2.0890    2.0891       NaN    2.0891    2.0891    2.0891    2.0891       NaN    2.0898    2.0898    2.0897    2.0896    2.0896    2.0895    2.0894    2.0894    2.0893    2.0892    2.0891       NaN    2.0891    2.0892       NaN

For illustrative purposes, change the X field value in one of the elements to have a different data type. This command converts the second element to data type single.

r(2).X = single(r(2).X);

Extract the X field values again. This time, the values have different data types, so the result is returned in a cell array.

mixedType = extractfield(r,'X')
mixedType=1×5 cell array
    {[2.0884e+05 2.0884e+05 2.0884e+05 2.0883e+05 2.0883e+05 2.0882e+05 2.0882e+05 2.0882e+05 2.0882e+05 2.0882e+05 2.0882e+05 2.0883e+05 2.0883e+05 NaN]}    {[2.0884e+05 2.0886e+05 2.0887e+05 2.0889e+05 2.0890e+05 2.0890e+05 2.0891e+05 NaN]}    {[2.0891e+05 2.0891e+05 2.0891e+05 2.0891e+05 NaN]}    {[2.0898e+05 2.0898e+05 2.0897e+05 2.0896e+05 2.0896e+05 2.0895e+05 2.0894e+05 2.0894e+05 2.0893e+05 2.0892e+05 2.0891e+05 NaN]}    {[2.0891e+05 2.0892e+05 NaN]}

Input Arguments

collapse all

Structure, specified as a structure.

Field name, specified as a case-sensitive string scalar or character vector.

Output Arguments

collapse all

Extracted field values, returned as a 1-by-n numeric vector or cell array. n is the total number of elements in the field name of structure S, that is, n = numel([S(:).(name)]). a is a cell array if any field values in the field name contain a character vector or if the field values are not uniform in type; otherwise a is the same type as the field values. The shape of the input field is not preserved in a.

Version History

Introduced before R2006a

See Also