|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
卡尔曼滤波仿真程序用于匀速运动的目标跟踪
! ]0 ]; p; S n
0 `7 C9 O3 B5 a0 Z% kalman filtering
/ R% |% ?6 X& e4 Z1 Q c7 [' O- n
load initial_track s; % y:initial data,s:data with noise
. v3 o9 H- v! V* w& f1 G' X% OT=0.1;
/ x. {" ~* H+ O. X7 ~) k6 j, T3 p4 ~$ ~ Q( L; f4 p/ U# y
% yp denotes the sample value of position
4 o5 `$ V+ d8 Z: \9 l5 F- q% yv denotes the sample value of velocity
- \$ {, P( X: ^% Y=[yp(n);yv(n)]; t C) i, c$ Z( e7 R! \& p
% error deviation caused by the random acceleration" C" m: `( T0 k5 n( G
% known data
g8 B+ p* A) e! k& BY=zeros(2,200); r: X! M; f: L% A6 w; Z
Y0=[0;1];& i0 p% W, v q- z( ] q' |
Y(:,1)=Y0;
4 ~8 F7 ]1 E9 a$ f* s9 `3 TA=[1 T4 I5 |6 G j; `
0 1];
/ w0 t- t _% ]4 C4 k# E6 hB=[1/2*(T)^2 T]';, g& S6 q) k& h9 r' L1 v2 B2 a
H=[1 0];
& {2 \) y( R% h- ]' h$ |9 U4 B: H% ^
C0=[0 0
' B* Z. v2 H% W- y( w" H$ i" Z! t 0 1];: X9 d+ s8 _% u0 F
C=[C0 zeros(2,2*199)];) O6 \: S: B$ p& m$ g1 c, J
Q=(0.25)^2;4 u+ }3 A& u7 d l- M. k
R=(0.25)^2;% ^! z& t3 c0 m6 t! `& z, ^
! p* Y0 q: `: ~$ ^3 C& t
" a+ ^$ @ l; @
% kalman algorithm ieration
' ?7 j' U! S2 hfor n=1:2004 \. j9 e0 w1 _- t
i=(n-1)*2+1;& V: T1 `5 e: q! @
K=C(:,i:i+1)*H'*inv(H*C(:,i:i+1)*H'+R);$ Z2 n( H, K" l& T! X) I
Y(:,n)=Y(:,n)+K*(s(:,n)-H*Y(:,n));
: h, @% k& X6 I# u Y(:,n+1)=A*Y(:,n);
8 A* b+ S2 Z& j' U C(:,i:i+1)=(eye(2,2)-K*H)*C(:,i:i+1);
4 o/ b1 Z3 A! Q# Z& o C(:,i+2:i+3)=A*C(:,i:i+1)*A'+B*Q*B';
8 Q: D- V _3 Gend
/ H' h% W/ L0 Y3 h* ~3 p0 t8 ]) `" n* K8 v' q3 r6 \" \) H# R: W) ]
% the diagram of position after filtering
9 g; p/ J7 \: ^/ f7 jt=0:0.1:20;
9 Q9 P6 P0 M# g7 |5 ]figure(2);
/ c& ?1 M; T$ a* i/ Fyp=Y(1,:);8 C) g& I( m; A4 d
plot(t,yp,'r.-');4 {: h6 d" K7 g$ A
axis([0 20 0 20]);) R# a: H+ a: Q# S7 ?
xlabel('time');
J, B3 D) d1 X2 @0 N; Zylabel('yp position');
, Q6 O- y9 N- a: T! y' atitle('the track after kalman filtering');
5 `6 x( m; E+ ]2 c8 e7 n( E2 @hold on;
, n* [) T+ K8 U
) D: d# u: x3 d$ \: j6 e% the diagram of velocity after filtering' H1 J$ B- J, @& C
figure(3);8 g5 O+ D4 O+ K& S* [ l
yv=Y(2,:); `4 S0 y5 M; R1 K9 @4 N/ E+ A
plot(t,yv,'k.-');
* l4 ~% W! e5 j, ], X( r! K7 Oxlabel('time');
% O7 s) Q: v O! [6 Kylabel('yv velocity');. N: Q v$ A, q
title('the velocity caused by random acceleration');
: u6 x+ s! p( q! a6 N3 O6 q
- t6 Y3 F# u+ i- l+ S: m1 w4 t& l
' i- b; y+ q( g# t" X
0 |1 _1 b- e6 W
3 u8 _8 b/ {/ L( P
|
|