带落角约束(变结构和比例)源代码

1、变结构制导律和比例导引均集成在同一个程序中,其表达式分别见daoyin.m第48行和53行;如果不需要某个导引律,请将其注释(前面加“%”)。
2、比例导引和变结构导引结果图可以画在同一幅图中(每运行完一种导引律后,不要关闭图,继续运行下一种导引律)。
clear
clc

%-----------导弹参数---------
V_m=300;
X_m=0;
Y_m=3000;
theta_m=0*pi/180;

%----------目标参数---------
V_t=0; %静止目标
X_t=3000;
Y_t=0;
theta_t=0;
dtheta_t=0;
n_t=0;
A_t=0;

%变结构制导律参数设置
k=1;
delta=0.01;
epu=.9;
lam=1.5;

%比例导引律参数设置
N1=20; %纵向通道导引系数

R=sqrt((X_m-X_t)^2+(Y_m-Y_t)^2);
q=atan((Y_t-Y_m)/(X_t-X_m));
dR=((X_m-X_t)*(V_m*cos(theta_m)-V_t*cos(theta_t))+(Y_m-Y_t)*(V_m*sin(theta_m)-V_t*sin(theta_t)))/sqrt((X_m-X_t)^2+(Y_m-Y_t)^2);
dq=((X_t-X_m)*(V_t*sin(theta_t)-V_m*sin(theta_m))-(Y_t-Y_m)*(V_t*cos(theta_t)-V_m*cos(theta_m)))/((X_m-X_t)^2+(Y_m-Y_t)^2);

n_m=-q+theta_m;

n=1;
t=0;
dt=0.01;
g=9.8;
hit_angle=-90*pi/180;  %期望命中角度

while (dR<0)
    %--------变结构导引律
    %见论文《一种变结构垂直俯冲攻击制导律》
    x1=q-hit_angle;
    x2=dq;
    S=x2+lam*V_m*x1/R;
    fun=S/(abs(S)+delta);
    %Am=(-k*abs(dR)*S-epu*S/(abs(S)+delta)+2*dR*x2-cos(q-theta_t)*A_t-lam*V_m*x2+lam*V_m*x1*dR/R)/(-cos(q-theta_m));  %改进的变结构导引律
    
%-----------Zarchan弹道成型比例导引律
%见论文《几种增大空地导弹落角的制导方式比较》1.2节
    t_go=R/abs(dR);
    Am=10*dq*abs(dR)+10*abs(dR)*(q-hit_angle)/t_go+g*cos(theta_m); %Zarchan弹道成型比例导引律
        

    %----------------------------计算坐标---------------------------  
    dtheta_m=Am/V_m; 
    theta_m=theta_m+dtheta_m*dt;
    X_m=X_m+V_m*cos(theta_m)*dt;
    Y_m=Y_m+V_m*sin(theta_m)*dt;
    

    n_m=-q+theta_m; 
    R=sqrt((X_m-X_t)^2+(Y_m-Y_t)^2);
    q=atan((Y_t-Y_m)/(X_t-X_m));
    dR=((X_m-X_t)*(V_m*cos(theta_m)-V_t*cos(theta_t))+(Y_m-Y_t)*(V_m*sin(theta_m)-V_t*sin(theta_t)))/sqrt((X_m-X_t)^2+(Y_m-Y_t)^2);
    dq=((X_t-X_m)*(V_t*sin(theta_t)-V_m*sin(theta_m))-(Y_t-Y_m)*(V_t*cos(theta_t)-V_m*cos(theta_m)))/((X_m-X_t)^2+(Y_m-Y_t)^2);
    
    
    theta_m_store(n)=theta_m;  %保存弹道倾角 
    Am_store(n)=Am;   %保存纵向过载
    P_m_store(:,n)=[X_m;Y_m]; %保存拦截弹坐标
    fun_s(n)=fun; %保存线性化函数
    n=n+1;
    t=t+dt;
end
disp('脱靶量为(m):')
R
disp('飞行时间为(s):')
t
disp('落角偏差为(°):')
90+q*180/pi

figure(1)
plot(P_m_store(1,:),P_m_store(2,:),X_t,Y_t,'r+')
hold on
xlabel('X/m')
ylabel('Y/m')
hold on
grid on

figure(2)
plot((1:n-1)*dt,Am_store)
hold on
xlabel('time/s')
ylabel('Acceleration/m^2')
title('加速度')
hold on
grid on

figure(3)
plot((1:n-1)*dt,theta_m_store*180/pi)
hold on
xlabel('time/s')
ylabel('\theta_m/°')
title('弹道倾角')
hold on
grid on

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值