InfiniteImpulseResponseFilter - Maple Help

SignalProcessing

 InfiniteImpulseResponseFilter
 filter a signal with a finite impulse response filter

 Calling Sequence InfiniteImpulseResponseFilter( A, taps, delayline ) IIRFilter( A, taps, delayline )

Parameters

 A - Array of real numeric values; the signal to filter taps - Array of real numeric values; the tap coefficients delayline - (optional) Array of real numeric values; initial values for the delay line

Options

 • container : Array, predefined Array for holding the result

Description

 • The InfiniteImpulseResponseFilter( A, taps, delayline ) command filters the signal (sample) in the array A using the tap coefficients in the array taps.  The taps array may be generated by using the GenerateButterworthTaps and GenerateChebyshev1Taps commands, or you may provide your own custom filtering coefficients.
 • The delayline argument is optional.  If delayline is provided, it must be an Array of real numeric values and the same length as taps.
 • Before the code performing the computation runs, the input Arrays A, taps, and (if present) delayline are converted to datatype float[8] if they do not have that datatype already. For this reason, it is most efficient if the input Arrays have this datatype beforehand.
 • If the container=C option is provided, then the results are put into C and C is returned. With this option, no additional memory is allocated to store the result. The container must be an Array of size equal to the size of A and having datatype float[8].
 • The IIRFilter command is provided as an alias.

 • The SignalProcessing[InfiniteImpulseResponseFilter] command is thread-safe as of Maple 17.

Examples

 > $\mathrm{with}\left(\mathrm{SignalProcessing}\right):$
 > $\mathrm{with}\left(\mathrm{plots}\right):$
 > $A≔\mathrm{GenerateJaehne}\left(512,4095\right):$
 > $\mathrm{PA}≔\mathrm{SignalPlot}\left(A,\mathrm{title}="Original Signal"\right):$
 > $\mathrm{taps}≔\mathrm{GenerateButterworthTaps}\left(9,\frac{3}{10},\mathrm{filtertype}="highpass"\right)$
 $\left[\begin{array}{cccccccccccccccccccc}0.0010653945235978043& -0.00958855071238024& 0.03835420284952096& -0.08949313998221556& 0.13423970997332335& -0.13423970997332335& 0.08949313998221556& -0.03835420284952096& 0.00958855071238024& -0.0010653945235978043& 1.0& 1.791581352788599& 2.5318998808981164& 2.118229420341918& 1.3707562943932108& 0.6090389130764522& 0.19933155696294377& 0.04310473101527608& 0.005804261654307692& 0.00035558060425748875\end{array}\right]$ (1)
 > $B≔\mathrm{InfiniteImpulseResponseFilter}\left(A,\mathrm{taps}\right):$
 > $\mathrm{PB}≔\mathrm{SignalPlot}\left(B,\mathrm{title}="Filtered Signal"\right):$
 > $\mathrm{display}\left(⟨⟨⟨\mathrm{PA}⟩,⟨\mathrm{PB}⟩⟩⟩\right)$

 > 

Compatibility

 • The SignalProcessing[InfiniteImpulseResponseFilter] command was introduced in Maple 17.