Simulinkモデルの連続実行時の高速化について
Afficher commentaires plus anciens
とあるパラメータの最適化のためSimulinkをMatlabからfor loop内で下記コマンドで実行しております
sim('model_name')
一回一回の計算時間はとても短いのですが,for loop数が多いため計算実行以外のロスがあると思っております.これらを極力減らし高速化を図りたいと思っています.
ご質問させていただきたいこと;
上記のような実行の場合,都度バックグラウンドでSimulinkモデルを開いて,閉じてが行われていますでしょうか?
その場合,for loop内ではSimulinkモデルを開いた状態にしておいて当該処理に関する時間ロスをなくせないかと思っております.
補足:
アクセラレータモードによる短縮は既に実行しております
ご回答およびアドバイスいただけますと幸いです.
以上よろしくお願いいたします.
Réponses (2)
交感神経優位なあかべぇ
le 7 Juil 2022
1 vote
simの繰り返しで、Simulinkモデルが開いたり閉じたりすることはありません。
計算実行以外のロスについてですが、Simulinkの実行時の前処理であるモデルのコンパイル(アクセラレータモードの実行では、特に時間がかかったように思います)に時間がかかっていると予想します。
こちらについては、高速リスタートの設定をONにすることで、初回時のみコンパイルを行うようにすることができます。
2 commentaires
浩祐 佐々木
le 12 Juil 2022
交感神経優位なあかべぇ
le 12 Juil 2022
ドキュメントにはありませんが、、、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
le 7 Juil 2022
0 votes
本ケースにおいては、RSimを用いることが最も高速化できる手段になります。
Catégories
En savoir plus sur String dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!