主要内容

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

c++からの仿真金宝app软件シミュレーションの実行

シミュレーションを実行するMATLABコマンド

c++用のMATLAB®SimulinkエンジンAPI金宝appを使使用しし®シミュレーションを実行することができます。プログラムによりシミュレーションを実行するための基本的な手順は以下のとおりです。

  • MATLABセッションを開始します。

  • MATLAB関数load_system(金宝app模型)を使用して,金宝app仿真软件モデルをMATLABに読み込みます。

  • MATLAB関数sim卡(金宝app模型)を使用して,特定のシミュレーションパラメーターを設定してシミュレーションを実行します。

  • 返された金宝app仿真软件。SimulationOuput(金宝app模型)オブジェクトのメソッドを使用して,シミュレーションの結果にアクセスします。

matlabからプログラムによりシミュレーションを行行程するの详细については個々のシミュレーションの実行(金宝app模型)を参照してください。

c++からの金宝appvdpモデル

金宝appsimulinkのVDP.ブロック線図は2階微分方程式であるファンデルポールの方程式をシミュレートします。金宝app仿真软件は,モデルによって定義された初期条件と構成パラメーターを使用して方程式を解きます。

シミュレーションを実行するためのMATLABコード

次の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”

シミュレーションを実行するためのc++コード

このサンプルコードは,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 ++エンジンエンジンプログラムのを参照してください。

参考

||

関連するトピック