如何增加 FFT 窄带中的点数以进行 1/3 倍频程分析

How to increase the no of points in a FFT Narrow band for 1/3 octave analysis

我正在计算压力-时间信号的声压级。 每秒样本数为 9831。(dt = 0.0001017 秒) 一个简单的示例案例总共收集了749个样本。

我在这个例子中使用了 512 个 FFT 点,所以频率从 19.2 Hz 开始到 4877 Hz,dF = 19.2 Hz。

我想计算 1/3 倍频程的 SPL(声压级)。

所以我采用 10 频段倍频程频率范围 1Hz、1.25Hz、1.6Hz、2Hz、2.5Hz、3.15Hz、4Hz、5Hz、6.3Hz、8Hz,它是 10 的倍数(即接下来是 10Hz、12.5Hz、16Hz……直到5000赫兹)

注意这是 1/3 倍频程的中心频率。

每个频段都有较低和较高的频率("fl" 和 "fu"),如下所示。 "freq"是根据采样率计算的,所以它增加了19.2。 "i"代表fft点数,注意点1为0Hz。 "j"表示fft波段数,随着频率的增加,波段内的点数增加。

 i=2 j=13 fl=   17.82  freq=    19.2  fu=   22.27  
 i=3 j=16 fl=   35.64  freq=    38.4  fu=   44.54  
 i=4 j=18 fl=   56.13  freq=   57.61  fu=   71.27  
 i=5 j=19 fl=   71.27  freq=   76.81  fu=   89.09  
 i=6 j=20 fl=   89.09  freq=   96.01  fu=   111.4  
 i=7 j=21 fl=   111.4  freq=   115.2  fu=   142.5  
 i=8 j=21 fl=   111.4  freq=   134.4  fu=   142.5  
 i=9 j=22 fl=   142.5  freq=   153.6  fu=   178.2  
 i=10 j=22 fl=   142.5  freq=   172.8  fu=   178.2  
 i=11 j=23 fl=   178.2  freq=     192  fu=   222.7  
 i=12 j=23 fl=   178.2  freq=   211.2  fu=   222.7  
 i=13 j=24 fl=   222.7  freq=   230.4  fu=   280.6  
 i=14 j=24 fl=   222.7  freq=   249.6  fu=   280.6  
 i=15 j=24 fl=   222.7  freq=   268.8  fu=   280.6  
 i=16 j=25 fl=   280.6  freq=     288  fu=   356.4  
 i=17 j=25 fl=   280.6  freq=   307.2  fu=   356.4  
 i=18 j=25 fl=   280.6  freq=   326.4  fu=   356.4  
 i=19 j=25 fl=   280.6  freq=   345.6  fu=   356.4  
 i=20 j=26 fl=   356.4  freq=   364.8  fu=   445.4 

所以这导致我计算较低倍频程内的 rms 得到不好的结果,因为它在频带内没有足够的点(通常是 1 或 2),随着频率的增加平均更好(例如在band "j"= 25 四点用于rms计算。

有什么方法可以通过将频率范围分为两个(低频带和高频带)并应用不同的 fft 采样大小来包括尽可能多的低频带频率(通常从 100Hz 到 600Hz)内的点来改进 rms 计算).

我也打算用Hann window函数来减少泄漏,我应该在FFT之前应用还是在FFT之后应用。

欢迎您提出建议。

Hannwindow应用于时域,FFT

之前

至于频率分辨率——没有灵丹妙药——如果你只有 749 个样本,采样率为 9.8 kHz,那么这将限制可用的分辨率。如果您使用更长的混合基数 FFT,例如,您可以获得更多的分辨率。 N = 735 分解得很好,可以与 FFTW 一起使用。您还可以使用零填充来有效地插值输出频谱,例如将 749 个样本填充到 4096 个零样本,而不是 4096 点 FFT。这实际上不会生成更多信息,但插值可能很有用。

您可以在 FFT 之前补零以插入更多频率结果箱。然后可以使用这些插值频率仓将频谱更精细地划分为更均匀大小的频带。