Kalman滤波算是在最小均方误差准则下得到的一组数学方程,这组方程提供了对随机过程的状态进行估计的数值计算方法。它可以用于对随机过程中过去的、现在的甚至未来的状态进行估计,而且在随机系统的精确数学模型未知的情况下,它也可以对系统的过程状态做出估计。算法将关于误差统计性质的知识与关于系统动态特性的知识合并起来的一门统计技术。Kalman滤波算法的一般过程是:根据当前的观测数据和前一时刻的状态估计值,借助系统本身的状态转移方程和观测方程,按照一定的迭代公式,计算出当前时刻的有源晶振状态估计值。它的特点是计算的可迭代性,因此不需要存储任何观测数据,所需数据存储量小。
Kalman滤波公式和具体实现:
Kalman滤波用于估计离散时间过程的状态变量x∈R"。这个离散时间过程由以下离散线性随机微分方程描述系统的状态方程:
如果将这个有待估计的随机信号序列视作一个线性系统被零均值白噪声驱动和激励的结果,则(k-1)=0,
上式中,x(k),x(k-1)分别为k时刻和k-1的系统状态,A是系统参数,z(k)是k时刻的测量值,H是测量系统的参数,随机信号o(k)和v(k)分别表示过程激励噪声和观测噪声。假设它们为相互独立,正态分布的白噪声:
在实际系统中,过程激励噪声协方差矩阵Q和观测噪声协方差矩阵R可能会随每次迭代计算而变化,但在这里假设它们是常数。
首先利用系统的状态方程,来预测下一状态的系统。假设现在的系统处在k时刻,根据系统的模型,可以基于系统的上一状态而预测出现在状态:
式中x(k,k-1)是利用上一状态预测的结果,x(k-1,k-1)是上一状态的最优化的估算值。
到现在为止,系统结果已经更新了,但是对应于x(k,k-1)的协方差还没更新。
协方差用p表:
式中p(k,k-1)是x(k,k-1)对应的协方差,p(k-1,k-1)是x(k-1,k-1)对应的协方差,AT表示A的转置矩阵,Q是系统过程激励噪声的协方差矩阵。
有了现在状态的预测结果,然后再收集现在状态的测量值。结合预测值和测量值,就可以得到当前状态k的最优化估算值x(k,k):
式中z(k)为观测量,H为观测矩阵,Kg为卡尔曼增益。
Kg(k)=p(k,k-1)HT[HP(K,k-1)HT+R] 式(4-11)
得到了k状态下最优的估算值x(k,k)还不行,为了使卡尔曼滤波器不断的运行下去直到系统过程结束,还要更新k状态下x(k,k)的协方差:
式中Ⅰ为单位矩阵,对于单模型单测量,Ⅰ=1。当系统进入k+1状态时,p(k,k)就是式(49)的p(k,k-1)。这样,算法就可以自回归的运算下去。
Kalman滤波的整个过程可以用图49来表示,左边是随机信号x(k)的产生模型,中间是观测模型,加入了噪声v(k),右边则是最优估计系统,称为Kalman滤波器,它的输出x(k,k)为随机信号x(k)在均方误差P(k)最小意义下得到的最优估计。
1.首先从(k-1)时刻对信号x(k-1)所做出的估计x(k,k-1)出发,根据已有的信号模型x(k)=Axk,k-1)+0(k-1)对k时刻的信号x(k)进行估计。由于上述信号模型中动态噪声o(k-1)的确切数值无从得知,所以对x(k)的估计只能暂时取作Ax(k,k-1)。
2.在未得到k时刻的新观测值z(k)时,可以从k时刻的信号x(k)的预估值Ax(k,k-1)出发,根据观测方程z(k)=Hx(k)+v(k)来估计k时刻将要得到的观测值z(k)。由于测量噪声v(k)的确切数值无从得知,所以对y(k)的预估计值只能取作z(k,k-1)=x(k,k-1)=AHx(k,k-1)。
3.得到k时刻的新观测值z(k)后,如果x(k)与其预估计值的差不为零,就说明k时刻的观测值z(k)中包含有前(k-1)次观测中所没有的信息;若为零,则说明y(k)不包含新信息。因此,把z(k)-AHx(k,k-1)称之为第k次观测中包含的新“信息”。显然,当得到k时刻的新观测值z(k)后,可利用第k次观测中包含的新“信息”z(k)-AH(k,k-1)乘上一个加权系数得到对信号k时刻的估计值x(k,k-1)。
在具体实现卡尔曼滤波器时,就要对状态模型和观测模型进行定义,还要明确卡尔曼滤波器方程组的计算及其包含的各个参数值的计算。程序流程图如图4.10所示。
在图4.10中,状态模型的时间常数A取值为1,观测模型中的观测参数H取也为1,同时需要给出初始状态估计向量X(0)和协方差矩阵P(0),为了加快滤波器的收敛速度,X(0)和P(0)的值可以从初始化时采集的一系列观测数据的统计量得到。 Kalman滤波算法是在MSP430单片机上实现的,实现时将所有确定的矩阵常量存入单片机的ROM区,再根据卡尔曼滤波的五个重要公式进行迭代递推,便可以设计出适用于本系统的卡尔曼滤波算法,假如用估计值沁(0)来代替第一个观测值,即使下式:
由此可见,(0)的最佳佔计值就是x(k)的平均值。此时,估计误差的协方差
下面两个图是用Matlab对采集的Kalman滤波前和滤波后的相位差数据画出的波形图.
这里的数据是断开控制信号1小时后采集的,可以明显的看出卡尔曼滤波算法在处理消除GPS秒信号中的抖动时具有很强的优越性。图41中的相位差数据含有很大的抖动,一般处于±100ns以内,基本是GPS接收机输出的IPPS信号中随机误差的反映。图4l2是经过Kalman滤波器后的图形,可以看出抖动已经被减小到了±2ns以内,大概在3500s以后, Kalman滤波器的输出趋向于相位差的真值,这说明Kalman滤波器是收敛的。
由于时间间隔测量数据受到各种随机噪声的干扰,导致测量数据中出现跳动很大的数据,称之为“野值”,如图411中在2600s处是出现的跳动。如果这些数据不剔除,对滤波系统会产生很坏的影响,使滤波估计值出现很大偏差,甚至使滤波系统发散,影响系统锁定的精度。可根据式(4-18来判断是否存在“野值”。
此法称之为3σ法,当大于3σ根时,即可认为该观测值为野值,这时就要减少卡尔曼滤波增益Kg(k),使
其中m∈[0,]。必要时,可令m=0将“野值”剔除。这样状态滤波方程x(k,k)=x(k,k-1)+Kg(k)[(k)-Hx(k,k-就将得以修正,而不会出现滤波发散的情况。如果绝对值小于3倍的方差根,则令m=1,可使卡尔曼增益Kg(k)不作改变。
CEOB2B晶振平台是国内乃至世界最大的频率元器件采购供应平台,在这里你可以找到任何一款想要的石英晶振、贴片晶振、进口晶振、32.768K晶振、石英晶体振荡器、温补晶振、压控晶振、恒温晶振、差分晶振等压电频率元件。上百家正规品牌代理商,一级的货源,优质的服务,多渠道订购,给你不一样的晶振采购体验。