算法-卡尔曼滤波之引入噪声

前面我们的例子引出了测量不确定和状态不确定性,但是在实际过程中,系统动态模型也存在不确定性;

这里的过程噪声是一个不确定性,而此前的协方差外推方程就是根据不确定推导的来的;

 

外推方程和协方差外推方程取决于系统是静态还是动态的。 

例如测量罐子中液体的温度:我们假设真实的温度是50摄氏度,并且模型是很标准的,此时我们将过程噪声的方差设置为0.0001,测量误差是0.1摄氏度;

 使用更新,预测来进行

首先,在第零次迭代,在进行第一次迭代之前,我们需要初始化卡尔曼滤波器,然后根据外推方程和协方差外推方程去预测下一个时刻的状态和估计不确定性;

初始化:此时不知道罐内液体温度,我们假设此时液体温度是10℃,第0时刻的估计值是10℃;

预测:由于我们的初始值是猜测值是非常不准确,此时初始估计误差标准差设置为100,估计不确定性的方差就是10000;

初始估计不确定性=100*100=10000;

基于初始值来预测下一时刻的状态,由于我们认定此时系统模型是静态的,预测估计与当前估计相同;

外推不确定性(方差)=初始估计不确定性+过程噪声=10000+0.0001=10000.0001;

此时我们有了协方差外推方程的结果(估计不确定性+误差),外推方程的结果(静态模型,前后两次状态保持一致);

 第一次迭代:

测量:经过测量得到 z1=49.95摄氏度,由于测量误差为0.1,方差为0.01,测量不确定性:r1=0.01;

更新:计算卡尔曼增益,k=估计不确定性+误差/估计不确定性+误差+测量不确定性;

计算的K=0.999999;

此时卡尔曼增益几乎为1,说明估计误差远远大于测量误差;

当前状态估计:

当前状态(第一次)=上一时刻的状态(第0次初始化的结果)+K(卡尔曼增益)(测量值-上一时刻的状态);

更新当前估计不确定性:下一次的估计不确定性=(1-K)当前估计不确定性;

预测:由于是静态模型,液体的温度不变;

第二次预测结果等于当前估计的结果;

外推估计不确定性;

 

 第二次迭代:

测量:经过测量得到 z1=49.967摄氏度,由于测量误差为0.1,方差为0.01,测量不确定性:r1=0.01;

更新:计算卡尔曼增益,k=估计不确定性+误差/估计不确定性+误差+测量不确定性;

计算的K=0.5;

更新:

当前状态估计:

当前状态(第一次)=上一时刻的状态(第0次初始化的结果)+K(卡尔曼增益)(测量值-上一时刻的状态);

更新当前估计不确定性:下一次的估计不确定性=(1-K)当前估计不确定性;

预测:由于是静态模型,液体的温度不变;

第二次预测结果等于当前估计的结果;

外推估计不确定性;

 重复:测量->更新->预测-测量.....得到如下结果:

 

 

卡尔曼增益:

 

静态模型中我们引入了过程噪声,过程噪声是系统模型的误差,也就是一种不确定性,因为,我们修改了由不确定性组件的方程,协方差外推方程,我们加上了这个不确定性;

现在罐子内液体的温度在以每秒0.1℃进行加热,但是我们此时认为该模型仍然是静态的,即温度不会发送变化,此时认为假设是正确的,过程噪声方差q很小为0.0001,测量误差是0.1(标准差),使用这样的模型去预测动态温度,发现效果不是很准确;

所以我们发现,当我们试验误差较大时候,可以引入增大过程噪声,把不确定性包含进来;

在模型存在误差的时候,但是我们认为系统不存储误差,并设置过程噪声为0.0001,仍然使用上面的方法进行估计:

 

我们发现预测结果和真实值,随着迭代次数增加,存在滞后误差;

 

通过我们上面的分析,我们得到,产生滞后误差的原因:

 我们采用方法2,修改过程噪声,设置为0.15:

 

 

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
扩展卡尔曼滤波(Extended Kalman Filter,EKF)和卡尔曼滤波(Kalman Filter,KF)是两种常用的滤波算法,它们在处理非线性系统时有所不同。 卡尔曼滤波是一种递归滤波算法,用于估计线性系统的状态。它基于系统的动力学模型和观测模型,通过最小化预测状态与观测值之间的误差来估计系统的状态。卡尔曼滤波假设系统的噪声是高斯分布的,并且系统的动力学模型和观测模型都是线性的。因此,卡尔曼滤波在处理线性系统时表现良好。 扩展卡尔曼滤波是对卡尔曼滤波的扩展,用于处理非线性系统。与卡尔曼滤波不同,扩展卡尔曼滤波通过线性化非线性系统的动力学模型和观测模型来近似处理非线性问题。具体而言,扩展卡尔曼滤波使用泰勒级数展开来近似非线性函数,并通过线性卡尔曼滤波来处理近似后的线性系统。这样,扩展卡尔曼滤波可以在一定程度上处理非线性系统,但由于线性化的误差,其性能可能不如卡尔曼滤波在处理线性系统时的表现。 总结一下: - 卡尔曼滤波适用于线性系统,扩展卡尔曼滤波适用于非线性系统。 - 卡尔曼滤波假设系统的动力学模型和观测模型都是线性的,扩展卡尔曼滤波通过线性化非线性系统来近似处理非线性问题。 - 扩展卡尔曼滤波的性能可能不如卡尔曼滤波在处理线性系统时的表现,因为线性化的误差会影响估计结果的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值