About the Tutorials

Welcome to the Control Tutorials for MATLAB and Simulink (CTMS). They are designed to help you learn how to use MATLAB and Simulink for the analysis and design of automatic control systems. They cover the basics of MATLAB and Simulink and introduce the most common classical and modern control design techniques.



Note: that your browser must have Javascript enabled in order for the navigation to function correctly.

There are several items listed down the left column of the main page. These represent the various steps or approaches in the controller design process: System modeling and analysis - PID, root locus, frequency domain, state-space, and digital controller design - and Simulink modeling and control. Along the top of the main page, you will find an Introductory section along with seven interesting and informative examples which illustrate the controller design process.

We recommend beginning by reading through all of the Introductory sections and then continuing on to the examples. In general, the difficulty of the tutorials increases from top left to bottom right.

We also envision that you will follow along with these tutorials by running MATLAB/Simulink in one window and the tutorials in another. You should be able to run most of the MATLAB programs by copying and pasting between windows; the Simulink models can be executed by downloading the model files. You may also find the tutorials helpful as an on-line reference while doing homework assignments or for reviewing concepts before exams. If you have no prior experience with MATLAB, the first tutorials at the top, MATLAB and Simulink Basics, are recommended.

About the Authors

These tutorials were originally developed by Prof. Bill Messner of the Department of Mechanical Engineering at Tufts University (formerly of Carnegie Mellon University) and Prof. Dawn Tilbury of the Department of Mechanical Engineering and Applied Mechanics at the University of Michigan. Funding was originally provided by the National Science Foundation under grant number DUE 9554819.

Most of the original development work was done by undergraduate students Luis Oms (CMU), Joshua Pagel (UM), Yanjie Sun (UM), and Munish Suri (CMU) over the summer of 1996 and Christopher Caruana (UM), Dai Kawano (UM), Brian Nakai (CMU) and Pradya Prempraneerach (CMU) over the summer of 1997. Graduate student Jonathon Luntz (CMU) wrote the Simulink tutorials and contributed significantly in preparing the tutorials for web publication.

A prototype set of tutorials, developed by Prof. Tilbury, won an Undergraduate Computational Science Award from the U.S. Department of Energy, and the first set of Control Tutorials for MATLAB won the Educom Medal.

With further funding by MathWorks in 2011, Prof. Bill Messner, Assoc. Prof. Rick Hill (UDM), and PhD Student JD Taylor (CMU), completely redesigned the web interface and updated all of the tutorials to reflect new functionality and tools available in the most recent version of the software (MATLAB 7). Additional funding by the MathWorks in 2014 allowed for the addition of the hardware-based activities that can be accessed under the Resources tab at the top of this window.


MATLAB is an interactive program for numerical computation and data visualization; it is used extensively by control engineers for analysis and design. There are many different toolboxes available which extend the basic functions of MATLAB into different application areas. In these tutorials we will make extensive use of the Control Systems Toolbox.

MATLAB is supported on Unix, Macintosh, and Windows environments. A student version of MATLAB is available, and you should check with your university or engineering department to see if they offer it. For more information on MATLAB, contact the MathWorks:


Conventions used in the tutorials

We have used the MATLAB html publishing feature to generate the tutorials pages and you will notice that this has resulted in a consistent and pleasant presentation. In particular, the equations are properly typeset in LaTeX, and interpreted by MATLAB for viewing in your web browser.

Furthermore, all the MATLAB commands used in these tutorials are contained in light gray boxes and the output of these commands appear directly below them in the flow of the page, for example:

s = tf('s');
sys = 1/(s^2+s+1)
sys =
  s^2 + s + 1
Continuous-time transfer function.

If you find that the font is too hard to read, try increasing the zoom level in your browser. The elements should scale up rather well.

More About Automatic Control

If you are interested in learning more about the topic of automatic control, there are a multitude of resources both on the WWW and in print.

There are many textbooks which treat the material covered in these tutorials, including:

  • Richard C. Dorf and Robert M. Bishop, Modern Control Systems, Seventh Edition, Addison-Wesley, Reading, Massachusetts, 1995.
  • Gene F. Franklin, J. David Powell, and Abbas Emani-Naeini, Feedback Control of Dynamic Systems, Third Edition, Addison-Wesley, Reading, Massachusetts, 1994.
  • Benjamin C. Kuo, Automatic Control Systems, Seventh Edition, Prentice Hall, Englewood Cliffs, New Jersey, 1995.
  • Norman S. Nise, Control Systems Engineering, Second Edition, Benjamin-Cummings, Redwood City, California, 1995.


The Control Tutorials for MATLAB and Simulink are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. This means that the contents of this website may be copied and adapted for other uses as long as the user provides credit to the original authors (Attribution) and distributes their materials under the same license as we use here (ShareAlike).