Developer Reference

  • 2020
  • 07/15/2020
  • Public Content
Contents

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(e
    )
    is the Fourier transform of
    x(n)
  • H(e
    )
    is the Fourier transform of
    h(n)
  • Y
    1
    (e
    )
    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
)
:
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(e
    )|
    2
    , which is purely real-valued)
  • 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:
  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.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804