Оцените операторы MATLAB® с C++ с помощью MATLABEngine::eval
и MATLABEngine::evalAsync
функции членства. Эти функции членства похожи на eval
MATLAB функция.
MATLABEngine::eval
и MATLABEngine::evalAsync
функции не возвращают результаты оценки выражения MATLAB.
Используйте MATLABEngine::eval
и MATLABEngine::evalAsync
когда вы не должны передавать аргументы с C++ или возвращаемых значений на C++. Операторы, которые вы выполняете с этими функциями, могут переменные доступа в рабочем пространстве MATLAB.
Вот некоторые вещи знать об оценке операторов в MATLAB.
Эти функции передают операторы MATLAB в как matlab::engine::String
.
Преобразуйте std::string
к matlab::engine::String
использование u"…"
литерал или служебная функция matlab::engine::convertUTF8StringToUTF16String
.
Входные параметры, названные в строке, должны существовать в рабочем пространстве MATLAB.
Можно присвоить результаты оценки к переменным в строке оператора. Переменная, которую вы присваиваете в операторе, создается в базовом рабочем пространстве MATLAB.
MATLAB не требует, чтобы вы инициализировали переменные, созданные в операторе.
Можно сохранить стандартный вывод от функций MATLAB и сообщений об ошибке в потоковых буферах.
Этот пример кода использует MATLABEngine::eval
оценивать серию выражений MATLAB. Эти операторы:
Вот эквивалентный код MATLAB.
[X, Y] = meshgrid(-2:0.2:2); Z = X .* exp(-X.^2 - Y.^2); surf(Z) print('SurfaceGraph', '-djpeg') currentFolder = pwd;
Вот Код С++, чтобы выполнить эти операторы в MATLAB.
#include "MatlabDataArray.hpp" #include "MatlabEngine.hpp" #include <iostream>
void evalSurfaceGraph() { // Evaluate functions in MATLAB using namespace matlab::engine; // Start MATLAB engine synchronously std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB(); // Evaluate commands in MATLAB matlabPtr->eval(u"[X, Y] = meshgrid(-2:0.2:2);"); matlabPtr->eval(u"Z = X .* exp(-X.^2 - Y.^2);"); matlabPtr->eval(u"surf(Z)"); matlabPtr->eval(u"print('SurfaceGraph', '-djpeg')"); matlabPtr->eval(u"currentFolder = pwd;"); // Get the name of the folder containing the jpeg file matlab::data::CharArray currentFolder = matlabPtr->getVariable(u"currentFolder"); std::cout << "SurfaceGraph.jpg written to this folder: " << currentFolder.toAscii() << std::endl; }
Для получения информации о том, как установить и создать программы механизма C++, видит Сборку Программы Engine C++.