exponenta event banner

Выполнение инструкций MATLAB из функции MEX

Функции 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:\')

См. также

| | |

Связанные темы