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