卡尔曼滤波简介+ 算法实现代码 (珍藏).doc
时间:07-29 11:26
查看:2142次
下载:162次
简介:
卡尔曼滤波简介+ 算法实现代码
卡尔曼滤波简介+ 算法实现代码
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的
研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无
限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型
引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波
是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采
用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态
变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。 现设线性时变系统的离散状态防城和观测方程为:
X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)
Y(k) = H(k)·X(k)+N(k)
其中
X(k)和Y(k)分别是k时刻的状态矢量和观测矢量
F(k,k-1)为状态转移矩阵
U(k)为k时刻动态噪声
T(k,k-1)为系统控制矩阵
H(k)为k时刻观测矩阵
N(k)为k时刻观测噪声
则卡尔曼滤波的算法流程为:
1. 预估计X(k)^= F(k,k-1)·X(k-1)
2. 计算预估计协方差矩阵
C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'
Q(k) = U(k)×U(k)'
3. 计算卡尔曼增益矩阵
K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)
R(k) = N(k)×N(k)'
4. 更新估计
X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)……