|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
卡尔曼滤波仿真程序用于匀速运动的目标跟踪
. W- T. l/ F% v9 U2 F; t4 }* {$ N( x
. q, A. ?" d- A2 g# f! M+ d* `% kalman filtering
0 V, r* A+ a) Y; T- i" J
' C7 {6 _. s. ^ Bload initial_track s; % y:initial data,s:data with noise
0 Y% G, x$ ~( ~8 @+ NT=0.1;) ?7 h0 B+ v5 W# i8 ~( I9 ^. I. G
6 x) `6 C b0 h O1 X% yp denotes the sample value of position
- R5 `. }5 y( b# \0 ~9 I% yv denotes the sample value of velocity
# u9 N; u' M! ]6 e0 ~( F3 R% Y=[yp(n);yv(n)];9 s. k; s! g0 a; \8 k& M
% error deviation caused by the random acceleration" ?6 n: q* |) k3 Z# U" F
% known data0 Q# b; r. b c
Y=zeros(2,200);6 R4 J- h6 N/ n {' P$ T# \
Y0=[0;1];- E) Q, r. Z% ]$ K/ V; r7 l8 g0 C
Y(:,1)=Y0;
5 [6 c( v4 K B; l; FA=[1 T. s1 p( h0 b' Q1 v
0 1]; . o* P1 I5 c; R& A
B=[1/2*(T)^2 T]';
0 z6 ?; w# x2 _5 e1 r# z+ L rH=[1 0];
& z- j& u$ z6 U+ V" n; z+ \: M g9 I+ U
C0=[0 0
8 F9 u [. A. v. Y- q" s 0 1];
5 A0 C& Q- |- d* T: q6 vC=[C0 zeros(2,2*199)];) ?( Q) D( [: @# g! a+ ~- j
Q=(0.25)^2;* k; y' U) E/ w# l) L/ X5 ]( a+ m
R=(0.25)^2;
9 M: E/ q3 d2 \* d. o4 v: N" q. @
, {1 ^' W( B/ Z& g$ N. }1 M+ p# }
% kalman algorithm ieration9 A( E0 a+ Y" C w
for n=1:200
( Z3 E8 x" a' g( S8 t3 F i=(n-1)*2+1;
0 h& R6 ~" P1 d% X) r/ E8 E2 D: U K=C(:,i:i+1)*H'*inv(H*C(:,i:i+1)*H'+R);* R5 w6 F& }1 U
Y(:,n)=Y(:,n)+K*(s(:,n)-H*Y(:,n));
8 F3 J4 f/ N( z Y(:,n+1)=A*Y(:,n);
' ~1 ~" ]* z' m u6 q' Z C(:,i:i+1)=(eye(2,2)-K*H)*C(:,i:i+1);
' l9 K; @9 v3 x2 d- H# R$ ? C(:,i+2:i+3)=A*C(:,i:i+1)*A'+B*Q*B';! p, C" {& Q9 [3 J- j
end
3 i% L* i$ w. G4 j' K5 `: h1 n& W c* ]: J5 d# i' [
% the diagram of position after filtering+ B$ K8 }) V7 v$ A) N) T' P, O
t=0:0.1:20;8 _7 }6 ~+ }6 Z+ h) @3 v' p
figure(2);/ I6 `2 T9 @/ P9 ^) o8 P9 i3 |
yp=Y(1,:);6 j0 l w0 h3 J- s4 [
plot(t,yp,'r.-');
/ _2 v2 G% H" Y* Aaxis([0 20 0 20]);) i% M. M- P) }
xlabel('time');! X" V; I7 M9 w" |
ylabel('yp position'); w2 i- C$ b- t$ |
title('the track after kalman filtering');3 t" G0 w# h$ Q5 I
hold on;
- V' { c3 Y! _
+ d; d- F$ Y$ J% the diagram of velocity after filtering
' ~* x- {9 t2 [& x: e+ p% N! Cfigure(3);
% X5 K* K( t4 ?0 y Ayv=Y(2,:);( K- R3 j5 l$ N+ Y) f2 L/ e8 G3 K
plot(t,yv,'k.-');# E$ ~; F# t4 Y
xlabel('time');
5 S1 a) F5 p5 o) Y: [9 }" `ylabel('yv velocity');
2 O3 \! F) Y. g$ qtitle('the velocity caused by random acceleration');$ n* t* @5 b7 d; y1 A" F O
6 v! b( [/ G9 q: H& L
+ S; m/ I& L* y/ I& F! A$ Z% u8 C, i# V S4 N1 Q6 c5 t( k$ `
) Z0 j7 v+ u8 k) e
* T" G4 Q% @' o. O: B |
|