Main Content

対話型の応答プロット更新を伴う GUI の作成

この例では、GUI を作成して、対話型の入力に応じて変化する Control System Toolbox™ 応答プロットを表示する方法を示します。

この例の GUI は、固定された固有振動数をもつ 2 次動的システムのステップ応答を表示します。GUI にはシステムの減衰比を設定するスライダーが用意されています。スライダーの設定を応答プロットに反映させるには、スライダーのコールバックを定義しなければなりません。このコールバックは updateSystem コマンドを使用して、スライダー設定の変更に応じてプロットを新しいシステム データで更新します。

2 次動的システムの初期値を設定し、システム モデルを作成します。

zeta = .5;                           % Damping Ratio
wn = 2;                              % Natural Frequency
sys = tf(wn^2,[1,2*zeta*wn,wn^2]); 

GUI の Figure を作成し、ステップ応答を表示するための座標軸を構成します。

f = figure;
ax = axes('Parent',f,'position',[0.13 0.39  0.77 0.54]);
h = stepplot(ax,sys);
setoptions(h,'XLim',[0,10],'YLim',[0,2]);

スライダーとスライダー ラベルのテキストを Figure に追加します。

b = uicontrol('Parent',f,'Style','slider','Position',[81,54,419,23],...
              'value',zeta, 'min',0, 'max',1);
bgcolor = f.Color;
bl1 = uicontrol('Parent',f,'Style','text','Position',[50,54,23,23],...
                'String','0','BackgroundColor',bgcolor);
bl2 = uicontrol('Parent',f,'Style','text','Position',[500,54,23,23],...
                'String','1','BackgroundColor',bgcolor);
bl3 = uicontrol('Parent',f,'Style','text','Position',[240,25,100,23],...
                'String','Damping Ratio','BackgroundColor',bgcolor);

減衰比スライダーが動かされるとステップ応答プロットを更新するように、コールバックを設定します。

b.Callback = @(es,ed) updateSystem(h,tf(wn^2,[1,2*(es.Value)*wn,wn^2])); 

このコードは、無名関数にスライダー (b として識別) のコールバックを設定します。この無名関数の入力引数 esed は、スライダーが使用される際に自動的にコールバックに渡されます。es はスライダーを表す uicontrol のハンドル、ed はスライダーが自動でコールバックに渡すイベント データ構造です。これらの変数をワークスペースで定義したり、その値を設定したりする必要はありません (UI コールバックについての詳細は、グラフィックス オブジェクトのコールバックの作成を参照してください)。

コールバックは関数 updateSystem の呼び出しであり、プロットされた応答データは、新しい伝達関数から導出された応答に置き換えられます。コールバックはスライダー データ es.Value を使用して、減衰比がスライダーの現在の値である 2 次システムを定義します。

これでコールバックが設定されたので、スライダーを動かします。表示されるステップ応答が予想どおりに変わります。

参考

|

関連するトピック