Номер поля из массива структур, заданное имя поля
#include "matrix.h" int mxGetFieldNumber(const mxArray *pm, const char *fieldname);
#include "fintrf.h" integer*4 mxGetFieldNumber(pm, fieldname) mwPointer pm character*(*) fieldname
pmУказатель на структуру mxArray
fieldnameИмя поля в структуре mxArray
Номер поля заданного fieldname, на успех. В C первое поле имеет количество полей 0, второе поле имеет количество полей 1и так далее. В Фортране первое поле имеет количество полей 1, второе поле имеет количество полей 2и так далее. Возвращает -1 в C (0 на ФОРТРАН) при отказе. Общие причины отказа включают
Установка указателя на массив pm который не указывает на структуру mxArray. Звонить mxIsStruct определить, pm ли указывает на структуру mxArray.
Определение fieldname несуществующего поля.
Если вы знаете имя поля, но не знаете его номер поля, позвоните mxGetFieldNumber. И наоборот, если вы знаете номер поля, но не знаете его имя, вызовите mxGetFieldNameByNumber.
Для примера рассмотрим MATLAB® структура, инициализированная в:
patient.name = 'John Doe'; patient.billing = 127.00; patient.test = [79 75 73; 180 178 177.5; 220 210 205];
На C поле name имеет номер поля 0; поле billing имеет номер поля 1; и полевые test имеет номер поля 2. Если вы звоните mxGetFieldNumber и задайте имя поля чего-либо кроме name, billing, или test, mxGetFieldNumber возвращает -1.
Если у вас есть 1-by- 1 структура, затем вызов:
mxGetField(pa, index, "field_name");
эквивалентно вызову:
field_num = mxGetFieldNumber(pa, "field_name"); mxGetFieldByNumber(pa, index, field_num);
где index является 0.
На языке Фортран поле name имеет номер поля 1; поле billing имеет номер поля 2; и полевые test имеет номер поля 3. Если вы звоните mxGetFieldNumber и укажите имя поля чего-либо кроме name, billing, или test, mxGetFieldNumber возвращает 0.
Если у вас есть 1-by- 1 структура, затем вызов:
mxGetField(pm, index, 'fieldname');
эквивалентно вызову:
fieldnum = mxGetFieldNumber(pm, 'fieldname'); mxGetFieldByNumber(pm, index, fieldnum);
где index является 1.
mxGetField, mxGetFieldByNumber, mxGetFieldNameByNumber, mxGetNumberOfFields, mxIsStruct, mxSetField, mxSetFieldByNumber