mxGetFieldNumber (C and 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-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
Для просмотра документации необходимо авторизоваться на сайте