tf2ss() - Signal Processing
tf2ss converts the parameters of a transfer
function representation of a given system to those of an equivalent
state-space representation.[A,B,C,D] = tf2ss(b,a) returns
the A, B, C,
and D matrices of a state space representation
for the single-input transfer function H(s)=B(s)A(s)=b1sn−1+⋯+bn−1s+bna1sm−1+⋯+am−1s+am=C(sI−A)−1B+Din controller canonical formx˙=Ax+Buy=Cx+DuThe input vector a contains the denominator
coefficients in descending powers of s. The rows
of the matrix b contain the vectors of numerator
coefficients (each row corresponds to an output). In the discrete-time
case, you must supply b and a to
correspond to the numerator and denominator polynomials with coefficients
in descending powers of z.For discrete-time systems you must make b have
the same number of columns as the length of a.
You can do this by padding each numerator represented in b (and
possibly the denominator represented in the vector a)
with trailing zeros. You can use the function eqtflength to
accomplish this if b and a are
vectors of unequal lengths.The tf2ss function is part of the standard MATLAB® language.Note
There is disagreement in the literature on naming conventions
for the canonical forms. It is easy, however,
to generate similarity transformations that convert these results
to other forms.
Syntax
[A,B,C,D] = tf2ss(b,a)
Example
State-Space Representation of Transfer FunctionOpen This Example
Consider the system described by the transfer function
Convert it to state-space form using tf2ss.
b = [0 2 3; 1 2 1];
a = [1 0.4 1];
[A,B,C,D] = tf2ss(b,a)
A =
-0.4000 -1.0000
1.0000 0
B =
1
0
C =
2.0000 3.0000
1.6000 0
D =
0
1
Mass-Spring SystemOpen This Example
A one-dimensional discrete-time oscillating system consists of a unit mass,
, attached to a wall by a spring of unit elastic constant. A sensor samples the acceleration,
, of the mass at
Hz.
Generate 50 time samples. Define the sampling interval
.Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);
u = [1 zeros(1,N-1)];
The transfer function of the system has an analytic expression:
The system is excited with a unit impulse in the positive direction. Compute the time evolution of the system using the transfer function. Plot the response.bf = [1 -(1+cos(dt)) cos(dt)];
af = [1 -2*cos(dt) 1];
yf = filter(bf,af,u);
stem(t,yf,'o')
xlabel('t')
Find the state-space representation of the system. Compute the time evolution starting from an all-zero initial state. Compare it to the transfer-function prediction.[A,B,C,D] = tf2ss(bf,af);
x = [0;0];
for k = 1:N
y(k) = C*x + D*u(k);
x = A*x + B*u(k);
end
hold on
stem(t,y,'*')
hold off
legend('tf','ss')
Output / Return Value
Limitations
Alternatives / See Also
Reference