Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

mxGetFieldNumber (C and Fortran)

Field number from structure array, given field name

C Syntax

#include "matrix.h"
int mxGetFieldNumber(const mxArray *pm, 
    const char *fieldname);

Fortran Syntax

integer*4 mxGetFieldNumber(pm, fieldname)
mwPointer pm
character*(*) fieldname

Arguments

pm

Pointer to a structure mxArray

fieldname

Name of a field in the structure mxArray

Returns

Field number of the specified fieldname, on success. In C, the first field has a field number of 0, the second field has a field number of 1, and so on. In Fortran, the first field has a field number of 1, the second field has a field number of 2, and so on. Returns -1 in C (0 in Fortran) on failure. Common causes of failure include

  • Specifying an array pointer pm that does not point to a structure mxArray. Call mxIsStruct to determine whether pm points to a structure mxArray.

  • Specifying the fieldname of a nonexistent field.

Description

If you know the name of a field but do not know its field number, call mxGetFieldNumber. Conversely, if you know the field number but do not know its field name, call mxGetFieldNameByNumber.

For example, consider a MATLAB® structure initialized to:

patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220 210 205];

In C, the field name has a field number of 0; the field billing has a field number of 1; and the field test has a field number of 2. If you call mxGetFieldNumber and specify a field name of anything other than name, billing, or test, mxGetFieldNumber returns -1.

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 if you have a 1-by-1 structure.

In Fortran, the field name has a field number of 1; the field billing has a field number of 2; and the field test has a field number of 3. If you call mxGetFieldNumber and specify a field name of anything other than name, billing, or test, mxGetFieldNumber returns 0.

Calling:

mxGetField(pm, index, 'fieldname');

is equivalent to calling:

fieldnum = mxGetFieldNumber(pm, 'fieldname');
mxGetFieldByNumber(pm, index, fieldnum);

where index is 1 if you have a 1-by-1 structure.

Examples

See the following examples in matlabroot/extern/examples/mx.

Introduced before R2006a

Was this topic helpful?