MATLAB Answers

How can I obtain the matrices A, B, C ,D of the state space for a transfer matrix using Matlab?

45 views (last 30 days)
Suppose I have a transfer matrix:
xa.PNG
how can I obtain the matrices A, B, C ,D of the state space for this matrix using Matlab?

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 10 Feb 2020
Try this:
s = tf('s');
P = [2/(s^2+3*s+2) 2*s/(s^2+3*s+2); -2*s/(s^2+3*s+2) -2/(s^2+3*s+2)]
S = ss(P)
producing:
S =
A =
x1 x2 x3 x4
x1 -3 -2 0 0
x2 1 0 0 0
x3 0 0 -3 -2
x4 0 0 1 0
B =
u1 u2
x1 2 0
x2 0 0
x3 0 2
x4 0 0
C =
x1 x2 x3 x4
y1 0 1 1 0
y2 -1 0 0 -1
D =
u1 u2
y1 0 0
y2 0 0
Continuous-time state-space model.

  4 Comments

Show 1 older comment
Star Strider
Star Strider on 11 Feb 2020
My pleasure.
The ‘S’ variable is a structure. (See: Access Data in Structure Array for details.)
To get them as arrays:
A = S.A
B = S.B
C = S.C
D = S.D
producing:
A =
-3 -2 0 0
1 0 0 0
0 0 -3 -2
0 0 1 0
B =
2 0
0 0
0 2
0 0
C =
0 1 1 0
-1 0 0 -1
D =
0 0
0 0
All of these are double-precision arrays.
Star Strider
Star Strider on 11 Feb 2020
As always, my pleasure!
I posted an Answer to your other Question (that you referenced in your last Comment) that reproduces the anslysis at the end of that monograph. The appropriate MATLAB code is already written, so that was straightforward. (I have not done anything with Rosenbrock System Matrices since my multivariable control course in graduate school, so this was an interesting problem.)

Sign in to comment.

More Answers (0)

Sign in to answer this question.


Translated by