kkkttt 发表于 2010-10-10 22:43

用比例制导律拦截弹道导弹的仿真程序

本帖最后由 kkkttt 于 2010-10-10 22:45 编辑

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% PNGE.m

% Proportional Navigation Guidance Emluator

% 导弹拦截的比例制导仿真程序

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function =PNGE(MT,MTSD,ILP,ILD,IV,IAL,S)

%用比例导引律仿真拦截器拦截来袭导弹的时间步长模拟算法

% ChengAihua,PLA Information Engineering University,ZhengZhou,China

% Email:aihuacheng@gmail.com

% All rights reserved

%比例导引律:拦截器速度向量的偏转角速度(法向过载)与目标视线的旋转角速度成正比

%输入参数列表

% MT Missile Track 来袭弹道导弹运动轨迹(N×3矩阵)

% MTSD Missile Track's Sample Disdance 导弹轨迹采样时间间隔,兼仿真时间步长

% ILP Interceptor's Launch Position 拦截器发射地点(1×3矩阵)

% ILD Interceptor's Launch Direction 拦截器发射方向归一化向量(1×3矩阵)

% IV Interceptor's Velocity 拦截器飞行速率

% IAL Interceptor's Acceleration Limit 拦截器(角)加速度上限

% S Scale 比例导引律中的比例系数

%输出参数列表

% IT Interceptor's Track 拦截器的运行轨迹

% MD Miss Disdance 脱靶量

% PT Pursuit Time 追踪时间

% 程序还将绘出拦截器拦截导弹的空间轨迹曲线·

%第一步:初始化

XYZ1=MT(1,:);

xyz1=ILP;

XYZ2=MT(2,:);

v1=ILD;

counter=2

IT=zeros(0,3);

IT=;

L1=xyz1-XYZ1;

LL1=L1.^2;

L1=L1./sqrt(sum(LL1));

L2=xyz1-XYZ2;

LL2=L2.^2;

L2=L2./sqrt(sum(LL2));

v2=v1+S.*(L1-L2);

IA=(IV/MTSD).*(v2-v1);

IA=sqrt(sum(IA.^2));

if IA>IAL

k=IAL/IA;

v2=v1+(k*S).*(L1-L2);

end

vv2=v2.^2;

v2=v2./sqrt(sum(vv2));

xyz2=xyz1+(MTSD*IV).*v2;

IT=;

XYZ1=MT(2,:);

XYZ2=MT(3,:);

xyz1=xyz2;

%下面是迭代过程

while 1

%第二步:计算视线方向向量

L1=xyz1-XYZ1;

LL1=L1.^2;

L1=L1./sqrt(sum(LL1));

L2=xyz1-XYZ2;

LL2=L2.^2;

L2=L2./sqrt(sum(LL2));

%第三步:利用比例引导律计算v2

v2=v1+S.*(L1-L2);

%第四步:计算拦截器需要的偏转加速度

IA=(IV/MTSD).*(v2-v1);

IA=sqrt(sum(IA.^2));

%第五步:如果需要的加速度超过拦截器加速度上限,则修正v2向量

if IA>IAL

k=IAL/IA;

v2=v1+(k*S).*(L1-L2);

end

%第六步:计算xyz2

vv2=v2.^2;

v2=v2./sqrt(sum(vv2));%对v2做归一化处理

xyz2=xyz1+(MTSD*IV).*v2;

%第六步:记录和更新

IT=;

counter=counter+1;

XYZ1=MT(counter,:);

XYZ2=MT(counter+1,:);

xyz1=xyz2;

if IT(counter,3)>MT(counter,3)||IT(counter,3)>MT(counter-1,3)||IT(counter,3)>MT(counter-2,3)

Len=size(IT,1);

P1=IT(Len-1,:);

P2=IT(Len,:);

Q1=MT(Len,:);

Q2=MT(Len+1,:);

x1=P1(1);y1=P1(2);z1=P1(3);

x2=Q1(1);y2=Q1(2);z2=Q1(3);

l1=P1(1)-P2(1);m1=P1(2)-P2(2);n1=P1(3)-P2(3);

l2=Q1(1)-Q2(1);m2=Q1(2)-Q2(2);n2=Q1(3)-Q2(3);

A=;

B=;

C=;

M=;

MD=det(M)/(sqrt((det(A))^2+(det(B))^2+(det(C))^2));

PT=(Len-1)*MTS*;

%绘出导弹和拦截器的轨迹图

%**p=1:10:971

%plot3(MT(ppp,1),MT(ppp,2),MT(ppp,3),'ro-')

plot3(MT(:,1),MT(:,2),MT(:,3),'r.-')

grid on

hold on

%qqq=1:10:351

%plot3(IT(qqq,1),IT(qqq,2),IT(qqq,3),'bo-')

plot3(IT(:,1),IT(:,2),IT(:,3),'b-')

return

end

end
程序作者:aiwa
Email:cheng_aihua@163.com
Q Q:330264704
MSN:aihuacheng@hotmail.com
Google Talk:aihuacheng@gmail.com
版权归原作者所有

chenguole 发表于 2011-4-2 21:10

看看谢谢 看看谢谢大家我好好学习啊

牛小贱 发表于 2013-12-9 23:57

{:{39}:}

牛小贱 发表于 2013-12-9 23:58

楼主能提供给我一些导弹的其他资料吗?nickycqu@163.com 我的邮箱 谢谢了{:{29}:}
页: [1]
查看完整版本: 用比例制导律拦截弹道导弹的仿真程序