如何使用FFT对大块数据绘制幅频响应?

时间:2011-04-15 09:48:19

标签: fft frequency-analysis amplitude

我是一名程序员而不是一名优秀的数学家,所以FFT对我来说就像是一些黑盒子,我想把一些数据扔进一些FFT库并得到一个可绘制的AFR(幅频响应)数据,就像一些软件像Rightmark音频一样:

http://www.ixbt.com/proaudio/behringer/3031a/fr-hf.png

现在我有一个系统可以播放对数扫频正弦(短淡入/淡出以避免锐边)并记录音频系统的响应。

据我了解,我需要用0填充输入到2 ^ n,使用音频样本作为复数的实部,设置imaginary = 0,然后我将从FFT中获取频率区间数组输入数据的一半长度。

但是,如果我不需要像音频缓冲器给我的那么大的频率分辨率,那么正确的方法是制作1024个大小的FFT窗口,提供音频块并获得512个频率点考虑到我传递的所有数据?或者也许这是不可能的,我需要立即提供整个扫描正弦以取回我需要的所有AFR数据?

还需要平滑吗?我已经看到FFT的原始输出可能真的很吵。什么是尽早避免噪音的正确方法,所以我只看到噪音,因为它来自AFR本身,而不是来自FFT计算(就像我给出的链接中的图像 - 看起来非常流畅)? / p>

我是C ++ / C#程序员。我将非常感谢任何显示如何处理扫描正弦末端的块返回AFR数据的示例。目前我只找到了实时处理小块数据的例子,这不是我需要的。

1 个答案:

答案 0 :(得分:1)

Window function可以帮助您降低噪音

您需要做的就是将输入数据乘以w(n):

enter image description here