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

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

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

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

Базовый элемент кода C++ Engine

Добавьте заголовочные файлы для движка 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);

См. также

|

Похожие темы