卡尔曼滤波主要根据系统状态方程,通过系统输入输出作为观测数据,来不断迭代修正预估的逻辑,实现对系统状态的最优估计。可以这么理解,卡尔曼滤波是一种闭环估计方法,通过当前时刻的观测与上一时刻对当前时刻的估计对比,来调整估计路线,使得估计方法始终趋向于方差最小的方向。理论公式比较复杂,需要花时间去体会理解,想细研究的朋友建议直接去找一篇相关论文学习(其实研究之后几天就又忘了

)。开始正题,我们想利用卡尔曼滤波器实现对信号的滤波处理。对任何信号有:设 t  时刻信号为 s(t) ,在 t+△t 时刻将  s(t)  按泰勒公式展开,取二阶导数有,

卡尔曼滤波器 线性回归 卡尔曼滤波lstm_卡尔曼滤波

对上面式子分别求一阶导和二阶导有,



卡尔曼滤波器 线性回归 卡尔曼滤波lstm_方差_02


                     式中   t+△t  为 t  时刻的邻域内任一时刻,w1、w2、w2为泰勒展开余项。设系统采样时间间隔为T ,由上述各式得卡尔曼滤波系统状态空间模型。

卡尔曼滤波器 线性回归 卡尔曼滤波lstm_卡尔曼滤波_03

其中,


卡尔曼滤波器 线性回归 卡尔曼滤波lstm_方差_04

卡尔曼滤波器 线性回归 卡尔曼滤波lstm_卡尔曼滤波器 线性回归_05


式中X(k) 为系统 k  时刻的状态向量,A 为系统矩阵,W(k) 为系统噪声,y(k) 为 k  时刻的测量信号,H 为信号观测矩阵,e(k) 为信号观测噪声。给定滤波初值X(0|0) 、P(0|0) ,最优状态估计X(k|k) 可由观测量y(k)迭代计算确定。 下面就是卡尔曼滤波器的5个核心迭代公式,可以不用理解,会使用就可以:


卡尔曼滤波器 线性回归 卡尔曼滤波lstm_卡尔曼滤波_06

式中,X(k|k)

为状态向量X(k) 的最优估计值,X(k|k-1) 为状态向量X(k) 的预测值,P(k|k) 为滤波误差方差矩阵,P(k|k-1) 为预测误差方差矩阵,K(k)为增益系数,Q 、 R分别为系统噪声W(k) 、观测噪声e(k) 的协方差矩阵。基于上面的5个等式,我们可以搭建出卡尔曼滤波的基本模型(为了简单快速实现直接使用matlab fucntion),如下图(1~5分别对应上面5个迭代公式):

卡尔曼滤波器 线性回归 卡尔曼滤波lstm_迭代_07

试一下效果怎么样。给定滤波器参数如下:



卡尔曼滤波器 线性回归 卡尔曼滤波lstm_simulink 卡尔曼滤波_08

使用上一篇文章“simulink之低通滤波器”中同样的正旋输入信号,进行仿真,并与低通滤波效果最好的一组数据对比,结果如下图:


卡尔曼滤波器 线性回归 卡尔曼滤波lstm_卡尔曼滤波器 线性回归_09

结论:

卡尔曼滤波几乎没有延迟,能滤除高频干扰,效果比低通滤波更好一些。不过工程上普遍要求不太高,低通基本够用,简单有效;实在不够用的地方拿出kalman也绝对是经济实惠的办法,搭建好一个滤波器,基本可以当一个库模块使用了,只需要稍微调整下

协方差矩阵Q 、R就可以了。