exponenta event banner

C Matrix API

Пишите программы C/C + +, которые работают с MATLAB ®mxArray структура данных

Для записи C-программ, работающих с MATLAB R2017b или более ранней версии, используйте функции в C Matrix API. Эти функции работают с mxArray и используются для построения функций C MEX или приложений механизма C.

Примечание

MathWorks рекомендует по возможности выбирать приложения C++ over C. Для получения дополнительной информации см. раздел Вызов библиотеки MATLAB из библиотек C++ или C++ в MATLAB для непосредственного вызова функциональности библиотеки C++ из MATLAB.

Существует две версии C Matrix API.

Примеры использования этих библиотечных функций см. в разделе:

Внимание

C Matrix API несовместим с MATLAB Data API, который поддерживает современные функции C++. Нельзя использовать функции C Matrix API с функциями в приложениях C++ MEX или MATLAB Engine API для C++.

Типы данных C

mxArrayТип C для массива MATLAB
mwSizeТип C для значений размера mxArray
mwIndexТип C для значений индекса mxArray
mwSignedIndexЦелочисленный тип C со знаком для значений размера mxArray
mxCharТип для строкового массива
mxLogicalТип для логического массива
mxComplexityФлаг, указывающий, содержит ли массив мнимые компоненты

Атрибуты mxArray

mxIsNumericОпределите, является ли mxArray числовым
mxIsComplexОпределение сложности данных
mxGetNumberOfDimensionsКоличество измерений в mxArray
mxGetElementSizeКоличество байт, необходимое для хранения каждого элемента данных
mxGetDimensionsУказатель на массив размеров
mxSetDimensionsИзменение количества размеров и размера каждого размера
mxGetNumberOfElementsКоличество элементов в числовом массиве mxArray
mxCalcSingleSubscriptСмещение от первого элемента к требуемому элементу
mxGetMКоличество строк в mxArray
mxSetMЗадать количество строк в mxArray
mxGetNКоличество столбцов в mxArray
mxSetNЗадать количество столбцов в mxArray
mxIsEmptyОпределите, пуст ли mxArray
mxIsFromGlobalWSОпределите, был ли mxArray скопирован из глобальной рабочей области MATLAB

Создание, запрос и доступ к типам данных

развернуть все

mxCreateDoubleMatrix2-D, массив с двойной точностью, с плавающей запятой
mxCreateDoubleScalarСкалярный массив с двойной точностью, инициализированный до указанного значения
mxCreateNumericMatrix2-D числовая матрица
mxCreateNumericArrayЧисловой массив N-D
mxCreateUninitNumericMatrixНеинициализированная 2-D числовая матрица
mxCreateUninitNumericArrayНеинициализированный цифровой массив N-D
mxIsScalarОпределите, является ли массив скалярным массивом
mxGetScalarРеальная составляющая первого элемента данных в массиве
mxIsDoubleОпределите, представляет ли mxArray данные в виде чисел с двойной точностью и плавающей запятой
mxGetDoublesРеальные элементы данных в mxDOUBLE_CLASS множество
mxSetDoublesУстановка реальных элементов данных в mxDOUBLE_CLASS множество
mxIsSingleОпределите, представляет ли mxArray данные в виде чисел с одинарной точностью и плавающей запятой
mxGetSinglesРеальные элементы данных в mxSINGLE_CLASS множество
mxSetSinglesУстановка реальных элементов данных в mxSINGLE_CLASS множество
mxGetPr(Не рекомендуется) Элементы реальных данных в mxDOUBLE_CLASS множество
mxSetPr(Не рекомендуется) Установка реальных элементов данных в mxDOUBLE_CLASS множество
mxIsInt8Определите, представляет ли mxArray данные как 8-битные целые числа со знаком
mxGetInt8sРеальные элементы данных в mxINT8_CLASS множество
mxSetInt8sУстановка реальных элементов данных в mxINT8_CLASS множество
mxIsUint8Определите, представляет ли mxArray данные как беззнаковые 8-битовые целые числа
mxGetUint8sРеальные элементы данных в mxUINT8_CLASS множество
mxSetUint8sУстановка реальных элементов данных в mxUINT8_CLASS множество
mxIsInt16Определите, представляет ли mxArray данные как подписанные 16-разрядные целые числа
mxGetInt16sРеальные элементы данных в mxINT16_CLASS множество
mxSetInt16sУстановка реальных элементов данных в mxINT16_CLASS множество
mxIsUint16Определите, представляет ли mxArray данные как неподписанные 16-разрядные целые числа
mxGetUint16sРеальные элементы данных в mxUINT16_CLASS множество
mxSetUint16sУстановка реальных элементов данных в mxUINT16_CLASS множество
mxIsInt32Определите, представляет ли mxArray данные в виде подписанных 32-разрядных целых чисел
mxGetInt32sРеальные элементы данных в mxINT32_CLASS множество
mxSetInt32sУстановка реальных элементов данных в mxINT32_CLASS множество
mxIsUint32Определите, представляет ли mxArray данные как беззнаковые 32-разрядные целые числа
mxGetUint32sРеальные элементы данных в mxUINT32_CLASS множество
mxSetUint32sУстановка реальных элементов данных в mxUINT32_CLASS множество
mxIsInt64Определите, представляет ли mxArray данные как подписанные 64-разрядные целые числа
mxGetInt64sРеальные элементы данных в mxINT64_CLASS множество
mxSetInt64sУстановка элементов данных в mxINT64_CLASS множество
mxIsUint64Определите, представляет ли mxArray данные как беззнаковые 64-разрядные целые числа
mxGetUint64sРеальные элементы данных в mxUINT64_CLASS множество
mxSetUint64sУстановка реальных элементов данных в mxUINT64_CLASS множество
mxGetComplexDoublesСложные элементы данных в mxDOUBLE_CLASS множество
mxSetComplexDoublesУстановка сложных элементов данных в mxDOUBLE_CLASS множество
mxGetComplexSinglesСложные элементы данных в mxSINGLE_CLASS множество
mxSetComplexSinglesУстановка сложных элементов данных в mxSINGLE_CLASS множество
mxGetImagDataМнимые элементы данных в числовом виде mxArray
mxSetImagDataУстановка элементов мнимых данных в числовом виде mxArray
mxGetPi(Не рекомендуется) Воображаемые элементы данных в mxDOUBLE_CLASS множество
mxSetPi(Не рекомендуется) Установка элементов мнимых данных в mxDOUBLE_CLASS множество
mxGetComplexInt8sСложные элементы данных в mxINT8_CLASS множество
mxSetComplexInt8sУстановка сложных элементов данных в mxINT8_CLASS множество
mxGetComplexUint8sСложные элементы данных в mxUINT8_CLASS множество
mxSetComplexUint8sУстановка сложных элементов данных в mxUINT8_CLASS множество
mxGetComplexInt16sСложные элементы данных в mxINT16_CLASS множество
mxSetComplexInt16sУстановка сложных элементов данных в mxINT16_CLASS множество
mxGetComplexUint16sСложные элементы данных в mxUINT16_CLASS множество
mxSetComplexUint16sУстановка сложных элементов данных в mxUINT16_CLASS множество
mxGetComplexInt32sСложные элементы данных в mxINT32_CLASS множество
mxSetComplexInt32sУстановка сложных элементов данных в mxINT32_CLASS множество
mxGetComplexUint32sСложные элементы данных в mxUINT32_CLASS множество
mxSetComplexUint32sУстановка сложных элементов данных в mxUINT32_CLASS множество
mxGetComplexInt64sСложные элементы данных в mxINT64_CLASS множество
mxSetComplexInt64sУстановка сложных элементов данных в mxINT64_CLASS множество
mxGetComplexUint64sСложные элементы данных в mxUINT64_CLASS множество
mxSetComplexUint64sУстановка сложных элементов данных в mxUINT64_CLASS множество
mxGetPi(Не рекомендуется) Воображаемые элементы данных в mxDOUBLE_CLASS множество
mxSetPi(Не рекомендуется) Установка элементов мнимых данных в mxDOUBLE_CLASS множество
mxCreateSparse2-D разреженный массив
mxCreateSparseLogicalMatrix2-D, разреженный, логический массив
mxIsSparseОпределите, является ли ввод разреженным mxArray
mxGetNzmaxКоличество элементов в массивах ИК, PR и PI
mxSetNzmaxЗадать пространство хранения для ненулевых элементов
mxGetIrРазреженная матрица ИК-массива
mxSetIrИК-массив разреженного массива
mxGetJcМассив JC разреженной матрицы
mxSetJcМассив JC разреженного массива
mxGetDataЭлементы данных в нечисловых mxArray
mxSetDataУстановка указателя на элементы данных в нечисловом формате mxArray
mxCreateStringМассив 1-N инициализирован в указанной строке
mxCreateCharMatrixFromStrings2-D mxChar массив инициализирован до указанного значения
mxCreateCharArrayN-D mxChar множество
mxIsCharОпределите, является ли ввод mxChar множество
mxGetCharsУказатель на данные символьного массива
mxIsLogicalОпределение типа mxArray mxLogical
mxIsLogicalScalarОпределите, имеет ли скалярный массив тип mxLogical
mxIsLogicalScalarTrueОпределите, имеет ли скалярный массив типа mxLogical значение true
mxClassIDПеречисляемое значение, идентифицирующее класс массива
mxCreateLogicalArrayЛогический массив N-D
mxCreateLogicalMatrix2-D логический массив
mxCreateLogicalScalarСкалярный логический массив
mxGetLogicalsУказатель на данные логического массива
mxIsClassОпределите, является ли объект mxArray объектом указанного класса
mxGetClassIDКласс mxArray
mxGetClassNameКласс mxArray в виде строки
mxSetClassNameСтруктурный массив в массив объектов MATLAB
mxGetPropertyЗначение публичного свойства объекта MATLAB
mxSetPropertyЗадать значение общего свойства объекта MATLAB
mxCreateStructMatrix2-D структурный массив
mxCreateStructArrayМассив структуры N-D
mxIsStructОпределите, является ли mxArray структурой
mxGetFieldУказатель на значение поля из массива структуры, заданный индекс и имя поля
mxSetFieldЗадать значение поля в массиве структуры, заданный индекс и имя поля
mxGetNumberOfFieldsКоличество полей в массиве структуры
mxGetFieldNameByNumberУказатель на имя поля из массива структуры, указанный номер поля
mxGetFieldNumberНомер поля из массива структуры, указанное имя поля
mxGetFieldByNumberУказатель на значение поля из массива структуры, заданный индекс и номер поля
mxSetFieldByNumberЗадать значение поля в массиве структуры, заданный индекс и номер поля
mxAddFieldДобавить поле в массив структуры
mxRemoveFieldУдалить поле из массива структуры
mxCreateCellMatrix2-D массив ячеек
mxCreateCellArrayМассив ячеек N-D
mxIsCellОпределите, является ли mxArray массивом ячеек
mxGetCellУказатель на элемент в массиве ячеек
mxSetCellЗадать содержимое массива ячеек

Удаление и дублирование mxArray

mxDestroyArrayСвободная динамическая память, выделенная функциями MXCREATE *
mxDuplicateArrayСоздание глубокой копии массива

Преобразовать массив mxArray

развернуть все

mxMakeArrayComplexПреобразовать вещественное mxArray к сложным, сохраняющим реальные данные
mxMakeArrayRealПреобразовать комплекс mxArray к реальным, с сохранением реальных данных
mxArrayToStringМассив в строку
mxArrayToUTF8StringМассив в строку в кодировке UTF-8
mxGetStringmxChar массив в строку стиля C или Fortran character множество
mxSetClassNameСтруктурный массив в массив объектов MATLAB

Управление памятью данных

mxCallocВыделение динамической памяти для массива, инициализированного в 0, с помощью диспетчера памяти MATLAB
mxMallocВыделение неинициализированной динамической памяти с помощью диспетчера памяти MATLAB
mxReallocПерераспределение динамической памяти с помощью диспетчера памяти MATLAB
mxFreeСвободная динамическая память, выделенная функциями mxCalloc, mxMalloc, mxRealloc, mxArrayToString или mxArrayToUTF8String

Утверждает

mxAssertПроверка значения утверждения в целях отладки
mxAssertSПроверка значения утверждения без печати текста утверждения

Константы

mxIsInfОпределить, является ли ввод бесконечным
mxIsFiniteОпределить, является ли ввод конечным
mxIsNaNОпределите, является ли ввод NaN (Not-a-Number)

Темы

Строки передачи в файле C MEX

В этом примере показано, как передавать строки функции MEX, построенной с помощью C Matrix API.

Передача скалярных значений в файле C MEX

В этом примере показано, как записать файл MEX, передающий скалярные значения.

Обработка разреженных массивов в файле C MEX

В этом примере показано, как заполнить разреженную матрицу с помощью C Matrix API.

Обработка данных 8-, 16-, 32- и 64-Bit в файле C MEX

В этом примере показано, как использовать неподписанные 16-битные целые числа в файле MEX с помощью C Matrix API.

Передача структур и массивов ячеек в файле C MEX

В этом примере показано, как передавать структуры и массивы ячеек в MEX-файлы, созданные с помощью C Matrix API.

Управление многомерными числовыми массивами в файлах C MEX

Вы можете управлять многомерными числовыми массивами, используя типизированные функции доступа к данным, такие как mxGetDoubles и mxGetComplexDoubles.