我知道幅度和相位是在 fft 结果的实部和虚部中捕获的。但是每个样本如何捕获阶段?
相位是否与时域提供的 N 个离散样本相关?
也就是说,如果输入样本在一秒钟内包含 44100 个样本,那么 FFT 的每个结果值是否代表相位的 1/44100?
例如,第一个 FFT 值是频率 1/44100,第二个值是 2/44100,等等?
我知道幅度和相位是在 fft 结果的实部和虚部中捕获的。但是每个样本如何捕获阶段?
相位是否与时域提供的 N 个离散样本相关?
也就是说,如果输入样本在一秒钟内包含 44100 个样本,那么 FFT 的每个结果值是否代表相位的 1/44100?
例如,第一个 FFT 值是频率 1/44100,第二个值是 2/44100,等等?
FFT 的输出简单地表达了如何从谐波相关的正弦分量之和重建原始波形。
每个输出值表示相应分量的幅度和相位(即偏移角)。重要的是要注意每个组件都是一个复杂的正弦曲线(某种形式的东西A * exp(j * 2pi * f * n + phi)
,不是A * cos(2pi * f * n + phi)
)。
频率隐含在输出样本的索引中;如果您的采样率fs
(以 Hz 为单位)并且您有一个长度N
FFT,则对应于输出样本的中心频率i
为i*fs/N
(以 Hz 为单位)。
当您在问题的某些部分中表示“频率”时,我认为您是在说“相位”?
无论如何,如果您询问频率,它的工作原理与“输入”数据中的时间非常相似。您从时间序列数据开始,其中每个数组元素都在不同的时间。在 fft 之后,“输出”是相似的,但每个元素的频率不同。
它们的范围从恒定偏移到可能的最高频率,以统一的步骤,但实际顺序可能取决于您使用的实现。所以每个复数代表一个特定频率的幅度和相位 - 您可以从输出阵列中的位置计算出频率。
如果您有 N 个覆盖时间 T 的点,则最高频率为 N/(2T),并且值是 1/T 的倍数(包括 0Hz - 恒定偏移)。例如,1 分钟内 60 个样本(N=60 T=60s)给出 0.5Hz 的最高频率。没有更高的频率,因为数据的采样不够好,无法清楚地挑选出来(例如,1 Hz 信号在每个样本上可能处于最大值,因此会显示为恒定信号)。这个限制称为奈奎斯特频率
(上面假设输出是一个复数数组;通常它是一个浮点数/双精度数组,您需要将复数从数组不同部分的实数和虚数拼凑起来——这一切都变得有点混乱,但是这个概念与返回一个复数值数组相同)。
ps通常当我必须从某个地方使用fft例程时,我会制作一些具有恒定偏移和两个已知频率正弦波的数据,然后对其进行fft并查看结果。如果您使每个组件的幅度不同,那么通常很明显事物是如何排序的。您还可以检查比例,因为有时它具有/省略了 2pi 的因子...
相位与输入样本中周期性信号分量的时间偏移有关。
这是如何看待这个...
首先,回想一下Fast FT与Discrete FT完全相同,只是以更有效的方式计算。因此,回到基础,我们将转换定义为:
X k (0<=k<=N-1) = 0<=n<=N-1 的总和(x n * e -j * 2*π * n * k/N )
其中:
x n是输入样本
X k是输出/转换样本
N 是样本数
现在,这个复数指数 e -j * 2*π * n * k/N在几何上表示 Re/Im 平面中的圆(半径为 1,以 (0,0) 为中心)上的点。如果您忘记了这一点,请参阅欧拉公式。
对于一个固定值k
(表示输出/变换中感兴趣的特定频率),N/k
对于 all ,这个圆圈上只有不同的点n
。
再看公式中的总和:
0<=n<=N-1 (x n * e -j * 2*π * n * k/N )的总和
在这个总和中,您通过输入信号 x n将矢量从点 (0,0) 缩放到圆上的上述点。您正在使这些向量更长或更短。然后你把它们加起来。
如果碰巧 x n包含一个周期为 的周期信号N/k
,那么该信号的所有最大值都将在圆上的一个点对齐并相互放大。信号的最小值和所有其他值也有贡献。
简而言之,您在这里所做的是将输入 x n缠绕到圆圈上。如果信号中存在周期性分量并且其周期与“周长”(=圆上的点数)匹配,则由于对齐的最大值和最小值,您将获得该周期/频率的峰值。如果周期与“周长”不匹配,则最大值会无处不在并相互抵消。这就是傅立叶变换的精髓,这就是它的工作原理和原因,没有魔法,没有真正复杂的数学,简单地将绳子缠绕到卷轴上。
您在 X k中得到的相位只是表示圆上所有最大值对齐的点。如果您将 x n中的周期信号移动一个或几个样本,则对齐点也会移动,并且相位会相应地改变。
这就是几何解释。
现在,您可以将其视为傅里叶变换的数学属性。
如果你有你的 x n和它的变换 X k =F{x n },那么 x n-m的变换将是 F{x n-m } = F{x n } * e -j * 2*π * k * m/ N = X k * e -j * 2*π * k * m/N。这称为移位定理/属性。您应该能够轻松得出这一结论。e -j * 2*π * k * m/N的这个因子的大小为 1,并且仅在乘以 X k时才会改变相位。
相位与频率无关。
此外,采样信号 x n的最大频率是采样率的一半(实际上,仅比一半小一点,请参阅奈奎斯特采样定理)。这意味着您的案例永远不会在 22050 Hz 或以上为您提供任何东西,因为更高频率的所有信息都已丢失到采样中。
X k值的一半将为您提供负频率的分量。那是因为当k > N/2
你在圆上的点之间移动的方向反转时。因此,尽管输出/变换中有如此多的样本,但最大频率仍然小于采样率的一半。
FFT 结果的频率不会被结果向量中的复数捕获。倍频器由包含复数的每个数组元素的索引捕获。然后你取索引并乘以一个频率比例因子,它与时域样本的采样率以及 FFT 长度的倒数有关,得到每个 FFT bin 的中心频率。
每个 FFT 结果向量元素表示的每个频率正弦波都有自己独立的相位,不与任何其他 bin 或数组元素共享。
如果您不知道 FFT 的长度,则频率将是未知的。所以你问题最后一部分的答案可能是未知或否。