Main Content

MIMO transfer functions are two-dimensional arrays of elementary SISO transfer functions. There are two ways to specify MIMO transfer function models:

Concatenation of SISO transfer function models

Using

`tf`

with cell array arguments

Consider the following single-input, two-output transfer function.

$$H(s)=\left[\begin{array}{c}\frac{s-1}{s+1}\\ \frac{s+2}{{s}^{2}+4s+5}\end{array}\right].$$

You can specify *H*(*s*) by concatenation of its SISO entries. For instance,

h11 = tf([1 -1],[1 1]); h21 = tf([1 2],[1 4 5]);

or, equivalently,

s = tf('s') h11 = (s-1)/(s+1); h21 = (s+2)/(s^2+4*s+5);

can be concatenated to form *H*(*s*).

H = [h11; h21]

This syntax mimics standard matrix concatenation and tends to be easier and more readable for MIMO systems with many inputs and/or outputs.

**Tip**

Use `zpk`

instead of `tf`

to
create MIMO transfer functions in factorized
form.

Alternatively, to define MIMO transfer functions using `tf`

, you
need two cell arrays (say, `N`

and `D`

) to
represent the sets of numerator and denominator polynomials, respectively. See
What Is a Cell Array? for more details on cell arrays.

For example, for the rational transfer matrix *H*(*s*),
the two cell arrays `N`

and `D`

should
contain the row-vector representations of the polynomial entries of

$$N(s)=\left[\frac{s-1}{s+2}\right],\text{\hspace{1em}}D(s)=\left[\frac{s+1}{{s}^{2}+4s+5}\right].$$

You can specify this MIMO transfer matrix *H*(*s*)
by typing

N = {[1 -1];[1 2]}; % Cell array for N(s) D = {[1 1];[1 4 5]}; % Cell array for D(s) H = tf(N,D)

Transfer function from input to output... s - 1 #1: ----- s + 1 s + 2 #2: ------------- s^2 + 4 s + 5

Notice that both `N`

and `D`

have
the same dimensions as *H*. For a general MIMO transfer
matrix *H*(*s*), the cell array
entries `N{i,j}`

and `D{i,j}`

should
be row-vector representations of the numerator and denominator of *H _{ij}*(