Массив структур 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