卡尔曼滤波matlab 代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

kalman滤波matlab代码%kalman filter卡尔曼滤波

clear

clc

A = [1,1;0,1];

B = [1/2,1]';

C = [1,0];

x1(1)= 100; %初始化

x2(1)= 10;

x = [x1(1),x2(1)]';

z=C*x;

P = [1,0;0,1];

Q=[2,0;0,1]

R = 10;

g=0.98;

u=-g;

I=eye(2);

for k=2:20

xk=A*x+B*u; %KF 方程1 xg1(k)=xk(1);

xg2(k)=xk(2);

z(k)=C*xk+wgn(1,1,10);

P=A*P*A'+Q; %KF 方程2 Kk=P*C'/(C*P*C'+R); %KF 方程3 x=xk+Kk*(z(k)-C*xk); %KF 方程4 x1(k)=x(1);

x2(k)=x(2);

e1(k)=x1(k)-xg1(k);

e2(k)= x2(k)-xg2(k);

P=(I-Kk*C)*P; %KF 方程5 end

k=1:20;

figure(1)

plot(k,x1,k,xg1)

title('x1(k)的估计值和真实值曲线')

legend('x1(k)的估计值','x1(k)的真实值')

figure(2);

plot(k,x2,k,xg2')

title('x2(k)的估计值和真实值曲线')

legend('x2(k)的估计值','x2(k)的真实值') figure (3)

subplot(2,1,1)

plot(k,e1)

title('x1(k)的估计值和真实值误差曲线') subplot(2,1,2)

plot(k,e2)

title('x2(k)的估计值和真实值误差曲线')

figure (4)

plot(k,z)

title('输出z的观测值曲线')

相关文档
最新文档