質問: appdesigner で作成した gui から simulink モデルを実行したり、パラメータを変更したりするには、どうすればよいですか? simulink モデルのパラメータを設定したり、シミュレーションを実行・停止するような、アプリ(gui)を appdesigner で作成したいです。作成する方法を教えてください。
回答: appdesigner で作成した例を回答の冒頭に表示されているリンクからダウンロードすることができます。 動作を確認するには、以下の手順にて行ってください。 (1) 次のファイルをダウンロードします。(r2017b にて作成) - simulink モデル : sim_mdl_17b.slx - gui アプリ: app_runsim.mlapp (2) 以下のコマンドを入力し、simulinkモデルとguiを開きます。 sim_mdl_17b % simulink モデルのオープン app_runsim % gui のオープン <> <> (3) アプリ上の "開始" ボタンをクリックし、シミュレーションを開始します。 (4)エディットボックスで値を変更すると、ゲイン の値が変更されます。同時に、スライダーバーの値も変更されます。 (5) スライダーバーの値を変更すると、ゲインの値が変更されます。同時に、エディットボックスの値も変更されます。 (6) アプリ上の "停止" ボタンをクリックし、シミュレーションを停止します。 appdesigner の各コンポーネントでは、以下のコールバックを設定しています。 *1. シミュレーションの開始・停止の動作* コンポーネントのコールバックルーチン(今回の場合、2 つの button の buttonpushedfcn コールバック)に、シミュレーションの開始/停止を行うコマンド、set_param コマンドを記述します。 set_param を使用した場合のコマンド例 function buttonpushed(app, event) % 開始ボタン set_param('sim_mdl_17b', 'simulationcommand','start') % シミュレーション開始 end function button_2pushed(app, event) % 停止ボタン set_param('sim_mdl_17b','simulationcommand','stop') % シミュレーション停止 end *2. ブロックパラメータの変更* ブロックパラメータの変更も、上記1.と同様に、コンポーネントのコールバックルーチンにコマンドを記述します。 set_param コマンドを用いて直接ブロックパラメータを変更した後、simulink モデルのアップデートを行います。 下記は、"編集フィールド(数値)"(edit field) のコールバック(valuechangedfcn)の記述例です。 % value changed function: gaineditfield function gaineditfieldvaluechanged(app, event) value = app.gaineditfield.value; set_param('sim_mdl_17b/gain','gain',num2str(value)) % ブロックパラメータ設定 set_param('sim_mdl_17b','simulationcommand','update') % モデルの更新 app.slider.value = value; % スライダー値の更新 end このサンプルでは、edit filed とスライダーを連動させるため、スライダーの値の更新も行っています。 また、同様に、スライダーのコールバック(valuechangedfcn)も以下のように記述します。  function slidervaluechanged(app, event) value = app.slider.value; set_param('sim_mdl_17b/gain','gain',num2str(value)) set_param('sim_mdl_17b','simulationcommand','update') app.gaineditfield.value = value; end guide を用いた gui の作成例は、以下の内容を参考にしてください。 ・guide で作成した gui 上から simulink のシミュレーションをスタート/ストップしたり、シミュレーション中にブロックパラメータの値を変更するにはどうすればよいですか? appdesigner の基本的な作成方法については、以下の url をご覧ください。 ・appdesigner simulink モデルに対してのパラメータ設定については、以下の urlをご覧ください。 ・ simulinkヘルプドキュメント:調整可能なパラメータ