• 大小: 6KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-06-08
  • 语言: Matlab
  • 标签: 航迹模拟  matlab  

资源简介

该代码模拟了一个圆形运动目标的航迹,运用matlab实现

资源截图

代码片段和文件信息

clc;
clear all;
close all;
angle_rd_fw_start=0;%雷达天线波束起始方位角为0;
r_max=18e3;%雷达最大作用距离
r_min=5e3;%雷达最小作用距离
angle_rd_bandwidth=10/180*pi;%天线波束宽度4°
rd_speed=6/180*pi;%雷达波束扫描速度为3°/s

load E:\line2.dat
v_m=line2(:1)‘;%目标的速度大小
r_m=line2(:2)‘;%目标初始的径向距离
angle_m_fw=line2(:3)‘;%目标初始的方位角
angle_v_fw=line2(:4)‘;%目标初始的速度方位角
tgt_modle=line2(:5)‘;%目标的运动模型

pos_x=r_m.*cos(angle_m_fw);%根据上面的初始参数算出目标的初始的X坐标
pos_y=r_m.*sin(angle_m_fw);%根据上面的初始参数算出目标的初始的Y坐标

m_num=length(r_m);%求出飞机航迹的个数;

%%模拟器过程;
cpi_time=85e-2;%%对目标航迹的采样间隔时间,单位s 
z_time=300;%%设置雷达波束扫描的总时间,单位s
trace_length=ceil(z_time/cpi_time);%%表示对目标航迹采样的总个数 
x_m_trace=zeros(m_numtrace_length);%%设置一个m_num*trace_length放置m_num个航迹x坐标的矩阵
y_m_trace=zeros(m_numtrace_length);
angle_m_trace=zeros(m_numtrace_length);%放置m_num个航迹的方位角
angle_rd_trace=zeros(1trace_length);%放置雷达的方位角
angle_rd_trace(11)=angle_rd_fw_start;
n=60; 
angle_rd_trace1(1:n1)=(linspace(angle_rd_trace(11)-angle_rd_bandwidth/2angle_rd_trace(11)+angle_rd_bandwidth/2n))‘;
pos_x1=pos_x;
pos_y1=pos_y;

x_m_trace(1:m_num1)=pos_x‘;
y_m_trace(1:m_num1)=pos_y‘;

% angle_m_trace1=pos_y/pos_x;%?????????????
% if pos_x<0%?????????
%    angle_m_trace1=angle_m_trace1+pi;
% end
% angle_m_trace(1:m_num1)=angle_m_trace1;
angle_m_fw=atan(pos_y./pos_x);%%得到目标的方位角,因为是用atan的函数求角,因此需要修正。
m0=find(pos_x<0);
angle_m_fw(m0)=angle_m_fw(m0)+pi;
angle_m_trace(1:m_num1)=angle_m_fw‘;

m=1;
w=2;
while m<=trace_length   %%进入波束扫描
    for i=1:4
        if(tgt_modle(1i)==0)%航迹模型为直线
%             [pos_jh_xpos_jh_y]=LINE(pos_x1pos_y1);
            pos_jh_x(1i)=pos_x1(1i)+v_m(1i).*cpi_time.*cos(angle_v_fw(1i));%m个cpi时间间隔之后目标的新坐标
            pos_jh_y(1i)=pos_y1(1i)+v_m(1i).*cpi_time.*sin(angle_v_fw(1i));
        else
            pos_jh_x(1i)=pos_x1(1i)+v_m(1i)./w.*cos(angle_m_fw(1i)+w.*cpi_time);%m个cpi时间间隔之后目标的新坐标
            pos_jh_y(1i)=pos_y1(1i)+v_m(1i)./w.*sin(angle_m_fw(1i)+w.*cpi_time);            
        end
    end
    pos_r=sqrt(pos_jh_x.^2+pos_jh_y.^2);
    R_sub=pos_r-r_max;
    r_sub=pos_r-r_min;
%     R_sub>0;
    m_R=find(R_sub>0);
    R=length(m_R);
%     r_sub<0;
    m_r=find(r_sub<0);
    r=length(m_r);
    %%%%%%%若目标超出雷达最大作用距离,则目标从起始点重新开始运动%%%%%%%
    if  R
        pos_jh_x(1m_R)=pos_x(1m_R);
        pos_jh_x(1m_R)=pos_y(1m_R);
    end
    
    %%%%%%%若目标超出雷达最小作用距离,则目标从起始点重新开始运动%%%%%%% 
%     if  r
%        pos_jh_x(1m_r)=pos_x(1m_r);
%        pos_jh_y(1m_r)=pos_y(1m_r);
        %pos_jh_z(1m_r)=pos_z(1m_r);
%     end
     
    angle_m_fw=atan(pos_jh_y./pos_jh_x);%%得到目标的方位角,因为是用atan的函数求角,因此需要修正。
    m1=find(pos_jh_x<0);
 

评论

共有 条评论