测量正弦信号的频率为什么要用sine wave fitting代替FFT?

理由一:做FFT需要实现coherent sampling,实现coherent sampling需要事先精确获得信号实际频率。用FFT测频率是循环论证自食其果。

理由二:就算通过手动(肉眼定位)来确保coherent sampling,FFT还受bin的限制。假如频率分辨率不高,FFT给出的频率仅仅是最相近的bin的值。一般这个是通过zero padding解决,但是LAOS实验由于其他原因,不能做zero padding。

另:为什么不用zero crossing方法?因为这个方法对噪音非常敏感。本来只有一处zero crossing的,由于噪音会在附近出现N多处。

sine wave fitting的问题在于,如果频率作为parameter的话,这个函数是没办法线性化的。因此只能做iteration。经验表明,fitting的成功率非常依赖于你给的频率初始值。最好要让频率初始值尽可能的接近真实值,否则会收敛不了。所以做sine wave fitting之前仍然有必要采用其他方法对信号频率进行初估。FFT在此派上用场,但不是唯一的办法。

这里有一个相关讨论。

一个现成的软件在此。该软件包含对IEEE标准的几个简单和十分有益具体化1,值得重点参考。MatlabCentral上还有一个现成代码可供试用。