如果傅立叶变换提供明显不准确的结果,我能做什么进行补救,第4部分
扫描二维码
随时随地手机看文章
在这一系列中,我们回顾了在微软的EXECL中实现的快速傅立叶变换(FFT),并研究了窗口功能。在最后一部分,我们将讨论相位测量,但首先,让我们回顾一下 第三部分 ,我们通过研究窗口不起作用的信号得出结论。
为什么窗口不起作用?
图1a 显示原始时域信号和定义它的方程, ω = 2π(39.1 Hz) and φ 表示相位噪声。计算 φ ,我用了这个公式:
φ = -0.5+RAND()
兰德返回0和1之间的随机值,所以表达式返回-0.5和+0.5之间的随机值,表示1拉迪亚尖峰到峰值随机相位噪声。图1B重复了第3部分的图8,但是添加了一个没有相位噪声的信号变换(黑迹),它具有预期的振幅。这个问题不是窗口能够解决的光谱泄漏问题,而是相位噪声形式的实际信号损害。
图1当j=0时,样本信号(a)产生黑色FFT跟踪(b)。
FFT能测量相位噪声吗?
EelelFFT不是这方面的一个很好的工具,它可以使用前面关于相位噪声的系列中讨论的技术来解决(参见 第一部分 和 第2部分 )。但FFT能测量出复FFT中虚部与实部比例的相角:弧线。
似乎很容易。
当心点。考虑蓝色向量 图2 .相角 θ 是0.75/0.5=1.5的弧线,您可以使用elelatan()函数正确地找到 θ =56.3度。但是尝试同样的方法对橙色向量。你的答案是-56.3°(红色向量),而不是预期的123.7°。
图2在计算Q时跟踪象限。
是什么引起的?
一旦你计算出这个比率,你就会剥离出 X 和 y 个体贡献商的极性。例如,0.75/-0.5(象限2)和-0.75/0.5(象限4)均等于-1.5和ATAN()默认值为象限4。作为补偿,我们可以添加一些条件编程步骤:"如果x<0和y&tt;0,然后象限2"。幸运的是,EXERL包括了ATAN2( X , y 功能,这对我们来说是如此。
我们如何修改我们的电子表格来计算相位?
若要在第2部分的图4电子表格中添加相位计算,请按红色的步骤。 图3 .
图3按照红色步骤将相位计算加入FFT。
运用 图4A 以波形样本作为FFT输入,我们绘制了图4B的FFT大小和相位--后者在39.1赫兹处约为2.42弧度,即139°。
图4样本波形(A)的FFT会产生幅值和相位图(B)。
啊!我可以买139 在39.1赫兹处°。但余下的阶段图是怎么回事?
让我们再看一看电子表格,然后向下滚动到39.1赫兹。 图5 )。在任何其他频率下,复杂FFT的实部分和虚部都应该是零,而FFT则会返回一个一点一点的误差。然而,数字(蓝色突出显示)很小,但不是零。我们基本上是用四舍五入误差和无意义结果的比率的曲线。
图5除了39.1赫兹(黄色)的数值外,FFT的大小、真实和想象的部分都是非常小的数(蓝色)。
一个"清理"情节的方法是,当虚拟部分下降到某一阈值以下时,使用"如果"语句来绘制0( 图6 )。当然,相位不是零。相位需要周期性的变化,如果没有这些变化(例如,任何直流水平,包括零),相位就没有意义。
图6如果语句将无效的相位计算表示为零.
另外,注意图5中我所做的更改。在第一栏中,我用IMAGMON2()代替了ATAAN2(),它直接操作于一个复杂的数字,并计算相位角,而不需要提取真实和想象的部分。