mxGetField (C and Fortran)
Pointer to field value from structure array, given index and field name
C Syntax
#include "matrix.h" mxArray *mxGetField(const mxArray *pm, mwIndex index, const char *fieldname);
Fortran Syntax
#include "fintrf.h" mwPointer mxGetField(pm, index, fieldname) mwPointer pm mwIndex index character*(*) fieldname
Arguments
pm
Pointer to a structure
mxArray
index
Index of the desired element.
In C, the first element of an
mxArray
has anindex
of0
. Theindex
of the last element isN-1
, whereN
is the number of elements in the array. In Fortran, the first element of anmxArray
has anindex
of1
. Theindex
of the last element isN
, whereN
is the number of elements in the array.fieldname
Name of the field whose value you want to extract.
Returns
Pointer to the mxArray
in the specified field at the specified
fieldname
, on success. Returns NULL
in C
(0
in Fortran) if passed an invalid argument or if there is no
value assigned to the specified field. Common causes of failure include:
Specifying an array pointer
pm
that does not point to a structuremxArray
. To determine whetherpm
points to a structuremxArray
, callmxIsStruct
.Specifying an
index
to an element outside the bounds of themxArray
. For example, given a structuremxArray
that contains 10 elements, you cannot specify anindex
greater than9
in C (10
in Fortran).Specifying a nonexistent
fieldname
. CallmxGetFieldNameByNumber
ormxGetFieldNumber
to get existing field names.Insufficient heap space.
Description
Call mxGetField
to get the value held in the specified element of
the specified field. In pseudo-C terminology, mxGetField
returns
the value at:
pm[index].fieldname
mxGetFieldByNumber
is like mxGetField
. Both
functions return the same value. The only difference is in the way you specify the
field. mxGetFieldByNumber
takes a field number as its third
argument, and mxGetField
takes a field name as its third
argument.
Do not call mxDestroyArray
on an mxArray
returned by the mxGetField
function.
Note
Inputs to a MEX-file are constant read-only mxArray
s.
Do not modify the inputs. Using mxSetCell
*
or mxSetField
*
functions
to modify the cells or fields of a MATLAB® argument causes unpredictable
results.
In C, calling:
mxGetField(pa, index, "field_name");
is equivalent to calling:
field_num = mxGetFieldNumber(pa, "field_name"); mxGetFieldByNumber(pa, index, field_num);
where, if you have a 1
-by-1
structure,
index
is 0
.
In Fortran, calling:
mxGetField(pm, index, 'fieldname')
is equivalent to calling:
fieldnum = mxGetFieldNumber(pm, 'fieldname') mxGetFieldByNumber(pm, index, fieldnum)
where, if you have a 1
-by-1
structure,
index
is 1
.
See Also
mxGetFieldByNumber
, mxGetFieldNameByNumber
, mxGetFieldNumber
, mxGetNumberOfFields
, mxIsStruct
,
mxSetField
,
mxSetFieldByNumber
Version History
Introduced before R2006a