4 Nov 2009 marcioandreyoliveira   » (Journeyer)

How to plot the state-space output using Matlab

Suppose we need to determine the wave form, overshoot , rise time, settling time and the final value (steady state output value) of a specific process.

Moreover, instead of function transfer G(s) we've got the State-Space equations. How to do it in a easy way? I mean, how to do it without any kind of math ?

Simulink has block named State-Space. It requires four matrices (A, B, C e D) that are the solution of State-Space equations, as shown below.

State-Space equation are


x = state vector (n-vector)
u = control vector (r-vector)
y = system's output vector (m-vector)
A = n x m constant matrix
B  = n x r constant matrix
C = m x n constant matrix
D = m x r constant matrix

All we need to do is to determine these four matrices and to use the State-Space block. Is it too complicated? No at all.

Let me use an example to explain the process.

Suppose we have the following State-Space equations:

We can rewrite these equations in order to let them look like matrices. Take a look:


By inspection we get the four matrices:


Now you must create a new Simulink model and then you will insert the State-Space block (you can find it on Simulink->Continuous)

The next step is to connect Step and Scope blocks, as show below.

You need to use Matlab syntax to express the matrices. So, we have

A = [0 1; -4 -2]
B = [0;4]
C = [1 0]
D = [0;0]

As all D's elements are zero, we can rewrite D matrix as

D = 0

Double-click the State-Space block then insert A, B, C e D values as shown in the picture below.

Ok. Now you just need to simulate it, get the output system's graphic and get all values directly from it.

The graphic to this sample system  can be seen in the next picture.

I recommend you to read Ogata's Modern Control Engineering.

Did you like this post? Please rate it. Did you dislike it? So your rate is much more important!

Did I make any mistake? Wrong theory? Bad English? Wrong command? Please, post a comment complaining about it. So I can improve my posts.

Syndicated 2009-11-04 02:27:00 from Marcio Andrey Oliveira

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!