How to convert a transfer function into state space representation?
168 views (last 30 days)
Show older comments
I was trying to convert a transfer function into state space representation, but the matrices in the output are not quiet correct. The numbers are flipped like how in B 0 should be up and 1 should be down, or in C where 2 should be right and 3 should be left. How can I fix this issue?![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1371459/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1371459/image.png)
0 Comments
Answers (2)
Paul
on 1 May 2023
Edited: Paul
on 2 May 2023
The state space realization of a transfer function is not unique. In fact, there are infinitely many state space realizations to choose from.
num = [0 3 2];
den = [1 4 4];
The Control System Toolbox uses one methodology
G = ss(tf(num, den))
and the Signal Processing Toolbox uses another
[A,B,C,D] = tf2ss(num,den)
Each realization has the same transfer function
tf(G)
[b,a] = ss2tf(A,B,C,D)
Any other realization can be obtained via similarity transformation. The CST provides a function ss2ss to do that
ss2ss(ss(A,B,C,D),[0 1;1 0])
tf(ans)
0 Comments
Walter Roberson
on 1 May 2023
num = [0 3 2];
den = [1 4 4];
G = tf(num, den);
S = ss(G)
S.A
S.B
S.C
S.D
[A, B, C, D] = tf2ss(num, den)
At the moment I do not kow why the values do not match.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!