|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
卡尔曼滤波仿真程序用于匀速运动的目标跟踪
% D" o, o$ ~! v5 G/ i) k0 t8 G, E8 q" v8 J6 n
% kalman filtering" W4 a5 U( e O1 Y! u8 Q0 s( `
7 c) x; J4 Z% R' aload initial_track s; % y:initial data,s:data with noise' `" n( A z* E* h
T=0.1;& Y7 m! ]( M. X2 {
0 C; j- D/ P2 I0 K
% yp denotes the sample value of position
6 y/ {2 [) J- o" l% yv denotes the sample value of velocity; c) p6 Z0 a8 V" G
% Y=[yp(n);yv(n)];0 w4 i" E3 ~' u! N) d6 R+ h$ z# D$ o
% error deviation caused by the random acceleration! G+ \! y( u% S- l( ~0 F
% known data
8 d: n" l- b- F& {2 D/ ^" CY=zeros(2,200);+ f" U _3 @' F, w. W m) i
Y0=[0;1];
8 |: V3 `+ D( g2 l* T0 Z0 m; aY(:,1)=Y0;
' o- u3 a, N' hA=[1 T
8 \% f5 U: U3 U2 ~4 D# r2 n 0 1]; . m8 ~# f2 A+ d6 c
B=[1/2*(T)^2 T]';" S9 d6 [# m! S1 u% ~9 X1 S5 ]
H=[1 0];
3 s' q$ x; I1 |/ `0 F' f9 p4 L% h: } {
C0=[0 0- C/ z; M) C% B8 U* f
0 1];3 l/ ?( N4 O& _
C=[C0 zeros(2,2*199)];
; H' p+ Y- p4 T: d- ]( H, |+ cQ=(0.25)^2;0 ~) [0 y4 b4 \4 g* I$ H4 B
R=(0.25)^2;/ R' `% g5 E8 s& L
0 B4 B- s6 l7 R! u2 G3 \9 |8 v W. U- c
% kalman algorithm ieration
. E( U9 ^& C( u2 Ufor n=1:2008 Q( b0 w% A8 N5 l0 E4 g9 D
i=(n-1)*2+1;
! A$ u8 B1 }) S K=C(:,i:i+1)*H'*inv(H*C(:,i:i+1)*H'+R);# {9 j$ x8 W- A& J
Y(:,n)=Y(:,n)+K*(s(:,n)-H*Y(:,n));
, B; u. l/ i) `' x, B) }. u) A Y(:,n+1)=A*Y(:,n);3 ]2 C- a, D& H7 W
C(:,i:i+1)=(eye(2,2)-K*H)*C(:,i:i+1);
7 b+ ~. |; _! r" U& _/ B, ~ C(:,i+2:i+3)=A*C(:,i:i+1)*A'+B*Q*B';/ |& p4 H F, J& _- O1 Y
end
( h( F, n; J' ?- B5 F8 A! Y) Q
' R7 _# F3 C0 h* ^' G9 _% the diagram of position after filtering) y& s1 M' ?" t0 X- G* t9 p
t=0:0.1:20;
. }* m I) y: m( qfigure(2);8 b* v- N* Y4 V3 L0 P0 n
yp=Y(1,:);
g& V5 b5 ]7 Z( x" ] hplot(t,yp,'r.-');
# V$ {# S! K1 e5 K j+ }axis([0 20 0 20]);
& o; T2 c8 v4 L: \xlabel('time');
( n1 @9 Y* {: {1 cylabel('yp position');4 p) x) |& X+ R; p I
title('the track after kalman filtering');" j. {* S, m, }5 A! z# R/ P
hold on;. m, B {4 k( v
* R# e$ u$ k; x1 _: W& g
% the diagram of velocity after filtering+ z% J7 }$ q2 r* c
figure(3);7 c. j" o4 e t) P, d
yv=Y(2,:);! |7 `: }6 i; e7 u
plot(t,yv,'k.-');
# s+ r! v$ y2 T9 ~. V( Y' ~0 uxlabel('time');0 ^! h9 J2 X$ D u- p2 K
ylabel('yv velocity');
7 p. z# C7 T& T( }title('the velocity caused by random acceleration');/ E- h/ N% T b. X- U- q( `
) S+ e; t! c6 ^' b
- W, {4 S* C4 l3 ]. V" h0 y
: i) ^1 _0 A/ v0 f) H' z; R+ n/ N8 y( z( J; |( M8 I# Y. J6 v( m% @1 g
3 \1 a: r4 f. w+ X& |" Z |
|