I want to A-weight a time series with arbitrary sample rate.
An analog A-weighting filter is defined exactly by IEC 61672-1. But there's no definition for a digital filter. One method is to use the bilinear transform (BLT) to convert the analog filter to the digital filter (as done here Applying A-weighting). However this method suffers from extreme warping near nyquist (even when the analog poles/zeros are pre-warped):
Figure 1: A-weighting frequency response comparison where the sample rate is $25600\textrm{ Hz}$.
Instead I'm thinking of using an algorithm than can design a digital IIR filter with arbitrary frequency response and plugging in the frequency response of the analog A-weighting filter.
- Is this a good approach?
- If so, is there a particular algorithm that would be well suited for this?
I've looked into MATLAB's yulewalk
but I would need a corresponding Python implementation to try out. I've also come across Berchin's FDLS method in a few places, like this question for instance, but all of the links appear to be broken.
No comments:
Post a Comment