Main Content

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);

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],...
bl2 = uicontrol('Parent',f,'Style','text','Position',[500,54,23,23],...
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.

See Also


Related Topics