1

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

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

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

据我了解,我需要将输入用零填充到 2^n,使用音频样本作为复数的实部,设置虚数 = 0,然后我将从 FFT 中返回频率箱阵列一半输入数据的长度。

但是,如果我不需要像几秒钟的音频缓冲区给我的那样大的频率分辨率,那么正确的方法是制作,比如说,1024 大小的 FFT 窗口,输入音频块并取回 512 个频率点,其中考虑到我传入的所有数据?或者也许这是不可能的,我需要一次输入整个扫描正弦来取回我需要的所有 AFR 数据?

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

我是一名 C++/C# 程序员。我将不胜感激任何展示如何处理扫频正弦端取回 AFR 数据的示例。目前我只找到实时处理小块数据的示例,这不是我需要的。

4

1 回答 1

1

窗口功能应该可以帮助您减少噪音

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

在此处输入图像描述

于 2012-07-08T02:19:17.423 回答