如何在频率中指定一定数量的fft点

Posted

技术标签:

【中文标题】如何在频率中指定一定数量的fft点【英文标题】:How to specify a certain number of fft points in a frequency 【发布时间】:2016-11-24 19:41:42 【问题描述】:

如果我的问题没有任何意义,我提前道歉。我自己也很困惑,因为我很难理解它。这是一个普遍的问题,我需要为我目前正在处理的代码回答这个问题。

我的音频文件 (wav) 的采样率为 44.1 kHz,我想在其上使用 FFT。如果我是对的,这意味着 1 秒内有 44100 个点。我已经满足了 nyquist-shannon-theorem 的规则,即我的 fs/2 > fmax。我的频率分辨率为 4096。我定义了一个变量,即 300 Hz。我想知道里面有多少分。

【问题讨论】:

【参考方案1】:

如果您的意思是 FFT 大小为 4096,采样率为 44.1 kHz,则每个 bin 的分辨率为 44100/4096 = 10.7666015625 Hz,300 Hz 正弦波将在索引为 4096*300/44100 = 27.863945578231293 的 bin 处有一个峰值,所以在实践中,它将在 bin 索引 28 处具有最大值,在相邻的 bin 中有一些能量。 (注意,这是使用从 0 开始的索引的通用约定 - 如果您使用的是 MATLAB,那么索引很可能是基于 1 的,您需要对此进行补偿。)

请参阅this useful answer,了解有关 bin 索引如何与频率相关的更详细说明。

【讨论】:

以上是关于如何在频率中指定一定数量的fft点的主要内容,如果未能解决你的问题,请参考以下文章

如何使用示波器FFT功能查找感兴趣的FFT频率点?

如何从不同的数据框中指定训练集和测试集?

有没有办法在Scalding中指定映射器的数量?

如何在 sonar-project.properties 中指定通配符

有没有办法通过在 SION 中指定频率而不是音符来播放声音?

如何在 Google Charts 中指定小数点分隔符?