%具有角度和时间约束的导弹最优全弹道设计

%算法三:比例导引末制导

%说明:在仿真中,下标"_m"表示拦截弹参数,下标"_t"表示目标弹参数

clear

clc

%---------------------拦截弹参数设置-----------------------

V_m=260; % 单位:m/s,导弹飞行速度

theta_m=45*pi/180;%单位:rad,初始弹道倾角

fea_m=10*pi/180;%单位:rad,初始弹道偏角

H=1000;%单位:m,飞行高度

g=9.6;%单位:m/s^2,重力加速度

X_m=0; %单位:m,拦截弹位置坐标,X轴

Y_m=1000; %单位:m,拦截弹位置坐标,Y轴

Z_m=0; %单位:m,拦截弹位置坐标,Z轴

%---------------------目标弹参数设置-----------------------

V_t=150; %单位:m/s,目标弹飞行速度

theta_t=60*pi/180;%单位:rad,初始弹道偏角

fea_t=0*pi/180;%单位:rad,初始弹道偏角

X_t=1000; %单位:m,目标弹位置坐标,X轴

Y_t=2000; %单位:m,目标弹位置坐标,Y轴

Z_t=10*pi/180; %单位:m,目标弹位置坐标,Z轴

%------------------比例导引律参数设置-----------------------

k1=5; %纵向通道导引系数

k2=5;%偏航通道导引系数

t=0; %单位:s,仿真时刻

dt=0.001;%单位:s,仿真时间步长

n=1;%计数用

R=sqrt((X_m-X_t)^2+(Y_m-Y_t)^2+(Z_m-Z_t)^2); % 计算弹目相对距离

theta_L=atan((Y_t-Y_m)/sqrt((X_t-X_m)^2)+(Z_t-Z_m)^2);

fea_L=atan((Z_t-Z_m)/(X_t-X_m));

while(R>1) %当弹目相对距离小于阈值时,仿真停止

%-------------------------纵向通道------------------------------

% dR=V_t*cos(theta_L)*cos(fea_L-fea_t)-(cos(theta_m)*cos(theta_L)*cos(fea_L-fea_m)+sin(theta_m)*sin(theta_L))*V_m;

% dtheta_L=-1/R*V_t*sin(theta_L)*cos(fea_L-fea_t)-1/R*(sin(theta_m)*cos(theta_L)-sin(theta_L)*cos(theta_m)*cos(fea_L-fea_m))*V_m;

dX_m=V_m*cos(theta_m)*cos(fea_m);

dY_m=V_m*sin(theta_m);

dZ_m=-V_m*cos(theta_m)*sin(fea_m);

dX_t=V_t*cos(theta_t)*cos(fea_t);

dY_t=V_t*sin(theta_t);

dZ_t=-V_t*cos(theta_t)*sin(fea_t);

dR=((X_m-X_t)*(dX_m-dX_t)+(Y_m-Y_t)*(dY_m-dY_t)+(Z_m-Z_t)*(dZ_m-dZ_t))/sqrt((X_m-X_t)^2+(Y_m-Y_t)^2+(Z_m-Z_t)^2);

dtheta_L=((dY_t-dY_m)*sqrt((X_t-X_m)^2+(Z_t-Z_m)^2)-(Y_t-Y_m)*((X_t-X_m)*(dX_t-dX_m)+(Z_t-Z_m)*(dZ_t-dZ_m))/sqrt((X_t-X_m)^2+(Z_t-Z_m)^2))/((X_m-X_t)^2+(Y_m-Y_t)^2+(Z_m-Z_t)^2);

ny=k1*abs(dR)*dtheta_L/g; %控制输入(论文中式(18)第一式)

dtheta_m=g/V_m*(ny-cos(theta_m)); %纵向通道:弹道倾角变化函数(论文中式(1))

theta_m=theta_m+dtheta_m*dt;

%-------------------------偏航通道------------------------------

% dfea_L=1/(R*cos(theta_L))*V_t*sin(fea_L-fea_t)-1/(R*cos(theta_L))*V_m*cos(theta_m)*sin(fea_L-fea_m);

dfea_L=((dZ_t-dZ_m)*(X_t-X_m)-(Z_t-Z_m)*(dX_t-dX_m))/((X_t-X_m)^2+(Z_t-Z_m)^2);

nz=k2*abs(dR)*dfea_L/g; %控制输入(论文中式(18)第二式)

dfea_m=-g/(V_m*cos(theta_m))*nz;%偏航通道:弹道偏角变化函数(论文中式(7))

fea_m=fea_m+dfea_m*dt;

%----------------------------计算拦截弹坐标----------------------------

X_m=X_m+V_m*cos(theta_m)*cos(fea_m)*dt;

Y_m=Y_m+V_m*sin(theta_m)*dt;

Z_m=Z_m-V_m*cos(theta_m)*sin(fea_m)*dt;

%----------------------------计算目标弹坐标----------------------------

X_t=X_t+V_t*cos(theta_t)*cos(fea_t)*dt;

Y_t=Y_t+V_t*sin(theta_t)*dt;

Z_t=Z_t-V_t*cos(theta_t)*sin(fea_t)*dt;

%计算相对运动学参数

R=sqrt((X_m-X_t)^2+(Y_m-Y_t)^2+(Z_m-Z_t)^2);

theta_L=atan((Y_t-Y_m)/sqrt((X_t-X_m)^2)+(Z_t-Z_m)^2);

fea_L=atan((Z_t-Z_m)/(X_t-X_m));

%-------------------------保存结果------------------------------

theta_m_store(n)=theta_m; %保存弹道倾角

fea_m_store(n)=fea_m; %第一行为实际弹道偏角,第二行为指令弹道偏角

ny_store(n)=ny; %保存纵向过载

nz_store(n)=nz; %保存偏航过载

P_m_store(:,n)=[X_m;Y_m;Z_m]; %保存拦截弹坐标

P_t_store(:,n)=[X_t;Y_t;Z_t]; %保存目标弹坐标

n=n+1; %每循环一次,计数加一

t=t+dt; %往前推进一个仿真步长

end

disp('脱靶量为(m):')

R

figure(1)

plot((1:n-1)*dt,theta_m_store*180/pi)

xlabel('time/s')

ylabel('弹道倾角/deg')

title('末制导:弹道倾角变化情况')

figure(2)

plot((1:n-1)*dt,ny_store)

xlabel('time/s')

ylabel('纵向过载ny')

title('末制导:纵向过载变化情况')

figure(3)

plot((1:n-1)*dt,fea_m_store(1,:)*180/pi)

xlabel('time/s')

ylabel('弹道偏角/deg')

title('末制导:弹道偏角变化情况')

figure(4)

plot((1:n-1)*dt,nz_store)

xlabel('time/s')

ylabel('偏航过载nz')

title('末制导:偏航过载变化情况')

figure(5)%注意matlab三维坐标画图X、Y、Z轴方向与导弹飞行力学坐标系不同

plot3(P_m_store(1,:),P_m_store(3,:),P_m_store(2,:),P_t_store(1,:),P_t_store(3,:),P_t_store(2,:))

legend('拦截弹运动轨迹','目标弹运动轨迹')

xlabel('X/m')

ylabel('-Z/m')

zlabel('Y/m')

三维比例导引 matlab,三维比例导引律(源程序)相关推荐

  1. MATLAB 仿真 n年后的比例,基于Matlab的比例导引弹道仿真分析.PDF

    基于Matlab的比例导引弹道仿真分析.PDF ·60· 战术导弹技术Ta(·ti(·alMissile TechnologyMay,2009,(3):60-64 [文章编号]1009.1300(20 ...

  2. 怎么用matlab做三维正方体,用Matlab三维网线图函数mesh绘制正方体

    三维立体图如下: A'------------B' /|            /| / |           / | D'------------C' | |  |          |  | | ...

  3. matlab 三维图 输出,MATLAB三维曲线图绘制并输出到指定文件夹(突出几组不同数据)...

    1.首先生成全为0的一维数组(X,Y1,Z1).全为1的一维数组(X,Y2,Z2).正弦曲线(X,Y3,Z3).注意绘制三维图时,X,Y,Z矢量长度要相同! 2.MATLAB中绘制三维曲线指令plot ...

  4. matlab三维绘图注释,Matlab三维绘图与图形处理

    三维绘图 01 空间曲线作图 调用格式为: plot3(x,y,z,'s') 若x,y,z是同维数的向量,则表示绘制一条横坐标为x,纵坐标为y,函数值为z的一条空间曲线,若x,y,z为m×n矩阵,则绘 ...

  5. matlab生成三维图软件,Matlab三维图如何绘制?

    在计算机领域,有时候需要应用到三维曲面图,在这种情况下,我们首先要知道三维数据,分别为x,y,z的值,然后在借助Matlab工具来绘制三维曲面图.有了Matlab的帮助,可以很简单的实现三维曲面图的绘 ...

  6. matlab 三维图像保存,matlab三维动图保存问题

    function main() clc; %清除命令窗口的内容 clear all;%清除工作空间的所有变量,函数,和MEX文件 close all;%关闭所有的Figure窗口 hold on; % ...

  7. MATLAB三维绘图(三)绘制等值线图

    MATLAB三维绘图(三)绘制等值线图 1.使用contour函数绘制等值图,示例: %% 显示不同颜色的梯度图 clear; clc; close all; x = -3.5:0.2:3.5; y ...

  8. MATLAB三维绘图(四)绘制特殊的三维图

    MATLAB三维绘图(四)绘制特殊的三维图 1.使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 ...

  9. MATLAB三维绘图基础meshgrid函数的用法解析

    MATLAB三维绘图基础meshgrid函数的用法解析   MATLAB中meshgrid函数是用来生成网格的,函数用法是:   [X,Y] = meshgrid(x,y);这种是最常用的一种用法.x ...

最新文章

  1. exchange十种常见退信原因
  2. matlab神经网络3:模式分类
  3. linux 多线程 写日志,rsyslog多线程远程日志记录介绍(lamp+rsyslog)
  4. 虚拟专题:知识图谱 | 事件图谱的构建、推理与应用
  5. php include不可用,无法设置PHP include_path
  6. java 多线程语法_Java基础语法之多线程学习笔记整理
  7. 【clickhouse】clickhouse表引擎之CollapsingMergeTree
  8. 【FLink】FLink学习遇到的好文章
  9. IO流之流的操作规律
  10. Atitit. Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g
  11. windows环境下vue开发环境搭建
  12. 【无人机】【2008.09】用于小型无人机目标定位的轨迹优化
  13. 合成文字识别需要的训练竖排文字数据集
  14. win10 华硕ASUS USB AC56 无线网卡 欧版 5G 信号不全 问题修复
  15. oracle IF_Oracle实时同步大数据平台解决方案
  16. MeteoInfoLab脚本示例:利用比湿、温度计算相对湿度
  17. 痛并快乐着的保研经历
  18. 2019“我爱北京——市民新春联欢会”将现300人大合唱
  19. 什么是DAOstack
  20. js 字符串删除首尾_js去除字符串首尾空格

热门文章

  1. goland下载与安装教程(详细)
  2. apache实现文件上传服务器,使用Apache的Fileupload工具实现文件上传
  3. 关于sql server 2019的 卸载
  4. C/C++——vector的基本操作总结
  5. 中职学校计算机专业的论文,浅谈中职计算机专业教学改革思考论文
  6. MySQL主从部署, master and slave have equal MySQL server UUIDs问题解决
  7. webstorm11 破解办法
  8. pyControl | 用于控制行为的神经科学实验的开源硬件和软件
  9. 内鬼黑客狂卖个人信息 “年产值”飙上千亿
  10. 智能小区监控、报警、灯光联动三位一体安全防范系统