?? trajectory.m
字號:
function [X,Y]=trajectory(Ts,offtime)
% 產生真實航跡[X,Y],并在直角坐標系下顯示出
% Ts為雷達掃描周期,每隔Ts秒取一個觀測數據
% 最初做勻速運動,接下來進行兩個90度的機動轉彎
if nargin>2
error('輸入的變量過多,請檢查');
end
if offtime<600
error('仿真時間必須大于600s,請重新輸入');
end
x=zeros(offtime,1);
y=zeros(offtime,1);
X=zeros(ceil(offtime/Ts),1);
Y=zeros(ceil(offtime/Ts),1);
% t=0:400s,速度vx,vy為沿x和y軸的速度分量(m/s)
x0=2000;%起始點坐標
y0=10000;
vx=0;
vy=-15; % 沿-y方向
for t=1:400
x(t)=x0+vx*t;
y(t)=y0+vy*t;
end
% t=400:600s,ax,ay為沿x和y軸的加速度分量(m/s/s)
ax=0.075;
ay=0.075;
for t=0:200
x(t+401)=x(400)+vx*t+ax*t*t/2;
y(t+401)=y(400)+vy*t+ay*t*t/2;
end
vx=vx+ax*200; % 第一次機動轉彎結束時的速度
vy=vy+ay*200;
% t=600:610s勻速運動
for t=0:10
x(t+601)=x(601)+vx*t;
y(t+601)=y(601)+vy*t;
end
% t=610:660s,第二次轉彎
ax=-0.3;
ay=0.3;
for t=0:50
x(t+611)=x(611)+vx*t+ax*t*t/2;
y(t+611)=y(611)+vy*t+ay*t*t/2;
end
vx=vx+ax*(660-610);% 第二次機動轉彎結束時的速度
vy=vy+ay*(660-610);
% 660s以后勻速運動,一直到截止時間
for t=0:(offtime-660)
x(t+661)=x(661)+vx*t;
y(t+661)=y(661)+vy*t;
end
% 得到雷達的觀測數據
for n=0:Ts:offtime
X(n/Ts+1)=x(n+1);
Y(n/Ts+1)=y(n+1);
end
%顯示真實軌跡
plot(X,Y,'LineWidth',2),axis([1800 4500 2000 10000]),grid on;
legend('目標真實航跡');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -