mxGetFieldByNumber (C and 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. 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:

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