c9l2.m
来自「这是本战略战术导弹制导的书中的matlab程序,比书中的 forchan程序简单」· M 代码 · 共 120 行
M
120 行
count=0;
VC=4000.;
XNT=96.6;
YIC=0.;
VM=3000.;
HEDEG=0.;
HEDEGFIL=20.;
XNP=3.;
SIGRIN=.001;
TS=.1;
APN=0.;
TF=10.;
Y=YIC;
YD=-VM*HEDEG/57.3;
YDIC=YD;
TS2=TS*TS;
TS3=TS2*TS;
TS4=TS3*TS;
TS5=TS4*TS;
PHIN=XNT*XNT/TF;
RTM=VC*TF;
SIGNOISE=SIGRIN;
SIGPOS=RTM*SIGNOISE;
SIGN2=SIGPOS^2;
P11=SIGN2;
P12=0.;
P13=0.;
P22=(VM*HEDEGFIL/57.3)^2;
P23=0.;
P33=XNT*XNT;
T=0.;
H=.01;
S=0.;
YH=0.;
YDH=0.;
XNTH=0.;
XNC=0.;
while T <= (TF - 1e-5)
YOLD=Y;
YDOLD=YD;
STEP=1;
FLAG=0;
while STEP <=1
if FLAG==1
Y=Y+H*YD;
YD=YD+H*YDD;
T=T+H;
STEP=2;
end
TGO=TF-T+.00001;
RTM=VC*TGO;
XLAM=Y/(VC*TGO);
XLAMD=(RTM*YD+Y*VC)/(RTM^2);
YDD=XNT-XNC;
FLAG=1;
end
FLAG=0;
Y=.5*(YOLD+Y+H*YD);
YD=.5*(YDOLD+YD+H*YDD);
S=S+H;
if S>=(TS - 1e-5)
S=0.;
TGO=TF-T+.000001;
RTM=VC*TGO;
SIGNOISE=SIGRIN;
SIGPOS=RTM*SIGNOISE;
SIGN2=SIGPOS^2;
M11=P11+TS*P12+.5*TS2*P13+TS*(P12+TS*P22+.5*TS2*P23);
M11=M11+.5*TS2*(P13+TS*P23+.5*TS2*P33)+TS5*PHIN/20.;
M12=P12+TS*P22+.5*TS2*P23+TS*(P13+TS*P23+.5*TS2*P33)+TS4*PHIN/8.;
M13=P13+TS*P23+.5*TS2*P33+PHIN*TS3/6.;
M22=P22+TS*P23+TS*(P23+TS*P33)+PHIN*TS3/3.;
M23=P23+TS*P33+.5*TS2*PHIN;
M33=P33+PHIN*TS;
K1=M11/(M11+SIGN2);
K2=M12/(M11+SIGN2);
K3=M13/(M11+SIGN2);
P11=(1.-K1)*M11;
P12=(1.-K1)*M12;
P13=(1.-K1)*M13;
P22=-K2*M12+M22;
P23=-K2*M13+M23;
P33=-K3*M13+M33;
XLAMNOISE=gaussc7(SIGNOISE);
YSTAR=RTM*(XLAM+XLAMNOISE);
RES=YSTAR-YH-TS*YDH-.5*TS*TS*(XNTH-XNC);
YH=K1*RES+YH+TS*YDH+.5*TS*TS*(XNTH-XNC);
YDH=K2*RES+YDH+TS*(XNTH-XNC);
XNTH=K3*RES+XNTH;
XLAMDH=(YH+YDH*TGO)/(VC*TGO*TGO);
XNC=XNP*VC*XLAMDH+APN*.5*XNP*XNTH;
ERRNT=XNT-XNTH;
SP33=sqrt(P33);
SP33P=-SP33;
count=count+1;
ArrayT(count)=T;
ArrayXNTG(count)=XNT/32.2;
ArrayXNTHG(count)=XNTH/32.2;
ArrayERRNTG(count)=ERRNT/32.2;
ArraySP33G(count)=SP33/32.2;
ArraySP33PG(count)=SP33P/32.2;
ArrayY(count)=Y;
ArrayXNCG(count)=XNC/32.2;
end
end
figure
plot(ArrayT,ArrayXNTG,ArrayT,ArrayXNTHG),grid
xlabel('Time (S)')
ylabel('Acceleration (G) ')
figure
plot(ArrayT,ArrayERRNTG,ArrayT,ArraySP33G,ArrayT,ArraySP33PG),grid
xlabel('Time (S)')
ylabel('Error in Acceleration (G) ')
clc
output=[ArrayT',ArrayY',ArrayXNCG',ArrayXNTG',ArrayXNTHG',ArrayERRNTG',ArraySP33G',ArraySP33PG'];
save datfil.txt output /ascii
disp 'simulation finished'
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?