Числовой массив N-D
#include "matrix.h" mxArray *mxCreateNumericArray(mwSize ndim, const mwSize *dims, mxClassID classid, mxComplexity ComplexFlag);
#include "fintrf.h" mwPointer mxCreateNumericArray(ndim, dims, classid, ComplexFlag) mwSize ndim mwSize dims(ndim) integer*4 classid, ComplexFlag
ndimКоличество размерностей. Если вы задаете значение для ndim, который является меньше чем 2, mxCreateNumericArray автоматически определяет номер размерностей к 2.
dimsМассив размерностей. Каждый элемент в массиве размерностей содержит размер массива в той размерности. Например, в C, установке dims[0] к 5 и dims[1] к 7 устанавливает 5-by-7
mxArray. На Фортране установка dims(1) к 5 и dims(2) к 7 устанавливают 5-by-7
mxArray. Обычно в массиве dims существуют элементы ndim.
classidИдентификатор для класса массива, который определяет путь числовые данные, представлен в памяти. Например, определение mxINT16_CLASS в C заставляет каждую часть числовых данных в mxArray быть представленной как 16-битное целое число со знаком. На Фортране используйте функциональный mxClassIDFromClassName, чтобы получить значение classid на имя класса MATLAB®. Смотрите раздел Description для получения дополнительной информации.
ComplexFlagЕсли mxArray, который вы создаете, должен содержать мнимые данные, установить ComplexFlag на mxCOMPLEX в C (1 на Фортране). В противном случае установите ComplexFlag на mxREAL в C (0 на Фортране).
Указатель на созданный mxArray, в случае успеха. Если неудачный в автономном (нефайл MEX) приложение, возвращает NULL в C (0 на Фортране). Если неудачный в файле MEX, файл MEX отключает и возвращает управление в посдказку MATLAB. Функция неудачна, когда существует недостаточно свободного пространства "кучи", чтобы создать mxArray.
Вызовите mxCreateNumericArray, чтобы создать N-мерный mxArray, в котором все элементы данных имеют тип числовых данных, заданный classid. После создания mxArray mxCreateNumericArray инициализирует все свои действительные элементы данных к 0. Если ComplexFlag равняется mxCOMPLEX в C (1 на Фортране), mxCreateNumericArray также инициализирует все свои элементы мнимых данных к 0. mxCreateNumericArray отличается от mxCreateDoubleMatrix можно следующим образом:
Все элементы данных в mxCreateDoubleMatrix с двойной точностью, числа с плавающей запятой. Элементы данных в mxCreateNumericArray могут быть любым числовым типом, включая различную целочисленную точность.
mxCreateDoubleMatrix может создать двумерные массивы только; mxCreateNumericArray может создать массивы двух или больше размерностей.
mxCreateNumericArray выделяет динамическую память, чтобы сохранить созданный mxArray. Когда вы закончите с созданным mxArray, вызовите mxDestroyArray, чтобы освободить его память.
MATLAB автоматически удаляет любые запаздывающие одноэлементные размерности, заданные в аргументе dims. Например, если ndim равняется 5, и dims равняется [4 1 7 1 1], то полученный массив имеет размерности 4-by-1-by-7.
Следующая таблица показывает значения classid C и типы данных Фортрана, которые эквивалентны классам MATLAB.
|
Имя класса MATLAB |
C значение |
Тип Фортрана |
|---|---|---|
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
См. следующие примеры в matlabroot / extern / examples / refbook.
См. следующие примеры в matlabroot / extern / examples / mx.
mxClassId, mxClassIdFromClassName, mxComplexity, mxDestroyArray, mxCreateUninitNumericArray, mxCreateNumericMatrix