www.gusucode.com > 基于matlab编程Singer模型算法对机动目标进行跟踪程序源码 > 基于matlab编程Singer模型算法对机动目标进行跟踪程序源码/Singer/target_movement.m

    function [x,y,zx,zy,NN]=target_movement
%函数定义:生成目标运动的真实值和测量值
% %***************仿真条件*******************************************************
T=2;      %雷达扫描周期
r=10000;  %量测误差方差
x0=2000;%目标在X轴方向的起始位置
y0=10000;%目标在Y轴方向的起始位置
xv0=0;%目标在X轴方向的起始速度
yv0=-15;%目标在Y轴方向的起始速度
NN=500;%采样点数
x=zeros(NN,1);%X轴位置初始化
y=zeros(NN,1);%Y轴位置初始化
x(1)=x0;%X轴初始位置
y(1)=y0;%Y轴初始位置
vx(1)=xv0;%X轴初始速度
vy(1)=yv0;%Y轴初始速度
for i=1:NN-1
    if i<200
        ax=0;
        ay=0;
        vx(i+1)=vx(i)+ax*T;
        vy(i+1)=vy(i)+ay*T;
    elseif (i>=200)&(i<=300)
        ax=15/200;
        ay=15/200;
        vx(i+1)=vx(i)+ax*T;
        vy(i+1)=vy(i)+ay*T;
    elseif (i>300)&(i<=500)
        ax=0;
        ay=0;
        vx(i+1)=vx(i)+ax*T;
        vy(i+1)=vy(i)+ay*T;     
    end
    x(i+1)=x(i)+vx(i)*T+0.5*ax*T^2+0.5*0*T^2*randn;%X轴的动态方程
    y(i+1)=y(i)+vy(i)*T+0.5*ay*T^2+0.5*0*T^2*randn;%Y轴的动态方程
end
%***************产生量测噪声********************
nx=100*randn(NN,1);
ny=100*randn(NN,1);
%***************量测值**************************
zx=x+nx;
zy=y+ny;
vvx=vx;
vvy=vy;
save target_movement_out vvx vvy

%i=1:NN;
%k=4:1:NN;
%l=4:1:NN;
%figure(1)
%plot(x,y,'-dm');
%title('目标运动轨迹')
%xlabel('x方向')
%ylabel('y方向')
%legend('目标运动轨迹')