exponenta event banner

mxGetStartNumber (C и Fortran)

Номер поля из массива структуры, указанное имя поля

Синтаксис C

#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.

Примеры

См. эти примеры в разделе matlabroot/extern/examples/mx:

Представлен до R2006a