mxGetFieldByNumber (C and Fortran)
Pointer to field value from structure array, given index and field number
C Syntax
#include "matrix.h" mxArray *mxGetFieldByNumber(const mxArray *pm, mwIndex index, int fieldnumber);
Fortran Syntax
#include "fintrf.h" mwPointer mxGetFieldByNumber(pm, index, fieldnumber) mwPointer pm mwIndex index integer*4 fieldnumber
Arguments
pmPointer to a structure
mxArrayindexIndex of the desired element.
In C, the first element of an
mxArrayhas anindexof0. Theindexof the last element isN-1, whereNis the number of elements in the array. In Fortran, the first element of anmxArrayhas anindexof1. Theindexof the last element isN, whereNis the number of elements in the array.See
mxCalcSingleSubscriptfor more details on calculating anindex.fieldnumberPosition of the field whose value you want to extract
In C, the first field within each element has a field number of
0, the second field has a field number of1, and so on. The last field has a field number ofN-1, whereNis the number of fields.In Fortran, the first field within each element has a field number of
1, the second field has a field number of2, and so on. The last field has a field number ofN, whereNis the number of fields.
Returns
Pointer to the mxArray in the specified field for the desired
element, 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
pmthat does not point to a structuremxArray. CallmxIsStructto determine whetherpmpoints to a structuremxArray.Specifying an
indexto an element outside the bounds of themxArray. For example, given a structuremxArraythat contains 10 elements, you cannot specify anindexgreater than9in C (10in Fortran).Specifying a nonexistent field number. Call
mxGetFieldNumberto determine the field number that corresponds to a given field name.
Description
Call mxGetFieldByNumber to get the value held in the specified
fieldnumber at the indexed element.
Do not call mxDestroyArray on an mxArray
returned by the mxGetFieldByNumber function.
Note
Inputs to a MEX file are constant read-only mxArrays. 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, if you have a 1-by-1 structure, then
calling:
mxGetField(pa, index, "field_name");
is equivalent to calling:
field_num = mxGetFieldNumber(pa, "field_name"); mxGetFieldByNumber(pa, index, field_num);
where index is 0.
In Fortran, if you have a 1-by-1 structure, then
calling:
mxGetField(pm, index, 'fieldname')
is equivalent to calling:
fieldnum = mxGetFieldNumber(pm, 'fieldname') mxGetFieldByNumber(pm, index, fieldnum)
where index is 1.
Examples
To open an example, type:
edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);
where filename is:
To open an example, type:
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
where filename is:
To open an example, type:
edit([fullfile(matlabroot,"extern","examples","mex","filename")]);
where filename is:
See Also
mxGetField,
mxGetFieldNameByNumber, mxGetFieldNumber, mxGetNumberOfFields, mxIsStruct,
mxSetField,
mxSetFieldByNumber
Version History
Introduced before R2006a