- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
测控技术与系统;目录;一、摘要;二、卡尔曼滤波器的介绍;三、卡尔曼滤波器的应用;四、卡尔曼滤波器算法;首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:?X(k|k-1)=A?X(k-1|k-1)+B?U(k)????..?(1)?
式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。??到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的covariance还没更新。;我们用P表示covariance:?P(k|k-1)=A?P(k-1|k-1)?A’+Q?????(2)?
式(2)中,P(k|k-1)是X(k|k-1)对应的covariance,P(k-1|k-1)是X(k-1|k-1)对应的covariance,A’表示A的转置矩阵,Q是系统过程的covariance。式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。??现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。;结合预测值和测量值,我们可以得到现在状态(k)的最优化估算值X(k|k):?X(k|k)=?X(k|k-1)+Kg(k)?(Z(k)-H?X(k|k-1))?????(3)?其中Kg为卡尔曼增益(Kalman?Gain):Kg(k)=?P(k|k-1)?H’?/?(H?P(k|k-1)?H’?+?R)?????(4)??
到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。;但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的covariance:?
P(k|k)=(I-Kg(k)?H)P(k|k-1)?????(5)?
其中I?为1的矩阵,对于单模型单测量,I=1。当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。这样,算法就可以自回归的运算下去。??卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5?个基本公式。根据这5个公式,可以很容易的实现计算机的程序。;五、卡尔曼滤波器的简单应用例子;把房间看成一个系统,然后对这个系统建模。当然,我们见的模型不需要非常地精确。我们所知道的这个房间的温度是跟前一时刻的温度相同的,所以A=1。没有控制量,所以U(k)=0。因此得出: X(k|k-1)=X(k-1|k-1) ……….. (6) 式子(2)可以改成: P(k|k-1)=P(k-1|k-1) +Q ……… (7) 因为测量的值是温度计的,跟温度直接对应,所以H=1。式子3,4,5??以改成以下:
X(k|k)=?X(k|k-1)+Kg(k)?(Z(k)-X(k|k-1))?………?(8)?Kg(k)=?P(k|k-1)?/?(P(k|k-1)?+?R)?………?(9)?P(k|k)=(1-Kg(k))P(k|k-1)?………?(10)?; 现在我们模拟一组测量值作为输入。假设房间的真实温度为25度,我模拟了200个测量值,这些测量值的平均值为25度,但是加入了标准偏差为几度的高斯白噪声(在图中为蓝线)。?为了令卡尔曼滤波器开始工作,我们需要告诉卡尔曼两个零时刻的初始值,是X(0|0)和P(0|0)。他们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐的收敛。但是对于P,一般不要取0,因为这样可能会令卡尔曼完全相信你给定的X(0|0)是系统最优的,从而使算法不能收敛。我选了?X(0|0)=1度,P(0|0)=10。?该系统的真实温度为25度,图中用黑线表示。图中红线是卡尔曼滤波器输出的最优化结果(该结果在算法中设置了Q=1e-6,R=1e-1)。;clear
N=200; %随机序列长度
w(1)=0; %初始化操作
w=randn(1,N) %产生随机序列
x(1)=0;
a=1;
for k=2:N;
x(k)=a*x(k-1)+w(k-1); %产生随机序列x(n)
end
subplot(311)
t=1:N;
plot(t,x,b) %绘制原始输入信号图形x(n)
title(原始输入信号图像)
xlabel(x轴单位:t/s,color,b
文档评论(0)