|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
卡尔曼滤波仿真程序用于匀速运动的目标跟踪
* m3 b* f+ I4 t7 p: u. S$ b, _0 a
- h2 V0 v8 h: w8 T `% kalman filtering
8 N5 T8 c# ~5 }& q7 Q r0 z9 |8 p0 e2 v
load initial_track s; % y:initial data,s:data with noise" x- e8 \* L% c/ R4 B3 J
T=0.1;
1 ~& ^5 p/ R2 B% ?1 e' ?+ ]- G) J
, u: a6 c0 e6 K+ G! ?; D2 t% w. a Y% yp denotes the sample value of position P$ ^7 D8 L7 _ T$ a `: v8 ] w
% yv denotes the sample value of velocity0 c1 A3 |9 J8 h+ q1 I
% Y=[yp(n);yv(n)];
" c N8 C: Y! i1 F% error deviation caused by the random acceleration# D* W, n$ G/ @' ]- U3 l% `! p; N
% known data
2 T! P5 X& f: ?( P2 ?Y=zeros(2,200);
5 `3 [$ r% F; i+ v0 aY0=[0;1];' S% q O* G" h6 B* B
Y(:,1)=Y0;
2 F+ {/ J* r9 a9 _3 f8 n( f5 VA=[1 T( M6 Q+ [- E0 K) H* z2 z
0 1];
+ A, Y3 H) L; Z( k2 e7 k( d# G' y# g9 mB=[1/2*(T)^2 T]';
2 [* F% T, H# L2 n7 dH=[1 0];# k, m t. R, N6 `
* ]( U, |3 q3 }3 j1 m
C0=[0 0/ P! Y. ?- j* v1 L& v
0 1];
7 s0 m6 @) w3 u3 L, }; ?3 p/ N% TC=[C0 zeros(2,2*199)];5 L' {& U" e, d& R. I7 ^
Q=(0.25)^2;6 Y/ @3 f8 U+ _
R=(0.25)^2;
7 }" m& S( Y, M' |* h: \$ ?
. e) a# w/ } C6 W" `9 `
! ^* ~/ S/ E, W, v$ @( Z9 \: T* a% kalman algorithm ieration
6 _0 h3 _* L0 `# O. Y( v. X) ~for n=1:200/ e/ n3 V5 Y2 z/ b- b
i=(n-1)*2+1;* W# }! a. u* V* W+ ^
K=C(:,i:i+1)*H'*inv(H*C(:,i:i+1)*H'+R);* D ]) E: k7 E7 N1 S3 K4 z- i
Y(:,n)=Y(:,n)+K*(s(:,n)-H*Y(:,n));
" H" N* m/ Z0 \! G/ Y Y(:,n+1)=A*Y(:,n);1 A, s8 c4 T; Z' y4 |. ]
C(:,i:i+1)=(eye(2,2)-K*H)*C(:,i:i+1);
0 v' H) x" {3 A C(:,i+2:i+3)=A*C(:,i:i+1)*A'+B*Q*B';( T; t; J$ Z$ @( Z3 W d
end
! }2 p) ^$ A2 a- F1 |! `3 D! {0 B5 `5 f7 ^" H+ J2 a! c
% the diagram of position after filtering
* J$ K/ x8 ~8 W: x& L4 Q" q7 j) `t=0:0.1:20;) V* {+ I9 {# Z* |8 h3 Y0 a
figure(2);
) \2 k9 c3 T, s c; f Qyp=Y(1,:);
4 }8 L6 H. t2 U3 @: R9 iplot(t,yp,'r.-');" X# p; ^2 P! z. h
axis([0 20 0 20]);
; f! `/ ]) Q0 i3 hxlabel('time');% p! O$ @9 ]4 r3 _! h2 @' @
ylabel('yp position');( l) o- S6 R2 `& l9 U) O
title('the track after kalman filtering');
* B0 x, \7 ^/ `$ c6 z5 Nhold on;
. q0 h/ b I* _1 k' d) r
& w$ q5 F8 o: W# O% the diagram of velocity after filtering
/ ]4 } ^% ^# o& C' j$ tfigure(3);+ S+ _# Z: N# n9 c
yv=Y(2,:);/ h) a( s/ d: A! Z4 |
plot(t,yv,'k.-');, K0 e2 t% C; |$ d1 J
xlabel('time');
# i+ _1 {8 V5 F7 t+ Z9 cylabel('yv velocity');, `% G8 ?2 l2 q- o% N
title('the velocity caused by random acceleration');
( t9 E" X4 d! O6 Q4 E. `( [
; l- v: g- w' b9 p2 U
3 A. Z/ d& J3 e" a/ [" f, S; K' `$ O* v+ f8 ?2 v
1 B% N4 U& W+ z& B
% a2 h0 ?1 D {( c+ G) \ |
|