MEX-функции могут выполнить операторы MATLAB® в рабочей области функции вызова. Оценка операторов в рабочей области функции вызова позволяет MEX-функциям создать или изменить переменные в рабочей области, в которой это выполняется. MEX-функции могут также изменить среду, например, путем изменения текущей папки.
Выражения MATLAB могут получить доступ к любым переменным, которые находятся в осциллографе в рабочей области функции вызова. Если MEX-функция называется от базового рабочего пространства MATLAB, то операторы оценены в контексте той рабочей области.
Чтобы выполнить выражения MATLAB от MEX-функции, используйте MATLAB:: механизм:: MATLABEngine:: функция eval. Используйте eval
, когда вы не должны будете передавать аргументы функции MATLAB или возвращаемые аргументы к MEX-функции.
Передайте выражение MATLAB eval
как std::u16string
. Используйте кодирование литеральной строки UTF-16 u"..."
или служебную функцию 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:\')
addpath
| cd
| mATLABEngine:: MATLABEngine:: | pwd