1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 卡尔曼滤波 - Kalman filtering

卡尔曼滤波 - Kalman filtering

时间:2023-01-31 03:47:23

相关推荐

卡尔曼滤波 - Kalman filtering

百科定义

卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。

推导由来

hat(Xk) =hat(Xk-1) + Kk * ( Zk - hat(Xk-1) )

我们要预估一个值,最直接的做法就是求平均,假设我们🈶️N组测试数据

用hat(Xk) 来表示在k时刻的一个预估值,就会有

step 1,平均hat(Xk) = (1/k) * (Z1 + Z2 + Z3 + ... + ZK)step 2,分离hat(Xk) = (1/k) * (Z1 + Z2 + Z3 + ... + Zk-1) + (1/k) * Zkstep 3,变换乘以1,即(k-1)/(k-1)hat(Xk) = (1/k) *((k-1)/(k-1))* (Z1 + Z2 + Z3 + ... + Zk-1) + (1/k) * Zkstep 4,观察提取hat(Xk-1)hat(Xk-1) = (1/(k-1))*(Z1 + Z2 + Z3 + ... + Zk-1)step 5,与上一预估值的关系hat(Xk) = (k-1)/k*hat(Xk-1) + (1/k) * Zkstep 6,得到平均算法的增益(1/k)<这个说法不太准确,后面我们会把(1/k)->Kk>hat(Xk) = hat(Xk-1) + (1/k) * (Zk - hat(Xk-1))

最终得到的就是我们想要的(这个公式很重要):

hat(Xk) = hat(Xk-1) + (Kk) * (Zk - hat(Xk-1))

简要分析:

可以看到,k时刻的预估值,与k-1时刻的预估值、k时刻的测量、还有一个Kk系数有很大的关系。

第1种情况:如果Kk系数♾️0时,那么可以得到k时刻的预估值就是k-1时刻的预估值hat(Xk-1)

第2种情况:如果Kk系数♾️1时,那么同样得到k时刻的预估值就是k时刻的测量值Zk

那么好了怎么样Kk♾️接近0或1呢或者说为什么会接近呢?卡尔曼增益因此就诞生了,它又跟什么有关系呢?又是怎么计算出来的?小朋友,是不是有很多疑问???带着疑问继续往下看吧。

[ PS这里请学习的同学思考下:为什么要把平均的1/k换成Kk(kalman gain)呢?]

OK,下面我们来首先看下卡尔曼过滤应用的几个关键参数

Zk第k时刻的真实测量值hat(Xk) 第k时刻的预估值Emea(k)第k时刻的测量误差Eest(k) 第k时刻的预估误差K(k) 第k时刻的卡尔曼增益

那么如何计算和使用这些值呢?还有Kk(卡尔曼增益)如何确认呢?先看计算步骤及方法,后面我们在实际慢慢推导公式的由来。

Step1 计算卡尔曼增益 kalman gain

Kk = Eest(k-1)/( Eest(k-1) + Emea(k) )

Step 2 计算本次预估值 hat(Xk)

hat(Xk) = hat(Xk-1) + (Kk) * (Zk - hat(Xk-1))

Step 3 更新预估误差值Eest(k)

Eest(k) = (1 - Kk) * Eest(k-1)

for example

初始化标值:假设预估值为40,估计误差5,测试误差为3

实际理想值:50

按照上述的Step(1~3),来计算k每一时刻的预估值,就得到下图所示数据内容

有兴趣的童鞋可以下载excel范本demo,改改参感受下卡尔曼的魅力吧!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。