我想计算给定信号的响度,并且遇到了这个线程。我对它的A加权方面有些困惑。我无法发布图片,但我认为该网站具有我需要的公式。 (Wa = 10log ...)

我不明白的是如何在程序中实际使用它。如果f代表频率,那么大概我可以对值进行硬编码,因为它们将保持恒定。如果是这种情况,如何将Wa应用于样本值,我使用什么值?我是否要计算功率谱以获取WINDOW_SIZE/2值,然后将频带中的每个值与相关的预先计算的Wa值相乘,或者这样做是错误的方法?预先谢谢您。

#1 楼

是的,您可以对值进行硬编码,对信号进行FFT,然后乘以硬编码的值,然后从Parseval定理(示例)中获得频域中的幅度。

您还可以实现数字滤波器,并在时域中进行。这是Matlab代码以及我对Python的翻译。

请注意,双线性变换使数字滤波器的滚降速度比模拟滤波器的滚降速度快,从而在常见采样率下引入了测量误差。一个简单的解决方法是先对数据进行上采样,以使差异最小化。此处的其他过滤器设计方法:http://dsp.stackexchange.com/q/36077/29

评论


$ \ begingroup $
谢谢,我的理解更好了。在您的Parseval示例中,rms_flat是RMS方程(SQRT(x1 ^ 2 + x2 ^ 2 ... xn ^ 2 / n)),信号的rms_flat与FFT的rms_flat有什么区别?
$ \ endgroup $
– TryNCode
2011-10-13 14:45

$ \ begingroup $
@ExpAns:是的,rms_flat()只是sqrt(mean(absolute(a)** 2))。 / n在外面。信号的RMS值和FFT的比例因子相同。
$ \ endgroup $
– Endolith
2011年10月13日在15:53