IIRIIR Filter Functions
The functions described in this section initialize
an infinite impulse response (IIR) filter and perform a zero-phase digital
filtering of input data in both forward and backward directions. The formulas
below explain why the filtered signal has zero-phase distortion. Consider the
following case in the frequency domain: if
x(n)
is the input sequence and
h(n)
is the IIR filter's impulse response, then the
result of the forward filter pass is:

where
- X(eiφ)is the Fourier transform ofx(n)
- H(eiφ)is the Fourier transform ofh(n)
- Y1(eiφ)is the Fourier transform of the forward filter pass
Backward filtering corresponds to filtering of
time-reversed signal. Time reversal corresponds to replacing φ with -φ in the
frequency domain, so the result of time reversal is:

When the filter is applied for the second time, the
above formula is multiplied by the Fourier transform of the filter's impulse
response function
H(e
iφ
)
:

The final time reversal in the frequency domain
results in:

You can see from the resulting equation that:
- The filtered signal has zero-phase distortion (as the filtering was done with|H(eiφ)|, which is purely real-valued)2
- The filter transfer function has the squared magnitude of the original filter transfer function
- The filter order is double the order of the initialized IIR filter
To initialize and use an IIRIIR filter, follow this
general scheme:
- CallippsIIRIIRInitto initialize the IIRIIR filter in the external buffer. To compute the size of the buffer, use theippsIIRIIRGetStateSizefunction.
- CallippsIIRIIRto filter a vector.
- CallippsIIRIIRGetDlyLineandippsIIRIIRSetDlyLineto get and set the delay line values in the IIRIIR state structure.