このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
以下の手法を使用して、C++ 変数を MATLAB®に渡すことができます。
matlab::engine::MATLABEngine
のメンバー関数fevalまたはfevalAsyncの呼び出しで、変数を関数の引数として渡す。関数呼び出しの引数として渡される変数は、MATLAB ベース ワークスペースには保存されません。詳細については、C++ からの MATLAB 関数の呼び出しを参照してください。
matlab::engine::MATLABEngine
のメンバー関数setVariableとsetVariableAsyncを使用して、変数を MATLAB ベースまたはグローバル ワークスペースに配置する。MATLAB でのグローバル変数の使用の詳細については、MATLAB 関数global
を参照してください。
matlab::engine::MATLABEngine
のメンバー関数evalとevalAsyncを使用して、MATLAB ワークスペースで変数を作成することができます。これらの関数を使用して、変数への代入を行う MATLAB ステートメントを実行します。詳細については、C++ からの MATLAB ステートメントの評価を参照してください。
このサンプル コードは、以下のステップを実行します。
MATLABEngine::setVariable
を使用して MATLAB ワークスペースに変数を配置する
MATLABEngine::eval
を使用してこれらの変数を MATLAB 関数movsum
の呼び出しに使用する
MATLABEngine::getVariable
を使用して MATLAB ワークスペースから出力変数A
を取得する
以下は等価の MATLAB コードです。
A = movsum([4 8 6 -1 -2 -3 -1 3 4 5],3,'Endpoints','discard');
以下は C++ コードです。
# include # include“MatlabDataArray.hpp MatlabEngine.hpp" #include
void callputVariables() { using namespace matlab::engine; // Start MATLAB engine synchronously std::unique_ptrmatlabPtr = startMATLAB(); //Create MATLAB data array factory matlab::data::ArrayFactory factory; // Create variables matlab::data::TypedArray data = factory.createArray ({ 1, 10 }, { 4, 8, 6, -1, -2, -3, -1, 3, 4, 5 }); matlab::data::TypedArray windowLength = factory.createScalar (3); matlab::data::CharArray name = factory.createCharArray("Endpoints"); matlab::data::CharArray value = factory.createCharArray("discard"); // Put variables in the MATLAB workspace matlabPtr->setVariable(u"data", std::move(data)); matlabPtr->setVariable(u"w", std::move(windowLength)); matlabPtr->setVariable(u"n", std::move(name)); matlabPtr->setVariable(u"v", std::move(value)); // Call the MATLAB movsum function matlabPtr->eval(u"A = movsum(data, w, n, v);"); // Get the result matlab::data::TypedArray const A = matlabPtr->getVariable(u"A"); // Display the result int i = 0; for (auto r : A) { std::cout << "results[" << i << "] = " << r << std::endl; ++i; } }
C++ エンジン プログラムを設定およびビルドする方法の詳細については、C++ エンジン プログラムのビルドを参照してください。
matlab::engine::MATLABEngine
|matlab::engine::startMATLAB