MATLAB® Engine API для C++ позволяет программам C++ взаимодействовать с MATLAB синхронно или асинхронно. Поддерживаемые операции включают:
Запустите MATLAB.
Подключитесь к сеансу совместной работы MATLAB на локальном компьютере.
Вызовите функции MATLAB с входными параметрами, переданными от C++, и выходными переменными, возвращенными от MATLAB.
Выполняйте выражения MATLAB в базовом рабочем пространстве MATLAB.
Передайте переменные из C++ в MATLAB и из MATLAB в C++.
MATLAB Engine API для C++ включен в продукт MATLAB. Полный API см. в Engine API для C++.
MATLAB Engine API для C++ содержит набор файлов заголовков C++ и общих библиотек во время выполнения C. Пространство имен matlab::engine содержит несколько служебных функций и набор классов C++.
Начните использовать MATLAB Engine API для C++, настроив окружение сборки и выполнения. Убедитесь, что установлен поддерживаемый компилятор. Используйте MATLAB mex команда для настройки окружения и создания приложений C++. Можно также настроить IDE для создания приложений C++, использующий Engine API. Для получения информации о том, как это сделать, смотрите Сборка программ C++ Engine.
Engine API поддерживает использование MATLAB Data API. Этот API предоставляет возможность приложениям, работающим вне MATLAB, работать с данными MATLAB. Для получения дополнительной информации об этом API см. MATLAB Data API.
Вот простой код механизма C++, показывающий базовый элемент, используемые для выполнения команды MATLAB. Этот код передает вектор массивов данных в функцию MATLAB, movsum, и возвращает результат. Этот код С++ выполняет эквивалентные эти операторы в MATLAB.
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movsum(A,3,'Endpoints','discard');
Добавьте заголовочные файлы для движка MATLAB и массивов данных MATLAB.
#include "MatlabEngine.hpp" #include "MatlabDataArray.hpp"
Запустите Сеанс работы с MATLAB и получите уникальный указатель на образец.
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
Создайте фабрику массива данных MATLAB, чтобы создать типы данных, используемые matlab::engine::MATLABEngine представители.
matlab::data::ArrayFactory factory;
Задайте вектор массивов данных MATLAB для входных параметров в функцию MATLAB. Каждый аргумент является массивом в векторе.
// Create a vector of MATLAB data arrays for arguments
std::vector<matlab::data::Array> args({
factory.createArray<double>({ 1, 10 }, { 4, 8, 6, -1, -2, -3, -1, 3, 4, 5 }),
factory.createScalar<int32_t>(3),
factory.createCharArray("Endpoints"),
factory.createCharArray("discard")
});Вызов MATLAB movsum функция, использующая MATLABEngine::feval функции представителя. Определите возвращенный результат как массив данных MATLAB соответствующего типа.
// Call MATLAB function with arguments and return results matlab::data::TypedArray<double> result = matlabPtr->feval(u"movsum", args);
matlab::data::ArrayFactory | matlab::engine::MATLABEngine