Матричный API на C

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

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

Примечание

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

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

Для примеров, использующих эти функции библиотеки, смотрите:

Внимание

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 числовую матрицу
mxCreateNumericArrayN-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Количество элементов в массивах IR, PR и PI
mxSetNzmaxУстановите пространство памяти для ненулевых элементов
mxGetIrРазреженная матрица Массива ir
mxSetIrМассив ir разреженного массива
mxGetJcРазреженный матричный массив JC
mxSetJcМассив JC разреженного массива
mxGetDataЭлементы данных в нечисловых mxArray
mxSetDataУстановите указатель на элементы данных в нечисловых mxArray
mxCreateString1-N массив, инициализированный в указанную строку
mxCreateCharMatrixFromStrings2-D mxChar массив, инициализированный до заданного значения
mxCreateCharArrayN-D- mxChar массив
mxIsCharОпределите, является ли вход mxChar массив
mxGetCharsУказатель на данные символьного массива
mxIsLogicalОпределите, имеет ли mxArray тип mxLogical
mxIsLogicalScalarОпределите, является ли скалярный массив типом mxLogical
mxIsLogicalScalarTrueОпределите, является ли скалярный массив типа mxLogical true
mxClassIDПеречисленное значение, идентифицирующее класс массива
mxCreateLogicalArrayN-D логический массив
mxCreateLogicalMatrix2-D логический массив
mxCreateLogicalScalarСкаляр, логический массив
mxGetLogicalsУказатель на логические данные массива
mxIsClassОпределите, является ли mxArray объектом заданного класса
mxGetClassIDКласс mxArray
mxGetClassNameКласс mxArray как строка
mxSetClassNameМассив структур в MATLAB объектного массива
mxGetPropertyЗначение общественной собственности объекта MATLAB
mxSetPropertyУстановите значение общественной собственности объекта MATLAB
mxCreateStructMatrix2-D массив структур
mxCreateStructArrayN-D массив структур
mxIsStructОпределите, является ли mxArray структурой
mxGetFieldУказатель на значение поля из массива структур, заданный индекс и имя поля
mxSetFieldУстановите значение поля в массиве структур, задайте индекс и имя поля
mxGetNumberOfFieldsКоличество полей в массиве структур
mxGetFieldNameByNumberУказатель на имя поля из массива структур, заданный номер поля
mxGetFieldNumberНомер поля из массива структур, заданное имя поля
mxGetFieldByNumberУказатель на значение поля из массива структур, заданный индекс и номер поля
mxSetFieldByNumberУстановите значение поля в массиве структур, задайте индекс и номер поля
mxAddFieldДобавьте поле в массив структур
mxRemoveFieldУдалите поле из массива структур
mxCreateCellMatrix2-D массивы ячеек
mxCreateCellArrayN-D массив ячеек
mxIsCellОпределите, является ли mxArray массивом ячеек
mxGetCellУказатель на элемент в массиве ячеек
mxSetCellУстановите содержимое массива ячеек

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

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

Преобразование mxArray

расширить все

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

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

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

Утверждает

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

Константы

mxIsInfОпределите, является ли вход бесконечным
mxIsFiniteОпределите, является ли вход конечным
mxIsNaNОпределите, является ли вход NaN (Не число)

Темы

Передайте строки в файле MEX на C

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

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

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

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

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

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

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

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

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

Манипуляции с многомерными числовыми массивами в файлах MEX на C

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