http://www.paper.edu.cn
-1-
MATLAB 对卡尔曼滤波器的仿真实现
刘丹,朱毅,刘冰
武汉理工大学信息工程学院,武汉(430070)
E-mail:liudan_ina@yahoo.com.cn
摘 要:本文以卡尔曼滤波器原理为理论基础,用 MATLAB 进行卡尔曼滤波器仿真、对比
卡尔曼滤波器的预测效果,对影响滤波其效果的各方面原因进行讨论和比较,按照理论模型
进行仿真编程,清晰地表述了编程过程。
关键词:数字信号处理;卡尔曼滤波器;MATLAB;仿真过程
中图分类号: TN912.3
1. 引言
随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技
术领域。数字信号处理已在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和
家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波占有极其重要的地位,
目前对数字滤波器的设计有多种方法,其中著名的 MATLAB 软件包在多个研究领域都有着
广泛的应用,它的频谱分析
[1]
和滤波器的分析设计功能很强,从而使数字信号处理变得十分简
单、直观。本文分析了数字滤波器的设计方法,举出了基于 MATLAB 软件的信号处理工具
在数字滤波器设计中的应用。
2. 卡尔曼滤波基本原理
卡尔曼滤波过程实际上是获取维纳解的递推运算过程
[2]
。从维纳解导出的卡尔曼滤波器
实际上是卡尔曼滤波过程结束后达到稳态的情况,这时 Kalman Filtering 的结果与 Wiener
Solution 是相同的
[3]
。具体推导如下:
)()1|1(
ˆ
)|(
ˆ
nGynnxfnnx
−= )|(
ˆ
)()( nnxnxne
已知
由此求
cacGafFGneEn ,)1(( ..min)]([)(
2
−=⎯⎯→⎯==
ε
由
fG
f
G
,
0
⇒
⎪
⎪
⎩
⎪
⎪
⎨
⎧
∂
∂
=
∂
∂
ε
ε
⑴
)]1|1(
ˆ
)()[()1|1(
ˆ
)|(
ˆ
+−
= nnxacnynGnnxannx
可以是时变的,非平稳的随机信号
⑵
QnanP +−= )1()(
2
ε
均为正数。
⑶
)(
)(
)(
2
nPCR
nCP
nG
+
=
⑷
)()](1[)()( nPnCGnG
C
P
n −−==
ε
)(nG 是个随时间变化的量,每次输入输出, )(nG 就调整一次,并逐渐逼近 Kalman Filter
的增益 G,而
)1()( −
nn
,
)
↓↑→ nn
ε
。