Accelerating the pace of engineering and science

# tf2ss

Convert transfer function filter parameters to state-space form

## Syntax

[A,B,C,D] = tf2ss(b,a)

## Description

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\left(s\right)=\frac{B\left(s\right)}{A\left(s\right)}=\frac{{b}_{1}{s}^{n-1}+\cdots +{b}_{n-1}s+{b}_{n}}{{a}_{1}{s}^{m-1}+\cdots +{a}_{m-1}s+{a}_{m}}=C{\left(sI-A\right)}^{-1}B+D$

in controller canonical form

$\begin{array}{l}\stackrel{˙}{x}=Ax+Bu\\ y=Cx+Du\end{array}$

The 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.

## Examples

expand all

### State-Space Representation of Transfer Function

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