Community
cancel
Showing results for 
Search instead for 
Did you mean: 
sisyphuscafe
Beginner
74 Views

How to perform IIR bandpass filter?

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
74 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