复数如何捕获FFT结果中的相位,幅度和频率?

时间:2012-04-24 21:42:31

标签: audio signal-processing fft

我知道幅度和相位是在fft结果的实部和虚部中捕获的。但每个样本如何捕获阶段?

相位是否与时域中提供的N个离散样本相关?

也就是说,如果输入样本包含44100个样本一秒钟,则FFT的每个结果值代表相位的1/44100?

例如,第一个FFT值是频率1/44100,第二个值是2/44100,依此类推?

4 个答案:

答案 0 :(得分:5)

FFT的输出简单地表达了如何从谐波相关的正弦分量之和重建原始波形。

每个输出值表示相应组件的幅度和相位(即偏移角)。重要的是要注意每个组件都是复杂的正弦曲线(形式为A * exp(j * 2pi * f * n + phi),而不是A * cos(2pi * f * n + phi))。

频率隐含在输出样本的索引中;如果您的采样率为fs(以Hz为单位)且长度为N FFT,那么与输出样本i对应的中心频率为i*fs/N(以Hz为单位)

答案 1 :(得分:4)

我认为你在问题的某些部分表示“频率”时会说“阶段”吗?

无论如何,如果你问的是频率,它的工作方式与“输入”数据非常相似。从时间序列数据开始,每个数组元素处于不同的时间。在fft之后,“输出”类似,但每个元素的频率不同。

它们的范围从恒定偏移到可能的最高频率,采用统一步骤,但实际顺序可能取决于您使用的实现。所以每个复数代表一个特定频率的幅度和相位 - 你可以从输出数组中的位置计算出频率。

如果你有N个点覆盖时间T,则最高频率为N /(2T),值为1 / T的倍数(包括0Hz - 恒定偏移)。例如,超过1分钟的60个样本(N = 60T = 60s)给出0.5Hz的最高频率。没有更高的频率,因为数据的采样不能很好地清除它们(例如,1 Hz信号可能在每个样本上达到最大值,因此会显示为恒定信号)。此限制称为nyquist frequency

(上面假设输出是一个复数数组;通常它是一个浮点数/双精度数组,你需要将数组中不同部分的实数和虚数值的复数组合在一起 - 这一切都有点凌乱,但概念与返回一组复杂值的概念相同。)

ps通常当我必须从某个地方使用fft例程时,我会制作一些具有恒定偏移和两个已知频率正弦波的数据,然后fft并查看结果。如果你使每个组件的振幅不同,那么通常很明显是如何排序的。你也可以查看比例,因为有时候会有/省略2pi ...

答案 2 :(得分:4)

相位与输入样本中周期性信号分量的时间偏移有关。

以下是如何看待这个...

首先,回想一下 Fast FT 离散FT 完全相同,只是以更有效的方式计算。因此,回到基础,我们将变换定义为:

X k (0 <= k <= N-1) = sum 为0&lt; = n&lt; = N-1 ( x n * e -j * 2 *π* n * k / N

其中:
x n 是输入样本
X k 是输出/转换样本
N是样本数

现在,这个复指数e -j * 2 *π* n * k / N ,几何上表示圆上的点(半径为1,以(0,0)为中心) Re / Im飞机。如果您忘记了这一点,请参阅Euler's formula

对于k的固定值(表示输出/变换中感兴趣的特定频率),对于所有N/k,此圈上的n个不同点不超过N/k

再次查看公式中的总和:

为0&lt; = n&lt; = N-1 (x n * e -j * 2 *π* n * k / N

在此总和中,您通过输入信号x n 将矢量从点(0,0)缩放到圆圈上的上述点。你正在使这些向量更长或更短。然后你就把它们加起来了。

如果发生x n 包含周期为k > N/2的周期信号,则该信号的所有最大值将全部对齐在圆上的一个点并排序互相放大信号的最小值和所有其他值也有贡献。

简单地说,你在这里做的是将输入x n 缠绕到圆上。如果信号中存在周期性分量且其周期与“周长”(=圆上的点数)匹配,则由于对齐的最大值和最小值,您将得到该周期/频率的峰值。如果周期与“周长”不匹配,则最大值遍布整个地方并相互抵消。这就是傅立叶变换的本质,这就是它的工作原理和原因,没有魔法,没有真正复杂的数学,简单地将绳索缠绕在卷轴上。

你在X k 中得到的相位只是表示圆圈上所有最大值对齐的点。如果将x n 中的周期信号移动一个样本或几个,则对齐点也会发生偏移,相位也会发生相应的变化。

这是几何解释。

现在,您可以看到与傅立叶变换的数学属性相同的东西。

如果您的x n 且其变换X k = F {x n },那么x 的变换nm 将为F {x nm } = F {x n } * e -j * 2 *π* k * m / N < / sup> = X k * e -j * 2 *π* k * m / N 。这称为shift theorem/property。你应该能够琐碎地得出这个。该因子e -j * 2 *π* k * m / N 的幅度为1,只有在乘以X k 时才会改变相位。

这个阶段与频率无关。

此外,采样信号的最大频率x n 是采样率的一半(实际上,只有一点点,小于一半,见Nyquist sampling theorem)。这意味着FT你的情况永远不会给你任何等于或高于22050赫兹的东西,因为更高频率的所有信息都已经丢失了。

X k 值的一半将为您提供负频率的分量。这是因为当{{1}}时,你在圆圈上的点之间移动的方向会反转。因此,尽管输出/变换中有如此多的样本,但最大频率仍然低于采样率的一半。

答案 3 :(得分:1)

FFT结果的频率不会被结果向量中的复数捕获。通过包含复数的每个数组元素的索引捕获倍频器。然后取索引并乘以频率比例因子,该因子与时域采样的采样率以及FFT的长度的倒数相关,以获得每个FFT箱的中心频率。

每个FFT结果向量元素表示的每个频率正弦曲线都有自己独立的相位,不与任何其他bin或数组元素共享。

如果您不知道FFT的长度,则频率将是未知的。因此,问题最后一部分的答案可能是“未知”或“否”。