用于 1/3 倍频程分析的 A 加权数字滤波器

信息处理 信号分析 频谱 噪音 Python
2022-01-24 15:10:32

我想对噪声信号进行 1/3 倍频程分析。但是声压级应该以dB(A)为单位,即,它应该是A加权的。为此,我正在使用此模块中的 A-weight 函数。

从这个链接中,我了解到函数 A-weight 将输入作为信号(以压力(Pa)为单位)和采样频率并将输出作为另一个信号(以压力(Pa)表示)。如果这个输出信号转换成压力水平,应该提供 A 加权压力水平。

现在,我以 A 滤波后的声压信号为起点,使用巴特沃斯滤波器将其转换为 1/3 倍频程频段。对此的参考 - https://stackoverflow.com/questions/56791652/1-3-octave-from-audio-file-with-python

1/3 过滤器为 - 在此处输入图像描述

我为原始信号(未加权)得到的输出图是 - 在此处输入图像描述 这是正确的输出。

应用 A 权重后的输出图是: 在此处输入图像描述 此图不正确。每个波段的权重应该是:

在此处输入图像描述

本表参考

我使用的方法在较低的波段没有给出正确的结果,我不知道为什么。我不想直接使用权重,因为除了 1/3 倍频程分析之外,我还想要一个一般加权的信号。我是 DSP 的初学者,因此非常感谢任何帮助。随意建议可以在 Python 中执行的 A 加权过滤器的替代方法。谢谢

1个回答

根据我的评论,以下是仅用于 33kHz(33000Hz)采样的 A 加权滤波器的非常准确的系数

b = [0.759941332414235 -1.931718891800229 0.5144488202077094 2.040523943539552 -1.283344336756084 -0.5073918947145036 0.3880093863750892 0.03272320276137633 -0.01319156202714533]
a = [1 -2.840785425332851 1.688214038430988 1.889562806030876 -2.289753885038417 0.2591762588766977 0.4062228100411928 -0.122514417900642 0.009877893153322726]

二阶部分:

[1 -1.999817001037482 0.999817017779804 1 -0.3278552435476524 0.02858846174272314]
[1 -2.000182998962519 1.000183015708817 1 -1.992171272584749 0.9921865948281223]
[1 1.403903298176578 0.4701139795164294 1 1.327684185781194 0.4091629729586278]
[1 0.05416509551979914 -0.03692436132666149 1 -1.848443094981644 0.8511063988059516]

0dB @ 1kHz 和 g = 0.759941332414235

在此处输入图像描述