• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签:

资源简介

经典比例导引法,二维,详细注释每一行代码,适合比例导引法的入门学习

资源截图

代码片段和文件信息

clear all;
close all;
clc;

Time=0;
TimeStep=0.005; %仿真步长
%-------初始化制导系统参数---------
pi=3.141592653;
g=9.8;
Ma=340;
%---------导弹参数--------------
Rmx=50;Rmy=0; %导弹初始位置
Vm=-3.24*Time^3+41.7*Time^2-248*Time+888; %导弹速度(m/s)
AmMay=500*g; %导弹最大机动能力
HeadError=-0.001; %指向角误差

%-------目标参数------------
Rt=6000;  %目标初始距离(弹目斜距)
ThetaT=pi+8/180*pi; %目标速度方向
Rtx=Rt*cos(8/180*pi); %目标初始X轴位置
Rty=Rt*sin(8/180*pi); %目标初始Y轴位置
Vt=5*Ma; %目标速度(m/s)
AtMay=0*g; %目标机动能力

%--------导弹和目标几何运动学结算--------
Rtmx=Rtx-Rmx; %弹目在X轴方向的相对距离
Rtmy=Rty-Rmy; %弹目在Y轴方向的相对距离
Rtm=sqrt(Rtmx^2+Rtmy^2); %计算弹目相对距离
SightAngle=atan(Rtmy/Rtmx); %视线角
LeadAngle=asin(Vt*sin(SightAngle-ThetaT)/Vm); %指向角
Vmx=Vm*cos(SightAngle-LeadAngle+HeadError); %导弹沿X轴方向的速度分量
Vmy=Vm*sin(SightAngle-LeadAngle+HeadError); %导弹沿Y轴方向的速度分量
Vtx=Vt*cos(ThetaT); %目标沿X轴方向的速度分量
Vty=Vt*sin(ThetaT); %目标沿Y轴方向的速度分量
Vtmx=Vtx-Vmx; %弹目在X轴方向上的相对速度
Vtmy=Vty-Vmy; %弹目在Y轴上的相对速度
Vc=-(Rtmx*Vtmx+Rtmy*Vtmy)/Rtm; %弹目相对速度

q=1;
Am=0;

dSightAngle=0;
% b1(11)=Rtm;
while(1)
    rmx2(1q)=Rmx;
    rmy2(1q)=Rmy;
    rtx2(1q)=Rtx;
    rty2(1q)=Rty;
    
    a2(1q)=Am;
    time2(1q)=Time;
    
    dq1(1q)=SightAngle;
    dq2(1q)=dSightAngle;
    b1(1q)=Rtm;
    t1(1q)=ThetaT;
    vm1(1q)=Vm;
    if(abs(Rtm)<1) %击中目标
        break;
    end
   if(abs(Rtm)<500)
       TimeStep=0.00005;
   end
   
   dSightAngle=(Rtmx*Vtmy-Rtmy*Vtmx)/(Rtm^2);  %视线角速率
   kd=3;
   
   %----------导弹加速度(导弹加速度矢量垂直于视线角速度方向)-------
   Am=Vc*dSightAngle*kd; %比例导引律
   if Am>AmMay %限制机动能力
       Am=AmMay;
   end
   if Am<-AmMay
       Am=-AmMay;
   end
    Amx=-Am*sin(SightAngle); %沿x轴的加速度分量
    Amy=Am*cos(SightAngle);  %沿Y轴的加速度分量
    %---------状态刷新-----------------
    Time=Time+TimeStep;
 
    Rmx=Rmx+TimeStep*Vmx;

评论

共有 条评论

相关资源