PNGE.m
上传用户:wuzheanyan
上传日期:2022-06-18
资源大小:3k
文件大小:3k
源码类别:

电子书籍

开发平台:

Visual C++

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  2. % PNGE.m 
  3. % Proportional Navigation Guidance Emluator 
  4. % 导弹拦截的比例制导仿真程序 
  5. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  6. function [IT,MD,PT]=PNGE(MT,MTSD,ILP,ILD,IV,IAL,S) 
  7. %用比例导引律仿真拦截器拦截来袭导弹的时间步长模拟算法 
  8. % ChengAihua,PLA Information Engineering University,ZhengZhou,China 
  9. % Email:aihuacheng@gmail.com 
  10. % All rights reserved 
  11. %比例导引律:拦截器速度向量的偏转角速度(法向过载)与目标视线的旋转角速度成正比 
  12. %输入参数列表 
  13. % MT Missile Track 来袭弹道导弹运动轨迹(N×3矩阵) 
  14. % MTSD Missile Track's Sample Disdance 导弹轨迹采样时间间隔,兼仿真时间步长 
  15. % ILP Interceptor's Launch Position 拦截器发射地点(1×3矩阵) 
  16. % ILD Interceptor's Launch Direction 拦截器发射方向归一化向量(1×3矩阵) 
  17. % IV Interceptor's Velocity 拦截器飞行速率 
  18. % IAL Interceptor's Acceleration Limit 拦截器(角)加速度上限 
  19. % S Scale 比例导引律中的比例系数 
  20. %输出参数列表 
  21. % IT Interceptor's Track 拦截器的运行轨迹 
  22. % MD Miss Disdance 脱靶量 
  23. % PT Pursuit Time 追踪时间 
  24. % 程序还将绘出拦截器拦截导弹的空间轨迹曲线 
  25.  
  26. %第一步:初始化 
  27. XYZ1=MT(1,:); 
  28. xyz1=ILP; 
  29. XYZ2=MT(2,:); 
  30. v1=ILD; 
  31. counter=2 
  32. IT=zeros(0,3); 
  33. IT=[IT;xyz1]; 
  34. L1=xyz1-XYZ1; 
  35. LL1=L1.^2; 
  36. L1=L1./sqrt(sum(LL1)); 
  37. L2=xyz1-XYZ2; 
  38. LL2=L2.^2; 
  39. L2=L2./sqrt(sum(LL2)); 
  40. v2=v1+S.*(L1-L2); 
  41. IA=(IV/MTSD).*(v2-v1); 
  42. IA=sqrt(sum(IA.^2)); 
  43. if IA>IAL 
  44. k=IAL/IA; 
  45. v2=v1+(k*S).*(L1-L2); 
  46. end 
  47. vv2=v2.^2; 
  48. v2=v2./sqrt(sum(vv2)); 
  49. xyz2=xyz1+(MTSD*IV).*v2; 
  50. IT=[IT;xyz2]; 
  51. XYZ1=MT(2,:); 
  52. XYZ2=MT(3,:); 
  53. xyz1=xyz2; 
  54. %下面是迭代过程 
  55. while 1 
  56. %第二步:计算视线方向向量 
  57. L1=xyz1-XYZ1; 
  58. LL1=L1.^2; 
  59. L1=L1./sqrt(sum(LL1)); 
  60. L2=xyz1-XYZ2; 
  61. LL2=L2.^2; 
  62. L2=L2./sqrt(sum(LL2)); 
  63. %第三步:利用比例引导律计算v2 
  64. v2=v1+S.*(L1-L2); 
  65. %第四步:计算拦截器需要的偏转加速度 
  66. IA=(IV/MTSD).*(v2-v1); 
  67. IA=sqrt(sum(IA.^2)); 
  68. %第五步:如果需要的加速度超过拦截器加速度上限,则修正v2向量 
  69. if IA>IAL 
  70. k=IAL/IA; 
  71. v2=v1+(k*S).*(L1-L2); 
  72. end 
  73. %第六步:计算xyz2 
  74. vv2=v2.^2; 
  75. v2=v2./sqrt(sum(vv2));%对v2做归一化处理 
  76. xyz2=xyz1+(MTSD*IV).*v2; 
  77. %第六步:记录和更新 
  78. IT=[IT;xyz2]; 
  79. counter=counter+1; 
  80. XYZ1=MT(counter,:); 
  81. XYZ2=MT(counter+1,:); 
  82. xyz1=xyz2; 
  83. if IT(counter,3)>MT(counter,3)||IT(counter,3)>MT(counter-1,3)||IT(counter,3)>MT(counter-2,3) 
  84. Len=size(IT,1); 
  85. P1=IT(Len-1,:); 
  86. P2=IT(Len,:); 
  87. Q1=MT(Len,:); 
  88. Q2=MT(Len+1,:); 
  89. x1=P1(1);y1=P1(2);z1=P1(3); 
  90. x2=Q1(1);y2=Q1(2);z2=Q1(3); 
  91. l1=P1(1)-P2(1);m1=P1(2)-P2(2);n1=P1(3)-P2(3); 
  92. l2=Q1(1)-Q2(1);m2=Q1(2)-Q2(2);n2=Q1(3)-Q2(3); 
  93. A=[l1,m1;l2,m2]; 
  94. B=[m1,n1;m2,n2]; 
  95. C=[n1,l1;n2,l2]; 
  96. M=[x2-x1,y2-y1,z2-z1;l1,m1,n1;l2,m2,n2]; 
  97. MD=det(M)/(sqrt((det(A))^2+(det(B))^2+(det(C))^2)); 
  98. PT=(Len-1)*MTS*; 
  99. %绘出导弹和拦截器的轨迹图 
  100. %**p=1:10:971 
  101. %plot3(MT(ppp,1),MT(ppp,2),MT(ppp,3),'ro-') 
  102. plot3(MT(:,1),MT(:,2),MT(:,3),'r.-') 
  103. grid on 
  104. hold on 
  105. %qqq=1:10:351 
  106. %plot3(IT(qqq,1),IT(qqq,2),IT(qqq,3),'bo-') 
  107. plot3(IT(:,1),IT(:,2),IT(:,3),'b-') 
  108. return 
  109. end 
  110. end