MEX-функции могут выполнить MATLAB® операторы в рабочей области функции вызова. Оценка операторов в рабочей области функции вызова позволяет MEX-функциям создать или изменить переменные в рабочей области, в которой это выполняется. MEX-функции могут также изменить среду, например, путем изменения текущей папки.
Выражения MATLAB могут получить доступ к любым переменным, которые находятся в осциллографе в рабочей области функции вызова. Если MEX-функция называется от базового рабочего пространства MATLAB, то операторы оценены в контексте той рабочей области.
Чтобы выполнить выражения MATLAB от MEX-функции, используйте MATLAB:: механизм:: MATLABEngine:: функция eval. Используйте eval
когда вы не должны передавать аргументы функции MATLAB или возвращаемые аргументы к MEX-функции.
Передайте выражение MATLAB eval
как std::u16string
. Используйте u"..."
Кодирование литеральной строки UTF-16 или служебная функция matlab::engine::convertUTF8StringToUTF16String
преобразовывать std::string
к std::u16string
. Функции и входные параметры, названные в строке, должны существовать в рабочей области вызывающей стороны.
Этот фрагмент кода показывает, как использовать eval
выполнить выражения MATLAB. Эти операторы добавляют текущую папку в путь MATLAB и затем изменяют MATLAB рабочая папка в ту, сопоставленную, чтобы управлять H
в системе Windows. Отметьте Escape (" \") символ перед символом обратной косой черты.
std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine(); matlabPtr->eval(u"currentFolder = pwd;"); matlabPtr->eval(u"addpath(currentFolder);"); matlabPtr->eval(u"cd('H:\\')");
Вот эквивалентный код MATLAB.
currentFolder = pwd;
addpath(currentFolder);
cd('H:\')
mATLABEngine:: MATLABEngine:: | addpath
| pwd
| cd