This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


Specify discrete transfer functions in DSP format


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


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:


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


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.


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.


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 + z^-1 + 2 z^-2
Transfer function from input "channel2" to output:
1 + 0.3 z^-1
 5 + 2 z^-1
Sample time: unspecified

More About

collapse all


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

See Also

| |

Introduced before R2006a

Was this topic helpful?