【发布时间】:2017-02-11 20:35:02
【问题描述】:
我对信号处理很陌生,所以如果我有点咆哮,请原谅我。我已经为 Windows 下载并安装了 FFTW。文档还可以,但我仍有疑问。
我的总体目标是从计算机上的声卡中以 44100 采样/秒的速度采集原始音频数据(此任务已使用库和我的代码实现),然后对这些音频数据块执行 DFT。
我只对在音频中找到一系列频率分量感兴趣,我不会执行任何逆 DFT。在这种情况下,是否需要真正的转换,因此需要 fftw_plan_r2r_1d() 函数?
我要转换的数据块有 11025 个样本长。我的函数调用如下所示。这将产生一个包含 11025 个 bin 的频谱阵列。我如何知道结果中的最大频率分量?
我相信 bin 间距是 Fs/n,44100/11025,所以 4。这是否意味着我将在阵列中拥有从 0 Hz 一直到 44100Hz 的频谱,步长为 4,或更高奈奎斯特频率 22200 的一半?
这对我来说是个问题,因为我只想搜索从 60Hz 到 3000Hz 的频率。有没有办法限制变换范围?
我没有看到函数的任何参数,或者可能有其他方法?
非常感谢您对此提供的任何帮助。
p = fftw_plan_r2r_1d(11025, audioData, spectrum, FFTW_REDFT00, FFTW_ESTIMATE);
【问题讨论】:
-
每个问题一个问题。
标签: c audio signal-processing fft fftw