Указатель на значение поля из массива структур, заданный индекс и имя поля
#include "matrix.h" mxArray *mxGetField(const mxArray *pm, mwIndex index, const char *fieldname);
#include "fintrf.h" mwPointer mxGetField(pm, index, fieldname) mwPointer pm mwIndex index character*(*) fieldname
pm
Указатель на структуру mxArray
index
Индекс требуемого элемента.
В C первый элемент mxArray
имеет index
от 0
. The index
последнего элемента N-1
, где N
- количество элементов в массиве. В Фортране первый элемент mxArray
имеет index
от 1
. The index
последнего элемента N
, где N
- количество элементов в массиве.
fieldname
Имя поля, значение которого требуется извлечь.
Указатель на mxArray
в указанном поле при заданном fieldname
, на успех. Возвращает NULL
в C (0
на языке Фортран), если передан недопустимый аргумент или если заданному полю не назначено значение. Общие причины отказа включают:
Установка указателя на массив pm
который не указывает на структуру mxArray
. Чтобы определить, pm
указывает на структуру mxArray
, вызов mxIsStruct
.
Определение index
к элементу за пределами mxArray
. Для примера задается структура mxArray
который содержит 10 элементов, вы не можете задать index
больше 9
в C (10
на Фортране).
Задание несуществующего fieldname
. Звонить mxGetFieldNameByNumber
или mxGetFieldNumber
для получения имен существующих полей.
Недостаточно пространства в куче.
Звонить mxGetField
для получения значения, удерживаемого в указанном элементе заданного поля. В псевдо-C терминологии, mxGetField
возвращает значение в:
pm[index].fieldname
mxGetFieldByNumber
Как mxGetField
. Обе функции возвращают одинаковое значение. Единственное различие заключается в том, как вы задаете поле. mxGetFieldByNumber
принимает номер поля в качестве третьего аргумента, и mxGetField
принимает имя поля в качестве третьего аргумента.
Не звонить mxDestroyArray
на mxArray
возвращен mxGetField
функция.
Примечание
Входы в файл MEX являются постоянными mxArray только для чтения
s. Не изменяйте входы. Используя mxSetCell
*
или mxSetField
*
функции для изменения камер или полей MATLAB® аргумент приводит к непредсказуемым результатам.
На C вызов:
mxGetField(pa, index, "field_name");
эквивалентно вызову:
field_num = mxGetFieldNumber(pa, "field_name"); mxGetFieldByNumber(pa, index, field_num);
где, если у вас есть 1
-by- 1
структура, index
является 0
.
На языке Фортран звонит:
mxGetField(pm, index, 'fieldname')
эквивалентно вызову:
fieldnum = mxGetFieldNumber(pm, 'fieldname') mxGetFieldByNumber(pm, index, fieldnum)
где, если у вас есть 1
-by- 1
структура, index
является 1
.
mxGetFieldByNumber
, mxGetFieldNameByNumber
, mxGetFieldNumber
, mxGetNumberOfFields
, mxIsStruct
, mxSetField
, mxSetFieldByNumber