Можно соединить механизм C++ с разделяемыми сеансами MATLAB®, которые работают на локальной машине. Соединяться с разделяемым сеансом работы с MATLAB:
Запустите MATLAB как сеанс совместной работы или сделайте совместно использованное использование процесса рабочего MATLAB matlab.engine.shareEngine Функция MATLAB.
Найдите имена сеансов совместной работы MATLAB с помощью matlab::engine::findMATLAB или matlab::engine::findMATLABAsync.
Передайте matlab::engine::String содержа имя разделяемого сеанса работы с MATLAB к matlab::engine::connectMATLAB или matlab::engine::connectMATLABAsync функция членства. Эти функции соединяют механизм C++ с сеансом совместной работы.
Если вы не задаете имя разделяемого сеанса работы с MATLAB при вызове matlab::engine::connectMATLAB или matlab::engine::connectMATLABAsync, механизм использует первый разделяемый созданный сеанс работы с MATLAB. Если нет никаких разделяемых доступных сеансов работы с MATLAB, механизм создает разделяемый сеанс работы с MATLAB и подключения к этому сеансу.
Для получения информации о том, как установить и создать программы механизма C++, видит Сборку Программы Engine C++.
Этот пример кода соединяется с первым разделяемым найденным сеансом работы с MATLAB.
#include "MatlabEngine.hpp"
void syncConnect() {
using namespace matlab::engine;
// Connect to shared MATLAB session
std::unique_ptr<MATLABEngine> matlabPtr = connectMATLAB();
}Этот пример кода соединяется с первым разделяемым сеансом работы с MATLAB, найденным асинхронно.
#include "MatlabEngine.hpp"
void asyncConnect() {
using namespace matlab::engine;
// Find and connect to shared MATLAB session
FutureResult<std::unique_ptr<MATLABEngine>> futureMATLAB = connectMATLABAsync();
...
std::unique_ptr<MATLABEngine> matlabPtr = futureMATLAB.get();
}Можно задать имя разделяемого сеанса работы с MATLAB, когда вы выполняете matlab.engine.shareEngine Функция MATLAB. Выполнение так избавляет от необходимости использовать matlab::engine::findMATLAB или matlab::engine::findMATLABAsync найти имя.
Например, запустите MATLAB и назовите сеанс совместной работы myMatlabEngine.
matlab -r "matlab.engine.shareEngine('myMatlabEngine')"Этот пример кода соединяется с сеансом работы с MATLAB под названием myMatlabEngine с C++.
Запустите именованный сеанс работы с MATLAB прежде, чем соединиться из Кода С++.
#include "MatlabEngine.hpp"
void connectToML() {
using namespace matlab::engine;
// Connect to named shared MATLAB session started as:
// matlab -r "matlab.engine.shareEngine('myMatlabEngine')"
std::unique_ptr<MATLABEngine> matlabPtr = connectMATLAB(u"myMatlabEngine");
}Чтобы соединиться с именованным сеансом совместной работы MATLAB, используйте matlab::engine::findMATLAB или matlab::engine::findMATLABAsync найти имена всех доступных именованных сеансов совместной работы MATLAB.
Этот пример кода пытается найти сеанс совместной работы MATLAB под названием myMatlabEngine и подключения к нему, если сеанс найден.
void findNConnect() {
using namespace matlab::engine;
// Find and connect to shared MATLAB session
std::unique_ptr<MATLABEngine> matlabPtr;
std::vector<String> names = findMATLAB();
std::vector<String>::iterator it;
it = std::find(names.begin(), names.end(), u"myMatlabEngine");
if (it != names.end()) {
matlabPtr = connectMATLAB(*it);
}
// Determine if engine connected
if (matlabPtr){
matlab::data::ArrayFactory factory;
matlab::data::CharArray arg = factory.createCharArray("-release");
matlab::data::CharArray version = matlabPtr->feval(u"version", arg);
std::cout << "Connected to: " << version.toAscii() << std::endl;
}
else {
std::cout << "myMatlabEngine not found" << std::endl;
}
}matlab.engine.shareEngine | matlab::engine::connectMATLAB | matlab::engine::connectMATLABAsync | matlab::engine::findMATLAB | matlab::engine::findMATLABAsync