kalman filter的一个例子

kalman filter 的原理就不讲解了,这里直接写一个一维状态变量的估计例子.参考《probabilistic robotic》这本书。

clear all;
N=500;
q=0.1*randn(1,N);%process noise
r=10*randn(1,N);%observation noise

x(1)=25;
a=1;
c=1;

for k=2:N;
    x(k)=a*x(k-1)+q(k-1);
end;

for k=1:N;
    z(k)=c*x(k)+r(k);
end;

p(1)=10;

s(1)=1;

for t=2:N;
    Rq=cov(q(1:t));  
    Rr=cov(r(1:t)); % caculate covariance 
    xhat=a*x(t-1);
    phat=a^2*p(t-1);
    K(t)=c*phat/(c^2*phat+Rr);
    
    s(t)=xhat+K(t)*(z(t)-c*xhat);
    p(t)=phat*(1-K(t)*c);
end;
t=1:N  
error=s-x;% estimate value - state value  
plot(t,s,'bo',t,z,'g.',t,x,'r--',t,error,'m*'); % line show kalman; dot line observation; slash line state  
legend('Kalman estimate','Observation','State value','error'); 

    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值