exponenta event banner

Приложения C++ MEX

Создание высокопроизводительных функций MATLAB ®, реализованных в современном языке C++

Используйте API C++ MEX для создания функций MATLAB, которые обеспечивают эффективность программ C++ и которые могут получать доступ к внешним функциям и библиотекам из MATLAB. API C++ MEX предоставляет следующие возможности:

  • Использует современные функции программирования C++ и объектно-ориентированные конструкции.

  • Вызывает функции MATLAB из функции MEX.

  • Легко интегрируется в MATLAB, получая входные данные и возвращая результаты в MATLAB.

  • Поддерживает типы данных MATLAB и семантику копирования при записи.

  • Запись многопоточных функций MEX, защищенных от потоков.

  • Выполняет функции C++ MEX вне процесса.

Примечание

Функции в API MATLAB C++ используют matlab::data::Array класс, определенный в API данных MATLAB. Если функции MEX должны выполняться в MATLAB R2017b или ранее, или если вы предпочитаете работать на языке C, то используйте API C Matrix, который работает с mxArray вместо этого структура данных. Для получения дополнительной информации см. Вызов MATLAB из C.

Классы C++

matlab::mex::FunctionБазовый класс для функций C++ MEX
matlab::mex::ArgumentListКонтейнер для входов и выходов функций C++ MEX

Выполнение вне процесса

mexhostСоздание хост-процесса для функции C++ MEX
fevalОценка функции C++ MEX в хост-процессе MEX
matlab.mex.MexHostВнепроцессный хост для выполнения функции C++ MEX

Темы

Начало создания функций C++ MEX

Функции C++ MEX

Файлы MEX реализуют функции MATLAB, написанные на языке C++.

Создание исходного файла C++ MEX

Вот как создать базовую функцию C++ MEX.

Настройка и построение MEX-файлов

Построить программы C++ MEX

Создавайте приложения MEX на различных платформах.

Протестируйте среду сборки

Протестируйте среду сборки с помощью предварительно определенного файла C++ MEX.

C++ MEX API

Используйте функции C++ 11 и C++ Engine API для реализации функций MEX.

Проектирование функций C++ MEX

Структура функции C++ MEX

Реализация класса, который переопределяет оператор вызова функции () для создания объекта функтора.

Избегайте копий массивов в функциях MEX

Методы предотвращения создания копий больших массивов для сокращения использования памяти и повышения скорости выполнения.

Управление внешними ресурсами из функций MEX

Настройка MexFunction для лучшей обработки ресурсов, используемых функцией MEX.

Обработка входов и выходов

Проверьте размер и тип входов и просмотрите сообщения об ошибках в MATLAB.

Отображение выходных данных в окне команд MATLAB

Функции MEX могут выводиться в окне команд MATLAB.

Выполнение асинхронных запросов с помощью mexCallMATLAB

Поведение при обратном вызове MATLAB с помощью async запрос, как matlab::engine::MATLABEngine::fevalAsync.

Типы данных MATLAB в функциях MEX

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

Массивы ячеек и структур позволяют записывать содержимое массива без копирования всего массива.

Типы данных для передачи данных функции MEX

Определите правильные типы данных для передачи данных между функциями MATLAB и MEX.

Вызов функций MATLAB

Вызов функций MATLAB из функций MEX

Вызовите функции MATLAB, передавая аргументы из и возвращая аргументы функции MEX.

Исключения захвата в функции MEX

Исключения catch в функции MEX.

Выполнение инструкций MATLAB из функции MEX

Выполните инструкции MATLAB для создания переменных в рабочей области вызывающего абонента.

Отдельные потоки и процессы

Вызов MATLAB из отдельных потоков в функции MEX

Функции MEX могут вызывать MATLAB из пользовательских потоков с помощью асинхронного API C++ Engine.

Внепроцессное выполнение функций C++ MEX

Выполните функции C++ MEX в процессах, которые отделены от процесса MATLAB.

Доступ к переменным MATLAB

Установка и получение переменных MATLAB из MEX

Поместите переменные в или получите переменные из базы MATLAB и глобальных рабочих областей.

Объекты MATLAB в функциях MEX

Передача объектов MATLAB в функции MEX.

Использование функций MEX для методов классов MATLAB

Для реализации методов для классов MATLAB можно использовать функции MEX.

Связанная информация