mxGetFieldNumber (C и Фортран)

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

Синтаксис 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-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.

Примеры

Смотрите эти примеры в matlabroot/extern/examples/mx:

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