Main Content

C++ エンジン プログラムの要素

C++ 用の MATLAB® エンジン API を使用すると、C++ プログラムで MATLAB の同期的または非同期的な操作が行われるようになります。サポートされている操作は、以下のとおりです。

  • MATLAB を起動する。

  • ローカル マシンの共有 MATLAB セッションに同期的に接続する。

  • C++ から渡される入力引数と MATLAB から返される出力変数を使って MATLAB 関数を呼び出す。

  • MATLAB ベース ワークスペースで MATLAB ステートメントを評価する。

  • 変数を C++ から MATLAB、および MATLAB から C++ に渡す。

    C++ と MATLAB の間で受け渡しされるデータ配列のサイズは 2 GB に制限されています。この制限は、プロセス間で渡されるデータとサポート情報に適用されます。

コーディング環境

C++ 用の MATLAB エンジン API は MATLAB 製品に含まれています。完全な API については、C++ エンジン APIを参照してください。この API は、C++ 用の MATLAB データ APIを使用して MATLAB データを操作します。

API を使用する前に、ビルドおよびランタイム環境を設定します。詳細については、C++ エンジン プログラムのビルド要件を参照してください。

コーディング パターン

この例では、以下の MATLAB ステートメントと等価の内容を実行するための C ++ コードの作成方法を説明します。

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3,"Endpoints","discard");

この C++ コードは、データ配列のベクトルを MATLAB movsum 関数に渡し、結果を返します。

 C++ エンジン コード

ヘッダー ファイルを含める

MATLAB エンジンと MATLAB データ配列のヘッダー ファイルを追加します。

#include "MatlabEngine.hpp"
#include "MatlabDataArray.hpp"

MATLAB セッションの開始

MATLAB セッションを開始し、インスタンスへの一意のポインターを取得します。

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();

MATLAB データ配列の作成

MATLAB データ配列 factory を作成して matlab::engine::MATLABEngine のメンバー関数で使用されるデータ型を作成します。

matlab::data::ArrayFactory factory;

データ配列の初期化

MATLAB 関数の入力引数に対する MATLAB データ配列のベクトルを作成します。それぞれの引数はベクトルの配列です。

// Create a vector of MATLAB data arrays for arguments    
std::vector<matlab::data::Array> args({
    factory.createArray<double>({ 1, 10 }, { 4, 8, 6, -1, -2, -3, -1, 3, 4, 5 }),
    factory.createScalar<int32_t>(3),
    factory.createCharArray("Endpoints"),
    factory.createCharArray("discard")
});

MATLAB 関数を呼び出し、結果を返す

メンバー関数 MATLABEngine::feval を使用して、入力変数をもつ MATLAB 関数 movsum を呼び出します。返された結果を double 型の MATLAB データ配列として定義します。

// Call MATLAB function with arguments and return results
matlab::data::TypedArray<double> result = matlabPtr->feval(u"movsum", args);

参考

|

関連するトピック