Documentation

filt

Specify discrete transfer functions in DSP format

Syntax

sys = filt(num,den)
sys = filt(num,den,Ts)
sys = filt(M)

Description

In digital signal processing (DSP), it is customary to write transfer functions as rational expressions in z−1 and to order the numerator and denominator terms in ascending powers of z−1. For example:

$H\left({z}^{-1}\right)=\frac{2+{z}^{-1}}{1+0.4{z}^{-1}+2{z}^{-2}}$

The function filt is provided to facilitate the specification of transfer functions in DSP format.

sys = filt(num,den) creates a discrete-time transfer function sys with numerator(s) num and denominator(s) den. The sample time is left unspecified (sys.Ts = -1) and the output sys is a TF object.

sys = filt(num,den,Ts) further specifies the sample time Ts (in seconds).

sys = filt(M) specifies a static filter with gain matrix M.

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

'Property',Value

Each pair specifies a particular property of the model, for example, the input names or the transfer function variable. For information about the available properties and their values, see the tf reference page.

Arguments

For SISO transfer functions, num and den are row vectors containing the numerator and denominator coefficients ordered in ascending powers of z−1. For example, den = [1 0.4 2] represents the polynomial 1 + 0.4z−1 + 2z−2.

MIMO transfer functions are regarded as arrays of SISO transfer functions (one per I/O channel), each of which is characterized by its numerator and denominator. The input arguments num and den are then cell arrays of row vectors such that:

• num and den have as many rows as outputs and as many columns as inputs.

• Their (ij) entries num{i,j} and den{i,j} specify the numerator and denominator of the transfer function from input j to output i.

If all SISO entries have the same denominator, you can also set den to the row vector representation of this common denominator.

Examples

Create a two-input digital filter with input names 'channel1' and 'channel2':

num = {1 , [1 0.3]};
den = {[1 1 2] ,[5 2]};
H = filt(num,den,'inputname',{'channel1' 'channel2'})

This syntax returns:

Transfer function from input "channel1" to output:
1
-----------------
1 + z^-1 + 2 z^-2

Transfer function from input "channel2" to output:
1 + 0.3 z^-1
------------
5 + 2 z^-1

Sample time: unspecified

Tips

filt behaves as tf with the Variable property set to 'z^-1'. See tf entry below for details.