image thumbnail
from kalman filter example for body in gravitation by Maxim Vedenyov
with description and references

kalman_filter_tmp.m
v0=4;
a=-1;
dt=0.01;
tm=10;
x=0;
v=v0;
xa=x;
va=v;
ta=0:dt:tm;
for t=ta(2:end)
    x=x+dt*v;
    v=v+dt*a;
    xa=[xa x];
    va=[va v];
end

xna=xa+1*(rand(size(xa))-0.5);

plot(ta,xna,'b-');

xc=[xa(1);
    0;
    0];

F=[1   dt   0;
   0   1    dt;
   0   0    1];

H=[1 0 0];

xca=xc;
nc=2;
k=0.1;
for t=ta(2:end)
    xc=F*xc;
    xc(1)=xc(1)-k*(xc(1)-xna(nc));
    xc(2)=xc(2)-k*(xc(1)-xna(nc));
    xc(3)=xc(3)-k*(xc(1)-xna(nc));
    xca=[xca xc];
    nc=nc+1;
end

hold on;
plot(ta,xca(1,:),'r-','linewidth',2);
xlabel('time, s');
ylabel('x, m');
legend('noised','filtered');

Contact us at files@mathworks.com