Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

How to perform IIR bandpass filter?

sisyphuscafe
Beginner
126 Views
I have a digital sample signal that I would like to filter into multiple frequency bands. I've been able to implement a passable result using the FIR filters, but am struggling a bit w/the IIR filters.

The approach I'm using is to get a block of the signal (length of block is a power of 2), perform a forward FFT, filter the block, saving the result in a file.

The IPP library provides methods to generate low-pass (ippsIIRGenLowpass) and high-pass (ippsIIRGenHighpass) filter coefficients (taps). I don't see a method for generating band-pass filter coefficients, however.

So, I've tried calling the filter method twice, first with the low-pass taps, setting the taps in the state buffer w/ippsIIRSetTaps, then passing the resulting vector to filter method again after setting the high-pass taps in the state buffer. The result is not satisfactory.

Any tips on how best to use the library would be most appreciated.

Thanks.
0 Kudos
1 Reply
Vladimir_Dudnik
Employee
126 Views

Hello,

there is comment from our expert:

IIR functions work algorithmically correct and produce the same result (as they use the same approach direct form 2 delay line) as MatLab. I can guess thatcustomer doesnt re-init delay line for the second stage of IIR filtering. Also he cant use the same coefficients for frequency domain (after FFT) as for the time-domain recommend to double check ifhe use the right approach.

Regards,
Vladimir

Reply