简体   繁体   English

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

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

I am calculating Sound pressure level of a Pressure-Time signal. 我正在计算压力时间信号的声压级。 The number of samples per second is 9831.(dt = 0.0001017 sec) Totally 749 samples are collected for a simple example case. 每秒的样本数量为9831。(dt = 0.0001017秒)对于一个简单的示例案例,总共收集了749个样本。

I am using 512 FFT points for this example case,so the frequency starts from 19.2 Hz to 4877 Hz, and the dF = 19.2 Hz. 在本例中,我使用512个FFT点,因此频率从19.2 Hz开始到4877 Hz,dF = 19.2 Hz。

I want to calculate the SPL(sound pressure level) for 1/3 octave frequencies. 我想为1/3倍频程频率计算SPL(声压级)。

So I take the 10 band octave frequency range 1Hz, 1.25Hz, 1.6Hz, 2Hz, 2.5Hz, 3.15Hz, 4Hz, 5Hz, 6.3Hz, 8Hz, which is a multiple of 10 (ie. it goes next like 10Hz, 12.5Hz, 16Hz.....till 5000Hz) 因此,我将10频段八度音阶频率范围设为1Hz,1.25Hz,1.6Hz,2Hz,2.5Hz,3.15Hz,4Hz,5Hz,6.3Hz,8Hz,这是10的倍数(即下一个像10Hz,12.5 Hz,16Hz .....直到5000Hz)

Note this is Center frequency of a 1/3 octave band. 请注意,这是1/3倍频带的中心频率。

And each band has lower and upper frequencies ("fl" and "fu") as show below. 每个频段都有较低和较高的频率(“ fl”和“ fu”),如下所示。 the "freq" is calculated based on sampling rate, so it increments by 19.2. “频率”是根据采样率计算的,因此增加了19.2。 "i" represent the fft point number, note point 1 is 0Hz. “ i”代表英尺点编号,注意点1为0Hz。 "j" represent the fft band number, as the frequency increases the number of points inside the band increases. “ 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 

So this causes my calculation of rms inside the lower octave bands to give bad results, as it does not have enough points inside bands (usually 1 or 2), as the frequency increases the averaging is better (for example in band "j"= 25 four points are used for rms calculation). 因此,这导致我在较低八度音阶频段内的均方根值计算得出不好的结果,因为在频段内(通常为1或2)没有足够的点,随着频率的增加,平均效果更好(例如,在频段“ j” = 25个四点用于均方根计算)。

Is there any way I could improve the rms calculation by splitting the frequency range into two (low and high band) and apply different fft sampling size to include as much as points inside lower band frequencies( usually from 100Hz to 600Hz). 我有什么办法可以通过将频率范围分为两个(低频带和高频带)并应用不同的fft采样大小来包含低频带频率(通常为100Hz至600Hz)之内的点来改善均方根值。

I also plan to use Hann window function to reduce leakage, should I apply before FFT or after FFT. 我还计划使用Hann窗函数来减少泄漏,应该在FFT之前还是FFT之后应用。

your suggestions are welcome. 欢迎您的建议。

The Hann window is applied in the time domain, before the FFT. Hann窗口在FFT 之前在时域中应用。

As for frequency resolution - there is no silver bullet - if you only have 749 samples at 9.8 kHz sample rate then that will limit the available resolution. 至于频率分辨率-没有灵丹妙药-如果您只有9.8 kHz采样率的749个采样,那么将限制可用的分辨率。 You can get a little more resolution if you use a longer mixed radix FFT, eg N = 735 factorises nicely and will work with FFTW. 如果您使用更长的混合基数FFT,则可以获得更高的分辨率,例如N = 735可以很好地分解,并且可以与FFTW一起使用。 You can also use zero padding to effectively interpolate the output spectrum, eg pad your 749 samples up to say 4096 with zero samples than do a 4096 point FFT. 您还可以使用零填充来有效地对输出频谱进行插值,例如,与4096点FFT相比,将零采样最多填充749个采样(例如4096)。 This doesn't actually generate more information but the interpolation can be useful. 这实际上并不会产生更多信息,但是插值会很有用。

You can zero-pad before the FFT to interpolate more frequency result bins. 您可以在FFT之前进行零填充以内插更多频率结果仓。 Those interpolated frequency bins can then be used to more finely divide the spectrum into more evenly sized bands. 然后,可以使用那些内插的频率仓将频谱更精细地划分为大小更均匀的频带。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM