Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2007-06-11
帖子: 3
声望力: 0 ![]() |
![]()
一个关于卡尔曼递推的小程序,大家看看有用没有?
%卡尔曼滤波递推程序 ; clear Ak=exp(-0.02); %各系数由前面确定; Ck=1; Qk=1-exp(-0.04); Rk=1; p(1)=1; %各初值; p1(1)=Ak*p(1)*Ak'+Qk; %由p1代表p'; x(1)=0; %设信号初值为0; H(1)=p1(1)*Ck'*inv(Ck*p1(1)*Ck'+Rk); zk=[-3.2,-0.8,-14,-16,-17,-18,-3.3,-2.4,-18,-0.3,-0.4,-0.8,-19,-2.0,-1.2,-11,-14,-0.9,0.8,10,0.2,0.5,-0.5,2.4,-0.5,0.5,-13,0.5,10,-12,0.5,-0.6,-15,-0.7,15,0.5,-0.7,-2.0,-19,-17,-11,-14] %zk为测量出来的离散值; N=length(zk); %要测量的点数 ; for k=2:N p1(k)=Ak*p(k-1)*Ak'+Qk; %未考虑噪声时的均方误差阵; H(k)=p1(k)*Ck'*inv(Ck*p1(k)*Ck'+Rk); %增益方程; I=eye(size(H(k))); %产生和H(k)维数相同的单位矩阵; p(k)=(I-H(k)*Ck)*p1(k); %滤波的均方误差阵; x(k)=Ak*x(k-1)+H(k)*(zk(k)-Ck*Ak*x(k-1)); %递推公式; end,x %显示信号x(k)的数据; m=1:N; n=m*0.02; plot(n,zk,'r',n,x,'b'); %便于比较zk和x(k)在同一窗口输出; legend('测量值zk','信号估计值x(k)',2); grid; |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2007-06-06
帖子: 2
声望力: 0 ![]() |
![]()
ok
你这样可以的 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-04-25
年龄: 42
帖子: 3
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-03-21
年龄: 45
帖子: 4
声望力: 0 ![]() |
![]()
谢谢,学习中
|
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2009-04-17
年龄: 37
帖子: 2
声望力: 0 ![]() |
![]()
谢谢楼主分享,不错啊
|
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2008-05-30
年龄: 39
帖子: 3
声望力: 0 ![]() |
![]()
谢谢分享,共同学习!!!
|
![]() |
![]() |
![]() |
#7 |
初级会员
注册日期: 2009-05-14
年龄: 37
帖子: 4
声望力: 0 ![]() |
![]()
学习中 谢谢分享 !!!
|
![]() |
![]() |
![]() |
#8 |
初级会员
注册日期: 2009-04-22
帖子: 1
声望力: 0 ![]() |
![]()
我也正在學習中...
|
![]() |
![]() |
![]() |
#9 |
初级会员
注册日期: 2008-03-25
帖子: 4
声望力: 0 ![]() |
![]()
感谢楼主的无私奉献,正好可以借鉴
|
![]() |
![]() |
![]() |
#10 |
初级会员
注册日期: 2010-03-07
年龄: 36
帖子: 1
声望力: 0 ![]() |
![]()
O(∩_∩)O谢谢~
|
![]() |
![]() |