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

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

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

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

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

  • Плавная интеграция с MATLAB, получение входов и возврат результатов в MATLAB.

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

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

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

Примечание

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

Классы C++

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

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

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

Темы

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

C++ MEX-функции

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

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

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

Setup и создание файлов MEX

Создайте программы MEX на C++

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

Проверка собственной среды сборки

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

C++ MEX API

Используйте функции C++ 11 и API C++ Engine для реализации 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-функцию.

Catch Исключения в MEX-функция

Выхватить исключения, выданные в 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

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

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