Указатель на значение поля из массива структур, учитывая индекс и полевой номер
#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. index последнего элемента является N-1, где N является числом элементов в массиве. На Фортране первый элемент mxArray имеет index 1. 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