0

我正在计算压力时间信号的声压级。每秒的样本数为 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.5赫兹,16赫兹.....直到5000赫兹)

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

每个频段都有较低和较高的频率(“fl”和“fu”),如下所示。“频率”是根据采样率计算的,因此它以 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),随着频率的增加,平均更好(例如在频带“j”= 25 四个点用于 rms 计算)。

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

我还计划使用 Hann 窗函数来减少泄漏,我应该在 FFT 之前还是在 FFT 之后应用。

欢迎您提出建议。

4

2 回答 2

1

在 FFT之前,在时域中应用 Hann 窗。

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

于 2015-08-14T15:36:15.377 回答
0

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

于 2015-08-18T17:38:46.373 回答