|
发表于 2012-4-4 02:16:23
|
显示全部楼层
正弦波的参数(通常指四参数估计即振幅, 频率, 初相, 直流电平)也称单音(single-tone)的估计是测量学与参数估计中最基本的问题, 有丰富的算法可以解决问题, 具体的使用什么算法要根据需求(精度与实时性等)与嵌入式系统的性能综合考量来决定.
整个过程大致可以分为采样与估计两个阶段:
对于采样来讲, 采样率要满足Shannon采样定理(即是待估单音频率的二倍以上), 而IEEE-1057[1]则建议使用5倍以上的采样频率, 同时采样时间最好也超过5个周期, 否则引入的有限长效应你是无法克服的. 同时, 采样器的字长, 也是你需要关注的, 不过在存储也采样设备告诉发展的今天, 这个问题可能不严重.
对于估计来讲, 有丰富的算法
文献[2]提出的算法是最基础的算法(基于极大似然的), 能够达到估计下界, 但是复杂度太高, 文献[3][4]在此基础上提出使用FFT结合二分法来估计单音, 不损失精度的同时很好的降低了时间复杂度. 如果系统有一定的计算能力(现在STM32都支持FFT,而二分法仅用一个while循环就能搞定). 上述算法都在集中精力估计频率, 因为[1]已经指出, 频率搞定了, 相位啥的都很easy.
测量领域推荐的是迭代式最小二乘法,四个参数一起算, 精度很高, 算法在[1]中描述的很清楚, 但是最小二乘牵扯到矩阵运算, c代码的实现有一定难度.
如果系统的硬件性能实在是很低(如51, AVR ), 则推荐使用过零法, 思想很简单, 网上也有代码, SNR较高的时候效果也不错.
还有的系统实时性要求非常高, 那就需要序贯算法了, 抽时间我会介绍的.
[1] IEEE 1057-1994 standard (IEEE Standard for Digitizing Waveform Recorders)
[2]Single tone parameter estimation from discrete-time observations
[3]A modified dichotomous search frequency estimator
[4]A modified dichotomous search frequency estimator |
|