【发布时间】:2011-08-06 05:02:44
【问题描述】:
我是一个程序员,不是一个好的数学家,所以 FFT 对我来说就像一个黑匣子,我想把一些数据扔到一些 FFT 库中,然后得到一个可绘制的 AFR(幅频响应)数据,就像一些软件一样就像 Rightmark 音频一样:
http://www.ixbt.com/proaudio/behringer/3031a/fr-hf.png
现在我有一个系统可以播放对数扫频正弦信号(使用短淡入/淡出以避免尖锐的边缘)并记录音频系统的响应。
据我了解,我需要将输入用零填充到 2^n,使用音频样本作为复数的实部,设置 imaginary=0,然后我将从 FFT 中返回频率区间输入数据长度为一半的数组。
但是如果我不需要像几秒钟的音频缓冲区给我的那样大的频率分辨率,那么什么是正确的方法来制作,比如说,1024 大小的 FFT 窗口,输入音频块并取回 512 个频率点考虑到我传入的所有数据?或者这可能是不可能的,我需要一次输入整个扫描正弦来取回我需要的所有 AFR 数据?
还需要平滑吗?我已经看到 FFT 的原始输出可能非常嘈杂。尽早避免噪声的正确方法是什么,所以我只看到噪声来自 AFR 本身而不是来自 FFT 计算(就像我给出的链接中的图像 - 它看起来很平滑)?
我是一名 C++/C# 程序员。我将不胜感激任何展示如何处理扫频正弦端取回 AFR 数据的示例。目前我只找到了实时处理小块数据的示例,这不是我需要的。
【问题讨论】:
标签: fft frequency-analysis amplitude