Номер поля из массива структуры, указанное имя поля
#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около-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около-1 структура, затем вызов:
mxGetField(pm, index, 'fieldname');
эквивалентно вызову:
fieldnum = mxGetFieldNumber(pm, 'fieldname'); mxGetFieldByNumber(pm, index, fieldnum);
где index является 1.
mxGetField, mxGetFieldByNumber, mxGetFieldNameByNumber, mxGetNumberOfFields, mxIsStruct, mxSetField, mxSetFieldByNumber