卡尔曼滤波简介+算法实现代码
最佳线性滤波理论起源于40年代美国科学家Wie
er和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalma
把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。
现设线性时变系统的离散状态防城和观测方程为:
XkFkk1Xk1Tkk1Uk1
YkHkXkNk
其中
Xk和Yk分别是k时刻的状态矢量和观测矢量
Fkk1为状态转移矩阵
Uk为k时刻动态噪声
fTkk1为系统控制矩阵
Hk为k时刻观测矩阵
Nk为k时刻观测噪声
则卡尔曼滤波的算法流程为:
预估计XkFkk1Xk1计算预估计协方差矩阵CkFkk1×Ck×Fkk1Tkk1×Qk×Tkk1QkUk×Uk计算卡尔曼增益矩阵KkCk×Hk×Hk×Ck×HkRk1RkNk×Nk更新估计XkXkKk×YkHk×Xk计算更新后估计协防差矩阵CkIKk×Hk×Ck×IKk×HkKk×Rk×KkXk1XkCk1Ck重复以上步骤其c语言实现代码如下:
#i
clude