Developer Reference for Intel® Integrated Performance Primitives

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

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):



The final time reversal in the frequency domain results in:



You can see from the resulting equation that:

To initialize and use an IIRIIR filter, follow this general scheme:

  1. Call ippsIIRIIRInit to initialize the IIRIIR filter in the external buffer. To compute the size of the buffer, use the ippsIIRIIRGetStateSize function.
  2. Call ippsIIRIIR to filter a vector.
  3. Call ippsIIRIIRGetDlyLine and ippsIIRIIRSetDlyLine to get and set the delay line values in the IIRIIR state structure.