资源简介
基于自适应滑模制导律完成了导弹制导仿真,目标做机动飞行,本资源为自适应滑模制导律matlab程序,含有弹道图,制导控制量,方位角速率图等可以自己改。仿真环境:matlab
代码片段和文件信息
clear all
n=0;
T=0.;
S=0.;
H=.002;
VM = 3500.;
VT = 7300.;
k = 3; %导航比 N
AT = 5.; %目标加速度nt 最终要算的是NC 然后刷新导弹的加速度
drt = -8558; %VC r(t)一阶导数
HE=0; %转化为弧度角 航向误差 HE
SEITA = -1.5/57.3; %初始λ 50°
BETA = 0./57.3;
RM1 = 0.;
RM2 = 0.;
RT1 = 100000.;
RT2 = 1000.;
RTM1=RT1-RM1; %相对位置
RTM2=RT2-RM2;
rt=sqrt(RTM1*RTM1+RTM2*RTM2); %rtm
ry3t = RT2-RM2;
qt = ry3t/rt;
VM1 = VM*cos(SEITA); %刷新导弹速度
VM2 = VM*sin(SEITA);
VT1 = -VT*cos(BETA);
VT2 = VT*sin(BETA);
VTM1 = VT1 - VM1; %相对速度大小
VTM2 = VT2 - VM2;
SEITA = atan2(RTM2RTM1);%tan反函数
SEITAD=(RTM1*VTM2-RTM2*VTM1)/rt^2;
dry3t = VT2 - VM2; % 核心算法
dqt = (dry3t*rt-ry3t*drt)/(rt*rt);
u = (k+1)*drt*dqt+hardlim(dqt);
AM1=u*sin(SEITA); %导弹加速度分量 qt 仰角
AM2=-u*cos(SEITA);
while drt <= 0 %只要接近速度>0 就得继续
BETAOLD=BETA; %存数据
RT1OLD=RT1;
RT2OLD=RT2;
RM1OLD=RM1;
RM2OLD=RM2;
VM1OLD=VM1;
VM2OLD=VM2;
STEP=1;
FLAG=0;
while STEP <=1
if FLAG==1
STEP=2;
BETA=BETA+H*BETAD; %β=β+H*β的一阶导数
RT1=RT1+H*VT1; %根据步长改变数据
RT2=RT2+H*VT2;
RM1=RM1+H*VM1;
RM2=RM2+H*VM2;
VM1=VM1+H*AM1;
VM2=VM2+H*AM2;
T=T+H; %T是步长H的累计
end
RTM1=RT1-RM1;
RTM2=RT2-RM2;
SEITA=atan2(RTM2RTM1);
ry3t = RT2-RM2;
rt=sqrt(RTM1*RTM1+RTM2*RTM2);
VTM1 = VT1 - VM1; %相对速度大小
VTM2 = VT2 - VM2;
SEITAD=(RTM1*VTM2-RTM2*VTM1)/rt^2;
VM = sqrt(VM1*VM1+VM2*VM2);
drt = (RTM1*VTM1+RTM2*VTM2)/rt;
qt = ry3t/rt;
dry3t = VT2 - VM2;
dqt = (dry3t*rt-ry3t*drt)/(rt*rt);
u = (k+1)*drt*dqt+hardlim(dqt);
AM1=u*sin(SEITA); %导弹加速度分量 qt 仰角
AM2=-u*cos(SEITA);
VT1=-VT*cos(BETA);
VT2=-VT*sin(BETA);
BETAD=AT/VT; %β的一阶导数
FLAG=1;
end
FLAG=0;
BETA=.5*(BETAOLD+BETA+H*BETAD); %老数据加上新数据 再 乘1/2
RT1=.5*(RT1OLD+RT1+H*VT1);
RT2=.5*(RT2OLD+RT2+H*VT2);
RM1=.5*(RM1OLD+RM1+H*VM1);
RM2=.5*(RM2OLD+RM2+H*VM2);
VM1=.5*(VM1OLD+VM1+H*AM1);
VM2=.5*(VM2OLD+VM2+H*AM2);
S=S+H;
if S >=.09999 %计算这么多次后 存一下值 大概10次
S=0.;
n=n+1;
ArrayT(n)=T;
ArrayRT1(n)=RT1;
ArrayRT2(n)=RT2;
ArrayRM1(n)=RM1;
ArrayRM2(n)=RM2;
ArrayXNCG(n)=u;
ArrayRTM(n)=rt;
ArrayQT(n)=qt;
ArraySEITAD(n)=SEITAD;
ArrayK(n)=-drt/rt;
end
end
figure
plot(ArrayRT1ArrayRT2ArrayRM1ArrayRM2)grid
title(‘Eventual ight path in the xy plane‘)
xlabel(‘X ‘)
ylabel(‘Z‘)
figure
plot(ArrayTArraySEITAD)grid
titl
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3442 2020-07-06 16:49 ASMG\asmg_2.m
目录 0 2020-08-06 11:03 ASMG
----------- --------- ---------- ----- ----
3442 2
- 上一篇:Volterra_均衡器
- 下一篇:Matlab中求解最小生成树的程序
相关资源
- Matlab中求解最小生成树的程序
- 单尺度和多尺度retinex的matlab实现程序
- 频谱感知-能量检测法代码
- COMSOL-MATLAB.m
- MATLAB处理向前映射和向后映射
- matlab用ADMM算法解决Group Lasso问题
- MATLAB希尔伯特Hilbert变换求包络谱
- matlab的CT图像重建代码
- k-means聚类matlab代码
- MATLAB16进制转换为2进制
- 高斯差分滤波器 matlab
- 经典功率谱估计和现代谱估计方法
- matlab均值滤波函数
- GPS位置解算MATLAB仿真
- 最终改进版的matlab程序,改正角度和
- 彭曼公式计算作物潜在蒸散量ET0matl
- WVD和stft的matlab程序
- 三种图像增强算法的matlab源代码
- 四元数MATLAB相关计算
- 美式期权执行边界的matlab实现
- 用MATLAB(BPSK仿真+直接扩频
- AR过程功率谱估计MATLAB实现代码带备注
- MPSK信号基于高阶循环谱估计载波频率
- 矩形波导模式以及光纤LP模式的matla
- Matlab将二维图像三维重构
- matlab3次样条插值函数实现
- 已知二维联合概率密度matlab求解
- matlab求二维概率密度二维概率分布
- 用lms实现均衡matlab
- APFFT全相位MATLAB编程
评论
共有 条评论