Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-05-14, 15:23   #1
ndslndsl
初级会员
 
注册日期: 2009-05-14
年龄: 37
帖子: 4
声望力: 0
ndslndsl 正向着好的方向发展
问题 求助 关于卡尔曼滤波的matlab仿真

我编好了一个仿真程序,能运行,可是结果不对。因为我仿真的是一个匀速运动的卡尔曼滤波。但是仿真出来后速度确实斜线上升的。不知道是什么原因,而且协方差pk不是收敛的,求高手解答!
%卡尔曼滤波仿真
clear;
clc;
A=eye(4);
T=0.5;
A(5)=T;
A(15)=T; %转移矩阵
xe=0,ve=5,xn=0,vn=5;
X0=[xe;ve;xn;vn];%状态变量
X=[X0 zeros(4,99)];
H=[0 T*ve/sqrt(ve^2+vn^2) 0 T*vn/sqrt(ve^2+vn^2);0 vn/(vn^2+ve^2) 0 -ve/(vn^2+ve^2)];
P=[10 0 0 0;0 1 0 0;0 0 10 0;0 0 0 1];%初始的协方差
Q=[0.5 0 0 0;0 0.5 0 0;0 0 0.5 0;0 0 0 0.5];
R=[0.5 0;0 0.5];
Z=zeros(2,99);
for n=1:99
if n==1
Z(:,1)=[5*sqrt(2)*0.5+wgn(1,1,1);pi/4+0.01*wgn(1,1,1)];
X(:,1)=[Z(1,1)*sin(Z(2,1));5;Z(1,1)*cos(Z(2,1));5]
else n>1
t=n*T;
Z(:,n)=[5*(2^0.5)*t+wgn(1,1,1);pi/4+0.01*wgn(1,1,1)]%观测信息
X2(:,n)=A*X(:,n-1);%求先验估计
P2=A*P*A'+Q;%求先验估计协方差
K=P2*H'*inv(H*P2*H'+R);%求最佳增益
X(:,n)=X2(:,n)+K*(Z(:,n)-H*X2(:,n));%求估计值
P=(eye(4)-K*H)*P2%求协方差
end
end
figure(1);
t=0.5:0.5:50;
plot(t,X(1,,'r+');xlabel('时间:s');ylabel('xe:m');grid on;title('xe的滤波后轨迹');
figure(2);
plot(t,X(3,,'r*');xlabel('时间:s');ylabel('ye:m');grid on ;title('ye的滤波后轨迹');
figure(3);
n=1:99;
plot(n,Z(1,n).*cos(Z(2,n)),'b*');title('ye的滤波前轨迹');
ndslndsl 当前离线   回复时引用此帖
旧 2009-05-20, 21:30   #2
ndslndsl
初级会员
 
注册日期: 2009-05-14
年龄: 37
帖子: 4
声望力: 0
ndslndsl 正向着好的方向发展
默认 回复: 求助 关于卡尔曼滤波的matlab仿真

怎么没有高手帮忙看下呢???
ndslndsl 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 18:29


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.