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. 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- 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