资源描述:
《卡尔曼滤波作业》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、、卡尔曼滤波算法(TheKalmanFilterAlgorithm)首先,先要引入一个离散控制过程的系统。该系统可用一个线性随机微分方程(LinearStochasticDifferenceequation)来描述:X(k)=AX(k-1)+BU(k)+W(k)再加上系统的测量值:Z(k)=HX(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。A和B是系统参数,对于多模型系统,他们为矩阵。Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。W(k)和V(k)分别表示过程和测量的噪声。他们被假设成高斯白噪声(Whi
2、teGaussianNoise),他们的covariance分别是Q,R(这里假设他们不随系统状态变化而变化)。对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。下面我们来用他们结合他们的covariances来估算系统的最优化输出。首先我们要利用系统的过程模型,来预测下一状态的系统。假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k
3、k-1)=AX(k-l
4、k-l)+BU(k)(1)式(1)中,X(k
5、k-1)是利用上一状态预测的结果,X(k-l
6、k-1)是上一状态最优的结果,U(k)
7、为现在状态的控制量,如果没有控制量,它可以为0。到现在为止,我们的系统结果已经更新了,可是,对应于X(k
8、k-1)的covariance还没更新。我们用P表示covariance:P(k
9、k-1)=AP(k-l
10、k-l)A,+Q(2)式(2)中,P(k
11、k~l)是X(k
12、kT)对应的covariance,P(k~l
13、k~l)是X(k~l
14、k-1)对应的covariance,A'表示A的转置矩阵,Q是系统过程的covarianceo式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。结合预测值
15、和测量值,我们可以得到现在状态(k)的最优化估算值X(k
16、k):X(k
17、k)=X(k
18、k-1)+Kg(k)(Z(k)-HX(k
19、k-1))(3)其中Kg为卡尔曼增益(KalmanGain):Kg(k)=P(k
20、k-1)H‘/(HP(k
21、k-1)H‘+R)到现在为止,我们已经得到了k状态下最优的估算值X(k
22、k)o但是为了要另卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k
23、k)的covariance:P(k
24、k)=(I-Kg(k)H)P(k
25、k-1)(5)其中I为1的矩阵,对于单模型单测量,I=lo当系统进入k+1状态时,P(k
26、k)就是式子(2)
27、的P(k-l
28、k-l)e这样,算法就可以自回归的运算下去。卡尔曼滤波器的原理基本描述了,式子1,2,3,4和5就是他的5个基本公式。根据这5个公式,可以很容易的实现计算机的程序。二、matlab下的kalman滤波程序:clearN=200;w(l)=O;w=randn(l,N)x⑴二0;a=l;fork=2:N;x(k)二a*x(k-l)+w(k~l);endV=randn(l,N);ql=std(V);Rvv=ql."2;q2=std(x);Rxx=q2.八2;q3=std(w);Rww二q3・2c=0.2;Y二c*x+V;P(l)=0;s⑴二0;fort=2:N;
29、pl(t)=a.2*p(t~l)+Rww;b(t)二c*pl(t)/(c.八2*pl(t)+Rvv);s(t)=a*s(t-l)+b(t)*(Y(t)-a*c*s(t~l));P(t)二pl(t)-c*b(t)*pl(t);endt=l:N;plot(t,s,'r',t,Y,'g',t,x,'b');