Установите элементы комплексных данных в mxDOUBLE_CLASS массив
#include "matrix.h" int mxSetComplexDoubles(mxArray *pa, mxComplexDouble *dt);
Использование mxSetComplexDoubles установить mxComplexDouble данные в заданном массиве.
Весь mxCreate* функции выделяют пространство "кучи", чтобы содержать данные. Поэтому вы обычно не используете эту функцию, чтобы инициализировать элементы массива. Скорее вызовите функцию, чтобы заменить существующие значения на новые значения.
Эта функция не освобождает память выделенный для существующих данных. Чтобы освободить существующую память, вызвать mxFree на указателе, возвращенном mxGetComplexDoubles.
Обратитесь к arrayFillSetPr.c пример в папка, которая копирует существующие данные в matlabroot/extern/examples/refbookmxArray. Данные в примере заданы как mxDouble. Можно использовать этот пример в качестве шаблона для любого числового типа C, включая комплекс. Предположим, что у вас есть массив с этими значениями.
2.0 + 3.0i 3.0 + 4.0i
Изменить этот пример для комплексного mxDouble данные:
Объявите переменные данных
mxComplexDouble *dynamicData;
const mxComplexDouble data[] = {{2.0, 3.0}, {3.0, 4.0}};Вызвать mxCreateNumericMatrix с mxCOMPLEX аргумент
Замена mxSetDoubles с mxSetComplexDoubles помещать массив C в mxArray
Эта функция доступна в чередованном комплексном API. Создавать myMexFile.c с помощью этой функции введите:
mex -R2018a myMexFile.c