質問: simulink側からモデルワークスペース上に変数を作成する簡単な方法が知りたい matlab側からsimulinkで計算した結果をgetvariablepartを使ってロードしたいのですが そもそもsimulink側で計算結果をモデルワークスペースに書き込む方法が分かりません。 どうすればいいのでしょうか? または別の方法がありますか?
回答: 以下のwebページにあるset_paramコマンドを用いると、おっしゃっていることが可能になります。コマンドの使い方とsimulinkとのデータのやり取りについても書かれていますのでご確認ください。 https://jp.mathworks.com/help/simulink/ug/using-the-sim-command.html ただし、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計算ステップ分に指定しています。 上記の「%% パラメータを更新する」と「%% 次のステップに進める」を繰り返し行うことでステップごとに実行させることができます。