Build GUI With Interactive Response-Plot Updates
This example shows how to create a GUI to display a Control System Toolbox™ response plot that changes in response to interactive input.
The GUI in this example displays the step response of a second-order dynamic system of
fixed natural frequency. The GUI includes a slider that sets the system’s damping ratio. To
cause the response plot to reflect the slider setting, you must define a callback for the
slider. This callback uses the updateSystem
command to update the plot
with new system data in response to changes in the slider setting.
Set the initial values of the second-order dynamic system and create the system model.
zeta = .5; % Damping Ratio wn = 2; % Natural Frequency sys = tf(wn^2,[1,2*zeta*wn,wn^2]);
Create a figure for the GUI and configure the axes for displaying the step response.
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]);
Add the slider and slider label text to the 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);
Set the callback that updates the step response plot as the damping ratio slider is moved.
b.Callback = @(es,ed) updateSystem(h,tf(wn^2,[1,2*(es.Value)*wn,wn^2]));
This code sets the callback for the slider (identified as b
) to an
anonymous function. The input arguments to this anonymous function, es
and ed
, are automatically passed to the callback when the slider is
used. es
is the handle of the uicontrol
that
represents the slider, and ed
is the event data structure which the
slider automatically passes to the callback. You do not need to define these variables in
the workspace or set their values. (For more information about UI callbacks, see Create Callbacks for Graphics Objects.)
The callback is a call to the updateSystem
function, which
replaces the plotted response data with a response derived from a new transfer function.
The callback uses the slider data es.Value
to define a second-order
system whose damping ratio is the current value of the slider.
Now that you have set the callback, move the slider. The displayed step response changes as expected.