Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

ipps IIR functions not working?!

m1chatel
Beginner
396 Views
Hi,

I've used some Matlab code to generate filter taps for creating an A-weighting filter at 44.1kHz. The taps are:

B = 0.2279, -0.4559, -0.2279, 0.9117, -0.2279, -0.4559, 0.2279
A = 1, -4.0196, 6.1894, -4.4352, 1.4208, -0.1418, 0.0044

I've then tried to use the ipps IIR methods to filter some audio using this filter design, first using ippsIIRInitAlloc_32f to specify the filter taps and order, then ippsIIR_32f_I to do the filtering.

The resulting audio output is just a click! Any ideas what the problem might be? Are the filter taps for the IIR methods specified in the same way as the 'filter' method in Matlab?

Any help would be much appreciated!

Thanks!
Michael
0 Kudos
2 Replies
m1chatel
Beginner
396 Views
In the mean time, I've tried making an approximation to an A-weighting filter by using ippsIIRGenHighpass_64f to create a highpass filter with a cutoff at 500Hz far a sample rate of 44100Hz:

result = ippsIIRGenHighpass_64f(500/44100, 0, 7, taps, ippButterworth)

I've then used these filter taps with ippsIIRInitAlloc_32f, then ippsIIR_32f_I to do the filtering. Once again it doesn't work! The resulting array gradually increments up to infinity until it hits NaN. Any ideas?!

Has anyone else had any problems/successes using the IIR functions?
0 Kudos
PaulF_IntelCorp
Employee
396 Views
Have you had any luck with the samples in the documentation? Here's a link:

http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/ippxe/ipp_manual_lnx/hh_goto.htm#IPPS/ipps_ch6/functn_IIR.htm

Might want to try working with a low-pass filter, first.

I'm speculating, but if you are generating a high-pass filter, you may be susceptible to numerical rounding errors that are causing your filter output do drift as you describe. No filter can sample at an infinite rate, so you can never truly build an open-ended high-pass filter; you might need to create a band-pass filter instead.
0 Kudos
Reply