Массив структур N-D
#include "matrix.h" mxArray *mxCreateStructArray(mwSize ndim, const mwSize *dims, int nfields, const char **fieldnames);
#include "fintrf.h" mwPointer mxCreateStructArray(ndim, dims, nfields, fieldnames) mwSize ndim mwSize dims(ndim) integer*4 nfields character*(*) fieldnames(nfields)
ndim
Количество размерностей. Если вы устанавливаете ndim
быть меньше, чем 2
, mxCreateStructArray
создает двумерный mxArray
.
dims
Массив размерностей. Каждый элемент в массиве размерностей содержит размер массива в той размерности. Например, в C, установка dims[0]
к 5
и dims[1]
к 7
устанавливают 5
-by-7
mxArray
. На Фортране установка dims(1)
к 5
и dims(2)
к 7
устанавливают 5
-by-7
mxArray
. Как правило, массив dims
должен иметь элементы ndim
.
nfields
Количество полей в каждом элементе. Положительное целое число.
имена полей
Список имен полей. Имена полей должны быть допустимыми идентификаторами MATLAB®, что означает, что они не могут быть NULL
или пустой.
Каждое имя поля структуры должно начаться с буквы и является чувствительным к регистру. Остальная часть имени может содержать буквы, цифры и символы подчеркивания. Чтобы определить максимальную длину имени поля, используйте функцию namelengthmax
.
Указатель на созданный mxArray
, в случае успеха. Если неудачный в автономном (нефайл MEX) приложение, возвращает NULL
в C (0
на Фортране). Если неудачный в файле MEX, файл MEX отключает и возвращает управление в посдказку MATLAB. Функция неудачна, когда существует недостаточно свободного пространства "кучи", чтобы создать mxArray
.
Вызовите mxCreateStructArray
, чтобы создать безлюдную структуру mxArray
. Каждый элемент структуры mxArray
содержит то же количество полей (заданный в nfields
). Каждое поле имеет имя; список имен задан в fieldnames
. Структура MATLAB mxArray
концептуально идентична массиву structs
на языке C.
Каждое поле содержит один указатель mxArray
. mxCreateStructArray
инициализирует каждое поле к NULL
в C (0
на Фортране). Вызовите mxSetField
или mxSetFieldByNumber
, чтобы поместить non-NULL
указатель mxArray
в поле.
Когда вы закончите использовать возвращенную структуру mxArray
, вызовите mxDestroyArray
, чтобы исправить его пробел.
Любые запаздывающие одноэлементные размерности, заданные в аргументе dims
, автоматически удалены из полученного массива. Например, если ndim
равняется 5
, и dims
равняется [4 1 7 1 1]
, полученному массиву дают размерности 4
-by-1-by-
7
.
mxDestroyArray
, mxAddField
, mxRemoveField
, mxSetField
, mxSetFieldByNumber
, namelengthmax