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
関数に渡し、結果を返します。
ヘッダー ファイルを含める
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);
参考
matlab::engine::MATLABEngine
| matlab::data::ArrayFactory