
OUYANG_LINUX007的专栏
分类:
数据结构及其算法
博客专家福利
【限时活动】建专辑得大奖
专访张路斌:从
HTML5
到
Unity
的游戏开发之路
当青春遇上互联网,能否点燃你的创
业梦
推荐有礼
--
找出您心中的技术大牛
一个应用实例详解卡尔曼滤波及其算法实现
2012-05-14 10:48 10831
人阅读
评论
(11)
收藏
举报
算法
filter matlab algorithm
优化 工作
为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大
多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的
5
条公式是其核心内容。
结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那
5
条公式。
在介绍他的
5
条公式之前,先让我们来根据下面的例子一步一步的探索。
假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定
的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单
位)。假设你对你的经验不是
100%
的相信,可能会有上下偏差几度。我们把这些偏差看
成是高斯白噪声(
White Gaussian Noise
),也就是这些偏差跟前后时间是没有关系的而
且符合高斯分配(
Gaussian Distribution
)。另外,我们在房间里放一个温度计,但是这
个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。
好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统
的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算
出房间的实际温度值。
假如我们要估算
k
时刻的是实际温度值。首先你要根据
k-1
时刻的温度值,来预测
k
时刻的
温度。因为你相信温度是恒定的,所以你会得到
k
时刻的温度预测值是跟
k-1
时刻一样的,
假设是
23
度,同时该值的高斯噪声的偏差是
5
度(
5
是这样得到的:如果
k-1
时刻估算出的
最优温度值的偏差是
3
,你对自己预测的不确定度是
4
度,他们平方相加再开方,就是
5
)。然后,你从温度计那里得到了
k
时刻的温度值,假设是
25
度,同时该值的偏差是
4
度。
由于我们用于估算
k
时刻的实际温度有两个温度值,分别是
23
度和
25
度。究竟实际温度是
多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的
covariance
(协方差)来判断。因为
Kg^2=5^2/(5^2+4^2)
,所以
Kg=0.78
,我们可以估算
出
k
时刻的实际温度值是:
23+0.78*(25-23)=24.56
度。可以看出,因为温度计的
covariance
比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。
现在我们已经得到
k
时刻的最优温度值了,下一步就是要进入
k+1
时刻,进行新的最优估
算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入
k+1
时刻之前,我
们还要算出
k
时刻那个最优值(
24.56
度)的偏差。算法如下:
((1-Kg)*5^2)^0.5=2.35
。这
里的
5
就是上面的
k
时刻你预测的那个
23
度温度值的偏差,得出的
2.35
就是进入
k+1
时刻以
后
k
时刻估算出的最优温度值的偏差(对应于上面的
3
)。
就是这样,卡尔曼滤波器就不断的把
covariance
递归,从而估算出最优的温度值。他运行
的很快,而且它只保留了上一时刻的
covariance
。上面的
Kg
,就是卡尔曼增益(
Kalman
原创:
24
篇 转载:
41
篇
译文:
1
篇 评论:
36
条
(9698)
(3875)
(2625)
(2380)
(2367)
(2257)
(10253)
个人资料
OUYANG_LINUX007
访问:
79130
次
积分:
1106
分
排名: 第
14735
名
文章搜索
文章分类
LINUX_
内核驱动
(11)
matlab (9)
C/C++ (7)
MFC (9)
JAVA android (0)
数据结构及其算法
(5)
嵌入式硬件
--
裸机
(15)
嵌入式开发环境
(6)
数据库
(0)
LINUX_
上层应用
(0)
QT (0)
文章存档
2012
年
06
月
(10)
2012
年
05
月
(23)
2012
年
04
月
(33)
阅读排行
一个应用实例详解卡尔
先验概率与后验概率的
单片机
算法程序
安装
参数调节总结
烧写问题
堆
没有功底的底气,哪里来的自信!
目录视图 摘要视图 订阅
登录
|
注册