simulink側からモデルワークスペース上に変数を作成する簡単な方法が知りたい
6 views (last 30 days)
Show older comments
MATLAB側からsimulinkで計算した結果をgetVariablePartを使ってロードしたいのですが
そもそもsimulink側で計算結果をモデルワークスペースに書き込む方法が分かりません。
どうすればいいのでしょうか?
または別の方法がありますか?
2 Comments
Toshinobu Shintai
on 14 Sep 2019
MATLAB側からSimulinkの計算結果を読みたいということでしょうか。
作成したSimulinkモデルのデフォルト設定のままでOutportブロックを信号線に接続することで、ベースワークスペースに結果が格納されるはずです。
それを読むという方法はだめでしょうか。
Answers (1)
Toshinobu Shintai
on 17 Sep 2019
以下のWebページにあるset_paramコマンドを用いると、おっしゃっていることが可能になります。コマンドの使い方とSimulinkとのデータのやり取りについても書かれていますのでご確認ください。
ただし、1ステップごとに実行を止めるやり方については記載されていませんので、私の方でサンプルを作成しました。
添付のzipを解凍し、MATLAB R2019aで作業ディレクトリを指定してください。
次に「ctrl_model.m」内の処理をセクションごとに上から実行してください。参考までにコマンドを以下に記載します。
%%
model_name = 'my_model';
%% モデルを開く
open_system(model_name);
%% Simulinkのシミュレーションを開始する
set_param(model_name, 'SimulationCommand', 'start');
pause(2); %念のため2秒待機
%% Simulinkのパラメータを更新する
LastSimTime = get_param(bdroot, 'SimulationTime');
set_param(model_name, 'SimulationCommand', 'update');
pause(2); %念のため2秒待機
%% 次のステップに進める
set_param(model_name, 'SimulationCommand', 'continue');
pause(2); %念のため2秒待機
モデル内では、一定の処理時間が過ぎたら一時停止するようにAssertionが組み込まれています。今回は1計算ステップ分に指定しています。
上記の「%% パラメータを更新する」と「%% 次のステップに進める」を繰り返し行うことでステップごとに実行させることができます。
0 Comments
See Also
Categories
Find more on プログラムによるモデル編集 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!