【问题标题】:Computing the discrete fourier transform of audio data with FFTW使用 FFTW 计算音频数据的离散傅里叶变换
【发布时间】: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


【解决方案1】:

从上面回答您的一些个人问题:

  • 您需要实数到复数的转换,而不是实数到实数
  • 您将在感兴趣的频率处计算复输出 bin 的幅度 (magnitude = sqrt(re*re + im*im))
  • 频率分辨率确实是Fs / N = 44100 / 11025 = 4 Hz,即每个输出bin的宽度是4Hz
  • 对于实数到复数的变换,您将获得 N/2 + 1 个输出箱,为您提供从 0Fs / 2 的频率
  • 您只需忽略您不感兴趣的频率 - FFT 非常有效,因此您可以承受“浪费”不需要的输出箱(除非您只对相对少量的输出频率感兴趣)

补充说明:

  • 计划创建实际上并不执行 FFT - 通常您创建一个计划然后多次使用它(通过调用 fftw_execute
  • 为了提高性能,您可能希望使用单精度调用(例如,fftwf_execute 而不是 fftw_execute,同样用于计划创建等)

StackOverflow 上一些有用的相关问题/答案:

您可能还想阅读更多类似的问题和答案 - 搜索 标签。

另请注意,dsp.stackexchange.com 是 DSP 理论问题的首选站点,而不是实际的特定编程问题。

【讨论】:

  • 感谢 Paul R。如果我执行真实到真实的转换而不是真实到复杂的转换会发生什么?我一直认为,如果我只对频率分量的幅度感兴趣,我只需要实部。
  • 不,你不需要“只需要实部”——每个频率分量都有一个幅度和一个相位——这表示为一个复数(请参阅上面的第二个要点了解如何获得只是来自复杂输出箱的 magnitude)。请注意,FFTW 支持 real-to-real 变换,但这些不是离散 Fourier 变换,而是离散 Hartley/Cosine/Sine 变换。见FFTW documentation on real transform kinds
  • 再次感谢您的帮助。我知道,我应该在 DSP 页面上问这个问题,因为它更多地与理论有关,而不是特定于编码。采样时域数据的大小是否重要?这是否意味着输出 FFT 箱的幅度会更高。此外,由于我有要转换的离散音频数据,这将是一个实数到复数的转换。那么复杂到复杂的例子是什么。我们什么时候可以拥有复杂的时域数据?
  • 1.采样时域数据的幅度仅在它需要有足够的范围以使您不会受到量化噪声的影响时才重要,但无论如何这通常都是正确的。 2. DFT/FFT 是线性的,所以如果在一个域中将幅度加倍,则在另一个域中将幅度加倍。 3. Complex-to-complex 是一般情况,用在很多地方,例如:通信,你经常有quadrature signals
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
相关资源
最近更新 更多