Функции MEX могут выполнять инструкции MATLAB ® в рабочей области вызывающей функции. Операторы оценки в рабочей области вызывающей функции позволяют функциям MEX создавать или изменять переменные в рабочей области, в которой они выполняются. Функции MEX также могут изменять среду, например, изменяя текущую папку.
Операторы MATLAB могут обращаться к любым переменным, находящимся в области действия в рабочей области вызывающей функции. Если функция MEX вызывается из базовой рабочей области MATLAB, то операторы вычисляются в контексте этой рабочей области.
Для выполнения инструкций MATLAB из функции MEX используйте функцию matlab:: engine:: 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:\')addpath | cd | matlab:: двигатель:: MATLABEngine:: feval | pwd