Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

C++ 用のエンジン API の紹介

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

  • MATLAB を起動します。

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

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

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

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

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

入門

C++ 用の MATLAB エンジン API は、一連の C++ ヘッダー ファイルと C ランタイム共有ライブラリから構成されています。名前空間 matlab::engine にはいくつかのユーティリティ関数と C++ クラスのセットが含まれています。

ビルドおよびランタイム環境を設定して、C++ 用の MATLAB エンジン API の使用を開始します。サポートされているコンパイラがインストールされていることを必ず確認してください。MATLAB mex コマンドを使用して環境をセットアップし、C++ アプリケーションをビルドします。IDE を構成して、エンジン API を使用する C++ アプリケーションをビルドすることもできます。この操作方法の詳細については、C++ エンジン プログラムのビルドを参照してください。

エンジン API では、MATLAB データ API の使用がサポートされています。この API により、MATLAB 外で実行されているアプリケーションで MATLAB データを使用できるようになります。この API の詳細については、MATLAB データ APIを参照してください。

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

MATLAB コマンドの実行に使用される基本要素を示す簡単な C++ エンジン コードは、以下のとおりです。このコードでは、データ配列のベクトルを MATLAB 関数 movsum に渡して結果を返します。この C++ コードの実行は、MATLAB の以下のステートメントと等価です。

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

C++ エンジン コードの基本要素

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

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

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

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

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")
});

メンバー関数 MATLABEngine::feval を使用して MATLAB 関数 movsum を呼び出します。返された結果を適切な型の MATLAB データ配列として定義します。

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

参考

|

関連するトピック