Index: Extra Content

This section contains a list of the pages that are not in the main flow of the tutorials, but which provide important reference information. Short descriptions of each Extra page are provided.


System Conversions

The System Conversions page explains how to use MATLAB to convert between the various different representations of a dynamic system. Three particular forms are the transfer function form, the state space form, and the zero-pole-gain form which can be represented using vectors, matrices, or MATLAB's 'sys' formats.

System Identification

The System Identification page explains how to identify the system parameters of first and second order systems from either time-domain or frequency-domain data.

Difference Equations and System Representations

The Difference Equations page describes the difference equation description of discrete-time systems and how to derive transfer functions and state space representations from them.

Digital Lead and Lag

The Digital Lead-Lag page covers the design of discrete-time lead and lag controllers using root locus methods.

Digital Steady-State Error

The Digital Steady-State Error page explains the Final Value Theorem for discrete-time systems and how to use it to calculate the steady-state error of a system for a step input or an impulse input, in particular.

Discrete Pole Locations and Transient Response

The Discrete Transient Response page shows more analysis of the relationship between the transient response of a discrete-time system and the locations of the dominant poles.


The Function page gives an introduction on how to write your own functions in MATLAB. Links to files containing functions written for for the Controls Tutorial are provided.

Function: lnyquist

The function lnyquist.m is a variation of nyquist1.m below which plots the polar plot of a transfer function using log2(G(jw) + 1) as the radius instead of G(jw) + 1. The same algorithm is used to shape the Nyquist contour around the poles on the imaginary axis and the origin. The page contains an explanation and code listing for the function.

Function: nyquist1

The function nyquist1.m contains a special contour shaping algorithm to handle poles on the imaginary axis and at the origin, for which MATLAB's nyquist command frequently gives erroneous results. The page contains an explanation and code listing for the function.

Function: rscale

This function will find the scale factor for a full-state feedback system to eliminate the steady-state error in response to a step reference input. The page contains an explanation and code listing for the function.

Function: sigrid

This function will plot a vertical line through a point on the real axis of a graph generated by another plotting function, such as rlocus. The function is useful for plotting a bound of the real parts of poles on a root locus plot. The page contains an explanation and code listing for the function.

Function: wbw

This page contains an explanation and a code listing of the function wbw.m which returns the approximate closed-loop bandwidth frequency given the desired damping ratio of the dominant closed-loop poles and desired the peak time or settling time of a closed-loop step response.

Lagging Effect Associated with the Hold

This page discusses the time lag effect caused by using a zero-order hold within a digital control system.


The Lead and Lag Compensators page shows how to design continuous-time lead, lag, and lead/lag compensators in MATLAB using root locus and frequency response techniques


The Lsim page explains the MATLAB command lsim, which simulates the time response of a linear, time-invariant system (continuous-time or discrete-time) to arbitrary inputs and initial conditions.


The Introduction to M-files page describes how to use files called m-files or script files which contain MATLAB commands. M-files serve as MATLAB programs and MATLAB executes the commands exactly as if the commands had been entered at the MATLAB prompt.

Notch Filter

The Notch Filter page explains how to design a compensator that will place zeroes to approximately cancel lightly damped complex-conjugate poles in a plant.

PID Bilinear Approximation

The PID Bilinear page shows how to design a discrete-time PID compensator using a bilinear transformation substitution for the Laplace variable in a continuous-time PID transfer function.


This page explains the basics of using MATLAB's plot command including how to plot different line styles and different colors. Other topics covered include the subplot command, changing the axes, and adding text to a plot.

Pole-Zero Cancellation

This page discusses the problem with attempting to cancel a right-half plane pole with a zero at the same location and shows why a designer should never do this.

Simulink Block Libraries

This page explains the functionality of the blocks appearing in the Continuous, Discontinuities, Discrete, Logic and Bit Operations, Math Operations, Sinks, and Sources, Simulink Block Libraries.

Simulink Interaction with MATLAB

This page examines the three of the ways in which Simulink can interact with MATLAB.

  • Defining Simulink block parameters using MATLAB variables
  • Exchanging signals between Simulink and MATLAB
  • Extracting linear state space models from Simulink system models

Steady-State Error

The Steady-State Error page explains the concept of steady-state error and how to calculate the steady-state error for various standard test inputs. The page covers relationship between system type (the number of free integrators) and the steady-state error for the step, ramp, and parabolic test inputs. The page also shows how to design a compensator to reduce or eliminate steady-state error.


The Step page describes the use of the step command which is one of most useful functions in the MATLAB Control Systems Toolbox. The step command plots the response of a system represented in either transfer function, state space, or zero-pole-gain format to a step input. The step command accepts continuous-time and discrete-time models.