改进卡尔曼滤波,卡尔曼滤波 应用

  改进卡尔曼滤波,卡尔曼滤波 应用

  首先看了DR_CAN的视频,做了简单的笔记,按照思路写了样本代码。在这里,我主要使用卡尔曼滤波器进行数据融合。

  视频地址:https://www.bilibili.com/video/bv 12d 4y 7 fu

  数据集成数据融合

  这里从一个例子开始,同一个对象被“两个名字”调用,两个结果的第一个名字结果是30g,第二个名字结构是32g。

  因为两者都不准确,所以存在误差。第一个叫做2g的标准差。第二个标准差是4g。而且都符合正态分布,也叫保洁文员分布。

  数学表达如下

  第一个地址

  第二个名字

  接下来,我们来看两个输出的概率分布;第一个服从正态分布,标准差为2g;所以他在28g到32g之间的概率是68.4%。

  二是服从标准差为4g的正态分布;所以他在28g到36g之间的概率是68.4%。和第一个相比,因为标准差大,看起来又矮又胖。

  现在,你需要使用这两个结果,“估计真实值”。怎么估计?

  感情介于这两个称谓结果之间,初始称谓偏差小,真实结果接近初始称谓结果。

  最优值,采用卡尔曼算法。如果估计值设置为;否则,

  其中k是dbdzfj;范围是0到1,即[0,1]。

  目的求k从而最小化估计基准,也就是最小化估计方差。

  假设:估计值,估计值的标准差,估计值的方差var(。

  估计方差=

  

  备注:红蓝部分相互独立,可单独取出;

  为了找到估计值的最小方差,我们需要导出k并将其设置为0。要确定极值,请执行以下操作:

  根据上面得到的估计值的方差,推导如下。

  那就是:

  完成后,获得:

  所以,在这里找到k。k的值是估计值方差的最小

  然后代入数据,

  第一个称谓解释:叫30g,标准差2g。

  第二个称谓解释:叫32g,标准差4g。

  首先,获得k值dbdzfj,

  然后计算估计值,

  最后,更新估计的方差,

  那么,估计值的标准差是1.79。

  Python的伪代码:

  " "卡尔曼滤波器——数据融合" # dbdzfj=误差对应方差(除以数据1的误差和数据2的误差)!EFKalman_gain(E1,E2):RETURN 1/)e1e 2)#估计值=数据的估计系数1 *)数据的测量值2-数据的估计值1)DEF NOW _ estimated _ value)XEEK X2):RETURN X1K(x2-x1)更新估计误差=(1-dbdzfj)数据的估计误差1 dbdzfj*数据的估计值2

  本文仅供参考和学习。谢谢你。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: