Выполните операторы MATLAB от MEX-функции

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:\')

Смотрите также

| | |

Похожие темы

Была ли эта тема полезной?