このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
c++用のMATLAB®SimulinkエンジンAPI金宝appを使使用しし®シミュレーションを実行することができます。プログラムによりシミュレーションを実行するための基本的な手順は以下のとおりです。
MATLABセッションを開始します。
MATLAB関数load_system
(金宝app模型)を使用して,金宝app仿真软件モデルをMATLABに読み込みます。
MATLAB関数sim卡
(金宝app模型)を使用して,特定のシミュレーションパラメーターを設定してシミュレーションを実行します。
返された金宝app仿真软件。SimulationOuput
(金宝app模型)オブジェクトのメソッドを使用して,シミュレーションの結果にアクセスします。
matlabからプログラムによりシミュレーションを行行程するの详细については個々のシミュレーションの実行(金宝app模型)を参照してください。
金宝appsimulinkのVDP.
ブロック線図は2階微分方程式であるファンデルポールの方程式をシミュレートします。金宝app仿真软件は,モデルによって定義された初期条件と構成パラメーターを使用して方程式を解きます。
次のMATLABコードは,シミュレーションをプログラムによって実行するためのコマンドを示しています。金宝app仿真软件。SimulationOuput
オブジェクトの得到
メソッドは,结果と时空
load_system ('vdp');parameterStruct。SaveOutput =“上”;parameterStruct。OutputSaveName ='你';presitionstruct.saveTime =.“上”;parameterStruct。TimeSaveName =“兜售”;simOut = sim卡('vdp', parameterStruct);y = simOut.get ('你');t = simOut.get (“兜售”);
次のmatlabコードコードはシミュレーションシミュレーションシミュレーションシミュレーションを作物
plot(t,y)打印(“vdpSimulation”,“-djpeg”)
このサンプルコードは,VDP.
モデルを使用して仿金宝app真软件シミュレーションを実行します。コードは次の操作を実行します。
金宝app仿真软件がインストールされた名前付きMATLABセッションに接続する。
matlab:: data:: ArrayFactory
を作成し,シミュレーションパラメーターが含まれたstructarray.
をビルドする。
シミュレーションパラメーター構造体をMATLABワークスペースに渡す。
MATLABEngine: evalAsync
への非同期呼び出しを使用して,VDP.
金宝appSimulinkモデルを読み込む.matlabがモデルを読み込む,行行が待モデルされれ。
MATLABEngine: evalAsync
への使使てして実実実シミュレーションシミュレーション実て。
シミュレーションデータを金宝app仿真软件。SimulationOutput
オブジェクトからMATLABワークスペースに抽出する。
matlabコマンドを実行するMATLABEngine: eval
を使用して,データをグラフ化してJPEGイメージをMATLABの現在のフォルダーにエクスポートする。
#include " matlabdatarray .hpp" #include "MatlabEngine.hpp" #include#include void runSimulation(){使用命名空间matlab::engine;//连接到命名的共享MATLAB会话开始:// MATLAB -r " MATLAB .engine. shareengine ('myMatlabEngine')"字符串会话(u“myMatlabEngine”);std::unique_ptr matlabPtr = connectMATLAB(session);//创建MATLAB数据数组工厂MATLAB::data::ArrayFactory工厂;//创建仿真参数matlab::data::StructArray parameterStruct = factory。createStructArray({1,4}, {"SaveOutput", "OutputSaveName", "SaveTime", "TimeSaveName"});parameterStruct[0][“SaveOutput”]= factory.createCharArray(“on”);parameterStruct[0][“OutputSaveName”]= factory.createCharArray(“你”);parameterStruct[0][“SaveTime”]= factory.createCharArray(“on”);parameterStruct[0][“TimeSaveName”]= factory.createCharArray(“兜售”); // Put simulation parameter struct in MATLAB matlabPtr->setVariable(u"parameterStruct", parameterStruct); // Load vdp Simulink model FutureResult loadFuture = matlabPtr->evalAsync(u"load_system('vdp')"); std::cout << "Loading Simulink model... " << std::endl; std::future_status loadStatus; do { loadStatus = loadFuture.wait_for(std::chrono::seconds(1)); } while (loadStatus != std::future_status::ready); std::cout << "vdp model loaded\n"; // Run simulation FutureResult simFuture = matlabPtr->evalAsync(u"simOut = sim('vdp',parameterStruct);"); std::cout << "Running simulation... " << std::endl; std::future_status simStatus; do { simStatus = loadFuture.wait_for(std::chrono::seconds(1)); } while (simStatus != std::future_status::ready); std::cout << "vdp simulation complete\n"; // Get simulation data and create a graph matlabPtr->eval(u"y = simOut.get('yOut');"); matlabPtr->eval(u"t = simOut.get('tOut');"); matlabPtr->eval(u"plot(t,y)"); matlabPtr->eval(u"pause(10)"); matlabPtr->eval(u"print('vdpSimulation','-djpeg')"); }
c++エンジンプログラムを設定およびビルドする方法の詳細については,C ++エンジンエンジンプログラムのを参照してください。
matlab:引擎::MATLABEngine
|matlab:引擎::connectMATLAB
|matlab:: data:: ArrayFactory