Simulinkモデルの連続実行時の高速化について
18 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
とあるパラメータの最適化のためSimulinkをMatlabからfor loop内で下記コマンドで実行しております
sim('model_name')
一回一回の計算時間はとても短いのですが,for loop数が多いため計算実行以外のロスがあると思っております.これらを極力減らし高速化を図りたいと思っています.
ご質問させていただきたいこと;
上記のような実行の場合,都度バックグラウンドでSimulinkモデルを開いて,閉じてが行われていますでしょうか?
その場合,for loop内ではSimulinkモデルを開いた状態にしておいて当該処理に関する時間ロスをなくせないかと思っております.
補足:
アクセラレータモードによる短縮は既に実行しております
ご回答およびアドバイスいただけますと幸いです.
以上よろしくお願いいたします.
0 comentarios
Respuestas (2)
交感神経優位なあかべぇ
el 7 de Jul. de 2022
simの繰り返しで、Simulinkモデルが開いたり閉じたりすることはありません。
計算実行以外のロスについてですが、Simulinkの実行時の前処理であるモデルのコンパイル(アクセラレータモードの実行では、特に時間がかかったように思います)に時間がかかっていると予想します。
こちらについては、高速リスタートの設定をONにすることで、初回時のみコンパイルを行うようにすることができます。
2 comentarios
交感神経優位なあかべぇ
el 12 de Jul. de 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');
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!