- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
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.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page