|
http://blog.163.com/fdy_001/blog/static/12010203320091027111614878/
关键字:全相位 FFT 校正精度
通过对apFFT算法在VC下的编码实现,证实了一些问题,也发现了一些问题。现在将我的测试过程和结果做一个叙述,以便为有需要的人提供一点参考。
首先,可以肯定的是,这个算法的意义,非常重大,毋庸置疑。在此,对王兆华教授及其团队致以崇高的敬意。但是,书中的一些数据和说法略失偏颇。我对信号处理知之甚少,工作的需要,做了一些了解,在此发表一点自己的观点和看法,欢迎指正。
我测试的结果有两大发现:1,测试结果显示,apFFT确实有初始相位不变性,精度非常高,具体多高,后面有相关的测试数据。
2,校正的精度并没有作者所说的那么高。具体的校正精度到底怎么样,没有详细的表述。
作者在书中说,apFFT对相位、频率和幅值都可以高精度的校准。从他的测试方式和相关的数据来看,这种说法是不严密的。
理由如下:
1,他的测试都是基于FFT的分辨率为1Hz的条件来测试的,这一点可以从数据抽取函数看出。
2,他的测试只是测试了很多离散的频点,不具有一般性。
首先说一下,我的算法的结果和matlab的结果一致,也就是说我的算法本身是没有问题的。
我最开始试图采用apFFT/apFFT来做校正,测试发现,相位和频率的精度非常高,但是,幅度的校正精度最差达0.38%。由于我的测试系统的精度要求是0.2%,这达不到我的要求。为此,我在振动论坛上发帖,希望得到答案。但是,最近我老是上不了论坛,不知道怎么回事?
于是,我寻求别的解决办法,通过对比FFT/apFFT和apFFT/apFFT的校正公式,发现它们不同。于是,我用FFT/apFFT算法,再做了一次测试,发现幅度的校正精度比apFFT/apFFT的高,满足我的工程需要。至此,算是真正解决了非同步采样的FFT校正算法的问题。
我测试的前提是:测试的信号时直流加单频信号,采样点数均相同,所有的数据类型都是float型。对于多频率的信号,只要分辨率足够高,是完全可以分离的,这一点不用怀疑。我的测试方法和王教授的有些不同,具体如下:
1,使用不同的FFT分辨率做测试。
2,选取多个频点做测试。我的频点选取更具一般性,选取50.0到60.0,频率步进为0.1Hz。由于校正的原理是根据相位差来校正的,而为整数频点时相位差为0,随着频率的增大,相位差增大。也就是说,我选取的频点覆盖率很多的相位差,因此,更具一般性。
测试结果如下:
序号 算法 频率范围 分辨率 采样点数 频率精度 幅值精度 相位精度
1 FFT/APFFT 50:0.1:60 16 256 2.77e-4 2.05e-3 1.67e-6
2 FFT/APFFT 50:0.1:60 10 256 7.27e-5 4.22e-4 2.2e-7
3 FFT/APFFT 50:0.1:60 8 256 2.55e-4 2.05e-4 6.7e-8
4 FFT/APFFT 50:0.1:60 4 256 1.56e-4 2.96e-5 3.3e-7
5 FFT/APFFT 50:0.1:60 1 256 3.87e-5 2.85e-6 2.77e-7
对一组频率做校正后,我取最大偏差来计算校正精度。从数据上看,精度似乎不是随分辨率的降低而降低的。这是因为我取的频点少,数据不能较准确的反映真实的最大偏差。但是,上述结果还是能说明一些问题。
分析测试结果不难发现:
1,随着分辨率的升高,相位、频率和幅值的校正精度也逐渐升高。
2,相同的分辨率,相位的精度最高,频率的精度和幅值的精度差不多。
3,随着分辨率的降低,幅值的精度略低于频率,相差越来越大。
王教授得出精度可以达到10的-12次方的结果的原因是,他选取的频率多接近整数频率,而一般接近整数频率的相差小,所以,误差也就小,精度自然也就高。当然,很多实际的情况是频率偏差较小,多在整数附近,因此,我们有时可以这样认为。
由于时间紧迫,没有做更多频点的分析,同时,我认为我的这个测试结果已经可以说明问题,不必再做更细的分析。
FFT的分辨率为:采样率除以一次FFT计算的点数。比如,采样率是512sps,数据进行256点FFT,那么FFT的分辨率就为2Hz,也就是说FFT变换的结果之间的间隔是2Hz。同时,我们也看到,一秒钟只能采样2组数据,能分析的最大频率为256Hz。因此,要想分析更高的频率,需要更高的采样率,而要想更高的分辨率,必须采样足够长的时间,他们是相互矛盾的。我们在实际工程中,希望尽快的计算得到结果,也希望有足够高的分辨率,只能权衡而确定一个合理的采样率和FFT计算点数。我们的系统的精度要求是0.2%,因此,选择分辨率为8Hz,较为合适。如果你的系统中需要分析两个频点很近的信号,建议保证两根谱线间的间距大于3。
GMT+8, 2024-11-14 15:44 , Processed in 0.042772 second(s), 15 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.