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