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

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

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

| | |

Похожие темы