Установите элементы комплексных данных в массиве mxDOUBLE_CLASS
#include "matrix.h" int mxSetComplexDoubles(mxArray *pa, mxComplexDouble *dt);
Используйте mxSetComplexDoubles
, чтобы установить данные mxComplexDouble
в заданном массиве.
Весь mxCreate
* функции выделяет пространство "кучи", чтобы содержать данные. Поэтому вы обычно не используете эту функцию, чтобы инициализировать элементы массива. Скорее вызовите функцию, чтобы заменить существующие значения на новые значения.
Эта функция не освобождает память выделенный для существующих данных. Чтобы освободить существующую память, вызовите mxFree
на указателе, возвращенном mxGetComplexDoubles
.
Обратитесь к примеру arrayFillSetPr.c
в папке
, которая копирует существующие данные в matlabroot/extern/examples/refbook
mxArray
. Данные в примере заданы как 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