exponenta event banner

mxGetStartStartNumber (C и Fortran)

Указатель на значение поля из массива структуры, заданный индекс и номер поля

Синтаксис C

#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 - количество полей.

В Fortran первое поле в каждом элементе имеет номер поля 1, второе поле имеет номер поля 2и так далее. Последнее поле имеет номер поля N, где N - количество полей.

Прибыль

Указатель на mxArray в указанном поле для требуемого элемента при успешном выполнении. Прибыль NULL в C (0 в Fortran), если передан недопустимый аргумент или если указанному полю не присвоено значение. Общие причины отказа:

  • Указание указателя массива pm которая не указывает на структуру mxArray. Звонить mxIsStruct чтобы определить, pm указывает на структуру mxArray.

  • Указание index к элементу за пределами границ mxArray. Например, задана структура mxArray который содержит 10 элементов, нельзя указать index больше, чем 9 в C (10 в Фортране).

  • Указание несуществующего номера поля. Звонить mxGetFieldNumber для определения номера поля, соответствующего заданному имени поля.

Описание

Звонить mxGetFieldByNumber для получения значения, удерживаемого в указанном fieldnumber в индексированном элементе.

Не звонить mxDestroyArray на mxArray возвращено mxGetFieldByNumber функция.

Примечание

Входы в MEX-файл доступны только для чтения mxArrays. Не изменяйте входные данные. Используя mxSetCell* или mxSetField* функция изменения ячеек или полей аргумента MATLAB ® приводит к непредсказуемым результатам.

В C, если у вас есть 1около-1 структура, затем вызов:

mxGetField(pa, index, "field_name");

эквивалентно вызову:

field_num = mxGetFieldNumber(pa, "field_name");
mxGetFieldByNumber(pa, index, field_num);

где index является 0.

В Фортране, если у вас есть 1около-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:

Представлен до R2006a