exponenta event banner

Введение в API Engine для C++

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++ Engine

Ниже приведен простой код механизма C++, показывающий основные элементы, используемые для выполнения команды MATLAB. Этот код передает вектор массивов данных функции MATLAB, movsumи возвращает результат. Этот код C++ выполняет эквивалент этих операторов в MATLAB.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3,'Endpoints','discard');

Основные элементы кода механизма C++

Добавление заголовочных файлов для массивов данных 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);

См. также

|

Связанные темы