Function Reference    
tf

Specify transfer functions or convert LTI model to transfer function form

Syntax

Description

tf is used to create real- or complex-valued transfer function models (TF objects) or to convert state-space or zero-pole-gain models to transfer function form.

Creation of Transfer Functions

sys = tf(num,den) creates a continuous-time transfer function with numerator(s) and denominator(s) specified by num and den. The output sys is a TF object storing the transfer function data (see "Transfer Function Models" on page 2-8).

In the SISO case, num and den are the real- or complex-valued row vectors of numerator and denominator coefficients ordered in descending powers of . These two vectors need not have equal length and the transfer function need not be proper. For example, h = tf([1 0],1) specifies the pure derivative .

To create MIMO transfer functions, specify the numerator and denominator of each SISO entry. In this case:

If all SISO entries of a MIMO transfer function have the same denominator, you can set den to the row vector representation of this common denominator. See "Examples" for more details.

sys = tf(num,den,Ts) creates a discrete-time transfer function with sample time Ts (in seconds). Set Ts = -1 or Ts = [] to leave the sample time unspecified. The input arguments num and den are as in the continuous-time case and must list the numerator and denominator coefficients in descending powers of .

sys = tf(M) creates a static gain M (scalar or matrix).

sys = tf(num,den,ltisys) creates a transfer function with generic LTI properties inherited from the LTI model ltisys (including the sample time). See "Generic Properties" on page 2-26 for an overview of generic LTI properties.

There are several ways to create LTI arrays of transfer functions. To create arrays of SISO or MIMO TF models, either specify the numerator and denominator of each SISO entry using multidimensional cell arrays, or use a for loop to successively assign each TF model in the array. See "Building LTI Arrays" on page 4-12 for more information.

Any of the previous syntaxes can be followed by property name/property value pairs

Each pair specifies a particular LTI property of the model, for example, the input names or the transfer function variable. See set entry and the example below for details. Note that

is a shortcut for

Transfer Functions as Rational Expressions in s or z

You can also use real- or complex-valued rational expressions to create a TF model. To do so, first type either:

Once you specify either of these variables, you can specify TF models directly as rational expressions in the variable s or z by entering your transfer function as a rational expression in either s or z.

Conversion to Transfer Function

tfsys = tf(sys) converts an arbitrary SS or ZPK LTI model sys to transfer function form. The output tfsys (TF object) is the transfer function of sys. By default, tf uses zero to compute the numerators when converting a state-space model to transfer function form. Alternatively,

uses inversion formulas for state-space models to derive the numerators. This algorithm is faster but less accurate for high-order models with low gain at .

Examples

Example 1

Create the two-output/one-input transfer function

with input current and outputs torque and ang velocity.

To do this, type

Note how setting the 'variable' property to 'p' causes the result to be displayed as a transfer function of the variable .

Example 2

To use a rational expression to create a SISO TF model, type

This produces the same transfer function as

h = tf([1 0],[1 2 10]);

Example 3

Specify the discrete MIMO transfer function

with common denominator and sample time of 0.2 seconds.

Example 4

Compute the transfer function of the state-space model with the following data.

To do this, type

Example 5

You can use a for loop to specify a 10-by-1 array of SISO TF models.

The first statement pre-allocates the TF array and fills it with zero transfer functions.

Discrete-Time Conventions

The control and digital signal processing (DSP) communities tend to use different conventions to specify discrete transfer functions. Most control engineers use the variable and order the numerator and denominator terms in descending powers of , for example,

The polynomials and are then specified by the row vectors    [1 0 0] and [1 2 3], respectively. By contrast, DSP engineers prefer to write this transfer function as

and specify its numerator as 1 (instead of [1 0 0]) and its denominator as   [1 2 3].

tf switches convention based on your choice of variable (value of the 'Variable' property).

Variable
Convention
'z' (default)
Use the row vector [ak ... a1 a0] to specify the polynomial (coefficients ordered in descending powers of ).
'z^-1', 'q'
Use the row vector [b0 b1 ... bk] to specify the polynomial (coefficients in ascending powers of or ).

For example,

specifies the discrete transfer function

because is the default variable. In contrast,

uses the DSP convention and creates

See also filt for direct specification of discrete transfer functions using the DSP convention.

Note that tf stores data so that the numerator and denominator lengths are made equal. Specifically, tf stores the values

for g (the numerator is padded with zeros on the left) and the values

for h (the numerator is padded with zeros on the right).

Algorithm

tf uses the MATLAB function poly to convert zero-pole-gain models, and the functions zero and pole to convert state-space models.

See Also
filt        Specify discrete transfer functions in DSP format

frd         Specify a frequency response data model

get         Get properties of LTI models

set         Set properties of LTI models

ss          Specify state-space models or convert to state space

tfdata      Retrieve transfer function data

zpk         Specify zero-pole-gain models or convert to ZPK


  step tfdata