Указатель на значение поля из массива структуры, заданный индекс и имя поля
#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. index последнего элемента имеет значение N-1, где N - количество элементов в массиве. В Фортране первый элемент mxArray имеет index из 1. index последнего элемента имеет значение N, где N - количество элементов в массиве.
fieldnameИмя поля, значение которого требуется извлечь.
Указатель на mxArray в указанном поле в указанном fieldname, на успех. Прибыль NULL в C (0 в Fortran), если передан недопустимый аргумент или если указанному полю не присвоено значение. Общие причины отказа:
Указание указателя массива 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-файл доступны только для чтения mxArrays. Не изменяйте входные данные. Используя mxSetCell* или mxSetField* функция изменения ячеек или полей аргумента MATLAB ® приводит к непредсказуемым результатам.
В C вызов:
mxGetField(pa, index, "field_name");
эквивалентно вызову:
field_num = mxGetFieldNumber(pa, "field_name"); mxGetFieldByNumber(pa, index, field_num);
где, если у вас есть 1около-1 структура, index является 0.
В Фортране звонят:
mxGetField(pm, index, 'fieldname')
эквивалентно вызову:
fieldnum = mxGetFieldNumber(pm, 'fieldname') mxGetFieldByNumber(pm, index, fieldnum)
где, если у вас есть 1около-1 структура, index является 1.
mxGetFieldByNumber, mxGetFieldNameByNumber, mxGetFieldNumber, mxGetNumberOfFields, mxIsStruct, mxSetField, mxSetFieldByNumber