API MATLAB ® Engine для C++ позволяет программам C++ взаимодействовать с MATLAB синхронно или асинхронно. Поддерживаемые операции:
Запустите MATLAB.
Подключение к общему сеансу MATLAB на локальном компьютере.
Вызовите функции MATLAB с входными аргументами, передаваемыми из C++, и выходные переменные, возвращаемые из MATLAB.
Вычислите операторы MATLAB в базовой рабочей области MATLAB.
Передайте переменные из C++ в MATLAB и из MATLAB в C++.
API MATLAB Engine для C++ входит в состав продукта MATLAB. Полный API см. в разделе C++ Engine API.
API MATLAB Engine для C++ содержит набор заголовочных файлов C++ и общих библиотек среды выполнения C. Пространство имен matlab::engine содержит несколько служебных функций и набор классов C++.
Начните использовать API MATLAB Engine для C++, настроив среду построения и выполнения. Убедитесь, что установлен поддерживаемый компилятор. Использование MATLAB mex для настройки среды и создания приложений C++. Можно также настроить среду IDE для создания приложений C++, использующих API Engine. Сведения о том, как это сделать, см. в разделе Сборка программ C++ Engine.
API Engine поддерживает использование API данных MATLAB. Этот API позволяет приложениям, работающим вне MATLAB, работать с данными MATLAB. Дополнительные сведения об этом API см. в разделе MATLAB Data API.
Ниже приведен простой код механизма C++, показывающий основные элементы, используемые для выполнения команды MATLAB. Этот код передает вектор массивов данных функции MATLAB, movsumи возвращает результат. Этот код C++ выполняет эквивалент этих операторов в MATLAB.
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movsum(A,3,'Endpoints','discard');
Добавление заголовочных файлов для массивов данных MATLAB engine и 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