MATLAB® Engine API для C++ позволяет программам C++ взаимодействовать с MATLAB синхронно или асинхронно. Поддерживаемые операции включают:
StartMatlab.
Соединитесь с сеансом совместной работы 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++ путем подготовки среды сборки и среды выполнения. Гарантируйте, что вам установили поддерживаемый компилятор. Используйте команду mex
MATLAB, чтобы установить вашу среду и создать приложения C++. Можно также сконфигурировать IDE, чтобы создать приложения C++, которые используют Engine API. Для получения информации о том, как сделать это, смотрите Сборку Программы Engine C++.
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") });
Вызовите функцию movsum
MATLAB использование функции членства 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