メインコンテンツ

C++ からの MATLAB セッションの開始

C++ 用の MATLAB エンジン API を使用して、C++ から MATLAB® エンジン セッションを開始できます。

ここに示す例では、C++ プログラムから同期的または非同期的に、インプロセスまたはアウトプロセスで MATLAB エンジン セッションを開始する方法を示します。セッションを開始するには、matlab::engine 名前空間で定義されている次のユーティリティ関数のいずれかを使用します。

設定とビルドの手順については、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 はアウトプロセスで実行されます。modeMATLABApplicationMode::IN_PROCESS に設定して matlab::engine::startMATLAB または matlab::engine::startMATLABAsync を呼び出すことで、MATLAB を C++ アプリケーションと同じプロセスで実行できます。MATLAB を明示的にアウトプロセスで呼び出すには、modeMATLABApplicationMode::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);
}

参考

|

トピック