快速傅立叶变换结果:频率轴刻度?

Posted

技术标签:

【中文标题】快速傅立叶变换结果:频率轴刻度?【英文标题】:Fast Fourier Transform results: frequency axis scale? 【发布时间】:2012-04-22 22:22:54 【问题描述】:

我使用 Apple 的 Accelerate Framework(在 ios 设备上执行)成功实现了获取数组数据并对其运行快速傅立叶变换的代码。

我现在的问题是频率轴的比例是多少?结果在某些频率范围内具有预期的峰值,但我不确定频率应该是多少。 Accelerate Framework 的 FFT 函数接收一个数组并输出一个具有相同(或更多)数据点数的数组。它是否假设所有这些点在时间上都是等距的?它不将采样频率或时间变量作为输入。频率轴的比例(即每个点的频率增量)是否只是采样周期除以 2*Pi(或类似的东西?)我在文档中找不到很多关于此的信息。我一直在网上寻找类似的问题,但没有找到任何东西。

这在某种程度上是一个数学问题,尽管它在很大程度上取决于 Accelerate Framework 的实现。

谢谢

编辑 我问了一个后续问题here,但还没有人回答。请看一看!

【问题讨论】:

【参考方案1】:

FFT 为您提供线性间隔的频率区间,直至采样频率。这意味着 bin 之间的间距为 (sample frequency) / (number of bins)。

【讨论】:

什么是垃圾箱?垃圾桶有多大? 每个 bin 由一个复数 FFT 结果数组元素表示。第一个 bin 是 DC,然后按上面的方式间隔点。 谢谢。当我们讨论它时,在真实数据的 FFT 中,FFT 数据的符号表示什么?正面数据是真实的,负面数据是虚构的吗?我这样说是因为当我通过 FFT 运行一个简单的正弦和余弦时,余弦给出了向上的脉冲,而正弦给出了向下的脉冲。 直流分量应该怎么做?是你策划的吗? @shim 这完全取决于您的应用程序。这是一个有效的数据点。【参考方案2】:

频率轴刻度不依赖于 Accelerate 框架实现,只依赖于时域数据的采样率 (FS) 和 FFT 的长度 (N)。任何 FFT。

对于严格的实数数据输入,FFT 结果的后半部分将只是前半部分的复共轭。通常只有前半部分(最高 FS/2)被绘制为真实数据。

【讨论】:

哪一半?每个其他数据点都是复共轭吗?还是数据的后半部分?加速框架具有打包/解包数据的功能(ztoc、ctoz)。如果我想把真实数据放在一起,我不应该在最后解包吗?似乎复数点是负数,实数是正数。那有意义吗?我认为是这样,因为我对 sin(t) 和 cos(t) 进行了 FFT,而 cos 有一个尖峰指向上方,而正弦有一个尖峰指向下方。

以上是关于快速傅立叶变换结果:频率轴刻度?的主要内容,如果未能解决你的问题,请参考以下文章

选带快速傅立叶变换ZOOM-FFT的matlab实现

python 图像的离散傅立叶变换

具有意外结果的正弦波傅立叶变换

傅立叶变换与小波分析

基于MATLAB的FFT傅立叶分析

傅立叶变换FFT中采样频率有啥意义