Выполните выражения 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:\')

См. также

| | |

Похожие темы