Simulinkモデルの連続実行時の高速化について
이전 댓글 표시
とあるパラメータの最適化のためSimulinkをMatlabからfor loop内で下記コマンドで実行しております
sim('model_name')
一回一回の計算時間はとても短いのですが,for loop数が多いため計算実行以外のロスがあると思っております.これらを極力減らし高速化を図りたいと思っています.
ご質問させていただきたいこと;
上記のような実行の場合,都度バックグラウンドでSimulinkモデルを開いて,閉じてが行われていますでしょうか?
その場合,for loop内ではSimulinkモデルを開いた状態にしておいて当該処理に関する時間ロスをなくせないかと思っております.
補足:
アクセラレータモードによる短縮は既に実行しております
ご回答およびアドバイスいただけますと幸いです.
以上よろしくお願いいたします.
답변 (2개)
交感神経優位なあかべぇ
2022년 7월 7일
1 개 추천
simの繰り返しで、Simulinkモデルが開いたり閉じたりすることはありません。
計算実行以外のロスについてですが、Simulinkの実行時の前処理であるモデルのコンパイル(アクセラレータモードの実行では、特に時間がかかったように思います)に時間がかかっていると予想します。
こちらについては、高速リスタートの設定をONにすることで、初回時のみコンパイルを行うようにすることができます。
댓글 수: 2
浩祐 佐々木
2022년 7월 12일
交感神経優位なあかべぇ
2022년 7월 12일
ドキュメントにはありませんが、、、MATLAB R2015aの高速リスタートのパラメーターはInitializeInteractiveRunsのようです。(R2021aでもInitializeInteractiveRunsの設定は有効でしたが、いつ無効になるか分かりませんので、新しいバージョンにした際は、FastRestartを使用することをおすすめします。)
ですので、下記のようにスクリプトを作成すれば、R2015aでも、高速リスタート設定で実行できます。
set_param('モデル名', 'InitializeInteractiveRuns', 'on');
try
for idx = 1 : 4
sim('モデル名');
end
catch ME
set_param('モデル名', 'InitializeInteractiveRuns', 'off');
throw(ME);
end
set_param('モデル名', 'InitializeInteractiveRuns', 'off');
Toshinobu Shintai
2022년 7월 7일
0 개 추천
本ケースにおいては、RSimを用いることが最も高速化できる手段になります。
카테고리
도움말 센터 및 File Exchange에서 String에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!