C++ からの MATLAB セッションの開始
C++ 用の MATLAB エンジン API を使用して、C++ から MATLAB® エンジン セッションを開始できます。
ここに示す例では、C++ プログラムから同期的または非同期的に、インプロセスまたはアウトプロセスで MATLAB エンジン セッションを開始する方法を示します。セッションを開始するには、matlab::engine 名前空間で定義されている次のユーティリティ関数のいずれかを使用します。
matlab::engine::startMATLAB— MATLAB セッションを同期的に開始する。matlab::engine::startMATLABAsync— MATLAB セッションを非同期的に開始する。
設定とビルドの手順については、C++ エンジン アプリケーションをビルドするための要件を参照してください。
MATLAB セッションの同期的な開始
MATLAB を C++ から同期的にアウトプロセスで起動します。startMATLAB から MATLABEngine インスタンスへの一意のポインターが返されます。
#include "MatlabEngine.hpp"
void startMLSession() {
using namespace matlab::engine;
// Start MATLAB engine synchronously
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
}インプロセスでの MATLAB セッションの開始
既定では、MATLAB はアウトプロセスで実行されます。mode を MATLABApplicationMode::IN_PROCESS に設定して matlab::engine::startMATLAB または matlab::engine::startMATLABAsync を呼び出すことで、MATLAB を C++ アプリケーションと同じプロセスで実行できます。MATLAB を明示的にアウトプロセスで呼び出すには、mode を MATLABApplicationMode::OUT_OF_PROCESS に設定します。mode の詳細については、matlab::engine::startMATLAB Parameters を参照してください。 (R2026a 以降)
たとえば、MATLAB を C++ からインプロセスで起動します。
#include "MatlabEngine.hpp"
void startMLSession() {
using namespace matlab::engine;
// Start MATLAB engine in-process
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB(MATLABApplicationMode::IN_PROCESS);
}MATLAB セッションの非同期的な開始
MATLAB を C++ から非同期的にアウトプロセスで起動します。FutureResult::get を使用して、startMATLABAsync から返される MATLABEngine インスタンスへの一意のポインターを取得します。
#include "MatlabEngine.hpp"
void startMLSessionAsync() {
using namespace matlab::engine;
// Start MATLAB engine asynchronously out-of-process
FutureResult<std::unique_ptr<MATLABEngine>> matlabFuture = startMATLABAsync();
std::unique_ptr<MATLABEngine> matlabPtr = matlabFuture.get();
}起動オプションを使用した MATLAB の起動
サポートされる MATLAB 起動オプションを使用して、MATLAB セッションを開始できます。一般的な起動オプションについては、よく使われる起動オプションを参照してください。エンジンでサポートされるオプションについては、matlab::engine::MATLABEngine を参照してください。
この例では、-r 起動オプションと matlab.engine.ShareEngine オプションを使用して MATLAB を起動します。各オプションを要素として含むベクトルを作成します。
#include "MatlabEngine.hpp"
void startMLOptions() {
using namespace matlab::engine;
// Create an option vector with the
// startup option -r and the
// matlab.engine.ShareEngine option
std::vector<String> optionVec;
optionVec.push_back(u"-r");
optionVec.push_back(u"matlab.engine.shareEngine");
// Start MATLAB out-of-process
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB(optionVec);
}参考
matlab::engine::startMATLAB | matlab::engine::startMATLABAsync