纯方位角目标跟踪 EKF状态估计

纯方位目标运动分析是一种隐蔽突击的有效方法,它是利用目标本身的有源辐射,如电磁波辐射、红外辐射、声波辐射、目标对照射的散射。甚至目标施放的干扰辐射等,采用机动单站测向机对目标定位与跟踪。这种对运动目标的隐蔽定位与跟踪是反电子对抗、反水声对抗、反侦察,实施对目标突然袭击的十分有效的手段。在现代战争实际环境里,通常测得的敌机(舰)特征数据是非常有限的。而目标的方位几乎成了唯一可靠的参数。因此可以
利用所测得的目标方位角信息估计目标的运动参数(位置、速度、加速度等),从而实施对敌机(舰)的有效打击和电子干扰。
假定观测站对某匀速直线运动的目标进行纯方位跟踪,假定观测站已知目标的初始状态。
基于纯方位的目标运动模型可以写成如下形式∶
X ( k ) = Φ X ( k − 1 ) + T U ( k ) X(k)= \Phi X(k-1)+\Tau U(k) X(k)=ΦX(k1)+TU(k)
Z ( k ) = a r c t a n y ( k ) − y 0 x ( k ) − x 0 + V ( k ) Z(k)=arctan{\frac{y(k)-y_0}{x(k)-x_0}} +V(k) Z(k)=arctanx(k)x0y(k)y0+V(k)

% function EKF_Angle
T=1; %雷达扫描周期
N=40/T; %。总的采样次数
F=[ 1,T,0,0;
    0,1,0,0;
    0,0,1,T;
    0,0,0,1]; %状态转移矩阵
G=[T^2/2,0;
    T,0;
    0,T^2/2;
    0,T]; %过程噪声驱动矩阵
delta_w= 1e-4; %如果增大这个参数,目标真实轨迹就是曲线了
Q =delta_w * diag([1,1]); %过程噪声均值
R=0.01 * pi/180; %观测噪声方差,读者可以修改此值观察其对角度测量的影响
W = sqrtm( Q) * randn( 2,N); %过程噪声
V=sqrt( R) * randn( 1,N); %观测噪声
%观测站的位置,可以设为其他值
station.x=0;
station.y =1000;
%% %% %%%%%%%%%%%%%%%%%%%%% % %%%%%%%%%%%%%%%%% %%
X= zeros( 4,N); %目标真实位置、速度
X( :,1)=[0,2,1400,-10]; %目标初始位置、速度
Z=zeros( 1,N); %传感器对位置的观测
for k=2:N
    X( : ,k)=F*X( :,k-1)+G* W( :,k); %目标真实轨迹
end
for k= 1 :N
    target.x=X( 1,k) ; 
    target.y=X( 3,k);
    Z( k )= hfun( target , station)+V(k); % 对目标观测
end
% EKF滤波
Xekf = zeros( 4,N );
Xekf( : ,1)= X( :,1 ); %Kalman滤波状态初始化
P0=eye( 4); %协方差阵初始化
for i= 2:N
    Xn=F * Xekf( : , i-1) ; %。预测
    P1=F* P0 * F'+G*Q* G'; %预测误差协方差
    target.x = Xn( 1 ) ; 
    target.y = Xn( 3 ) ;
    dd = hfun( target , station) ; %。观测预测
    %求雅可比矩阵H
    D= Dist( target , station ) ;
    H=[-( Xn(3, 1) -station.y)/ D,0,(Xn(1,1)-station.x)/D,0];
    K=P1*H'* inv(H*P1* H'+R); %增益
    Xekf( : ,i)= Xn+K*(Z(:,i )-dd ) ; %状态更新
    P0= ( eye(4)-K* H) * P1; %滤波误差协方差更新
end
%误差分析
for i= 1 :N
    target.x=X( 1 , i ) ;
    target.y=X( 3, i );
    s.x = Xekf( 1 , i ) ;
    s. y =Xekf( 3, i);
    Err_KalmanFilter( i)= Dist ( target , s ) ;%滤波后误差
end
% %%%% %%%%%%%%%%%%% %% %%%% %%%%%%%%%%%%%%%% %%%%%%%画图
figure
hold on ; box on;
plot( X( 1,:),X( 3, : ) , '-k.' ); %真实轨迹
hold on;
plot( Xekf( 1 , : ) ,Xekf( 3, : ) , '-r+'); %扩展Kalman滤波轨迹
legend('真实轨迹','EKF轨迹');

figure
hold on; box on;
plot( Err_KalmanFilter , '-ks' , 'MarkerFace' , 'r');

figure
hold on; box on;
plot ( Z/ pi * 180-V/ pi * 180 , '-r. ' , 'MarkerFace' , 'r' );%真实角度值
plot( Z/ pi * 180 , '-ko' , 'MarkerFace' , 'g'); % 受噪声污染的观测值
legend('真实角度','观测角度');
%%%%%%%%% %%%%%%% %%%%%%%% %%%%% %%% %%% %% %%%%% %% %%
%子函数
function cita = hfun( X1 ,X0)
cita= atan2( X1.y-X0.y ,X1.x-X0.x);
end
function d= Dist( X1,X2)
d = sqrt(( X1.x-X2.x)^2+(X1.y-X2.y)^2);
end
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值