搜索附件  
头雁微网 附件中心 技术应用 情报信息 经典导弹导引算法(图形界面matlab程序).rar
板块导航
附件中心&附件聚合2.0
For Discuz! X3.5 © hgcad.com

经典导弹导引算法(图形界面matlab程序).rar

 

经典导弹导引算法(图形界面matlab程序)----来自网络:

ص





[AppleScript] 纯文本查看 复制代码
函数 varargout = MissileFig(varargin)
% MISSILEFIG M 文件 for MissileFig.fig
% MISSILEFIG 本身会创建一个新的 MISSILEFIG 或提高现有的
% 单例*。
%
% H = MISSILEFIG 将手柄返回给新的 MISSILEFIG,或将手柄返回给
% 现有的单例*。
%
% MISSILEFIG('CALLBACK',hObject,eventData,handles,...) 调用 MISSILEFIG 中名为 CALLBACK 的 local
% 函数。M 与给定的输入参数。
%
% MISSILEFIG('Property','Value',...) 创建一个新的 MISSILEFIG 或提高
现有的单例百分比*。从左侧开始,属性值对在调用 GUI 之前
% 应用于 GUI MissileFig_OpeningFunction。
无法识别的属性名称或无效值使属性应用程序
% 停止。所有输入都通过varargin传递给MissileFig_OpeningFcn。
%
% *请参阅 GUIDE 的“工具”菜单上的 GUI 选项。选择“GUI 仅允许运行一个
实例(单例)”。
%
% 另请参阅: GUIDE, GUIDATA, GUIHANDLES

% 版权所有 2002-2003 The MathWorks, Inc.% 编辑上面的文本以修改响应以帮助 导弹

% 最后由 GUIDE v2.5

修改 2007 年 8 月 2 日 10:26:23

% 开始初始化代码 - 不要编辑
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
“gui_Singleton”,gui_Singleton,...
“gui_OpeningFcn”,@MissileFig_OpeningFcn,...
“gui_OutputFcn”,@MissileFig_OutputFcn,...
“gui_LayoutFcn”, [] , ...
“gui_Callback”, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout [varargout{1:nargout
}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
结束
% 结束初始化代码 - 请勿编辑


% --- 在 MissileFig 可见之前执行。
函数 MissileFig_OpeningFcn(hObject, eventdata, handles, varargin)
% 此函数没有输出参数,请参阅 OutputFcn。
% hObject 句柄到数字
% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的处理结构(参见 GUIDATA)% MissileFig 的 varargin 命令行参数(参见 VARARGIN)


% 为 MissileFig
句柄选择默认命令行输出。output = hObject;

% 更新句柄结构
guidata(hObject, 句柄);

initialize_gui(hObject, handles, false);
% UIWAIT 使 MissileFig 等待用户响应(参见 UIRESUME)
% uiwait(handles.figure1);


% --- 此函数的输出将返回到命令行。
函数 varargout = MissileFig_OutputFcn(hObject, eventdata, handles)
% varargout 单元格数组,用于返回输出参数(参见 VARARGOUT);
% hObject 句柄到数字
% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的句柄结构(请参阅 GUIDATA)

% 从句柄结构
varargout 获取默认命令行输出{1} = handles.output;


% --- 在“计算”中按下按钮时执行。
function Calculate_Callback(hObject, eventdata, handles)
% hObject handle to Calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%¨¨¨ì
%比例导引法拦截目标
%最简单情况:
%目标和拦截导弹在同一平面内,拦截导弹做机动运动,目标做匀速直线运动
%--------------------------------------------------------------------------
%----------------------参数说明---------------------------------------------
%Vt-目标速度大小,Vt=400 m/s;
%Bt-目标速度与水平参考线夹角,为一常量,Bt= 20度=pi/9 弧度;----------
%Vm-拦截弹速度大小,Vm= 800 m/s;
%Am-拦截弹速度与水平参考线夹角,不断变化,初始值Am=0度=0 弧度;
%q-拦截弹与目标之间的连线与水平参考线之间的夹角,变量,初始值q = 0度=0 弧度;
%R-拦截弹与目标的视线距离,初始值R =10 Km=10,000 m;
%dR=Vt*cos(Bt-q)-Vm*cos(Am-q)-对R求导表达式;
%dq=Vt*sin(Bt-q)-Vm*sin(Am-q)-对q求导表达式;
%导引律:dAm=Const*abs(dR)*dq/Vm,其中Const为常量,取值范围3-5,此处取4;
%Ac=Vm*dAm=Const*abs(dR)*dq-拦截弹法向加速度大小;%Rmin-脱靶量;%--------------------------------------------------------------------------
%------------------------------源代码--------------------------------------
clc
Vt= handles.metricdata.Vt;


Bt= handles.metricdata.Bt;
Vm= handles.metricdata.Vm;
Am= handles.metricdata.Am;
R = sqrt(handles.metricdata.X^2+handles.metricdata.Y^2);
Con=handles.metricdata.Const;
Rmin=0;
%下面计算视线角q,必须考虑目标坐标正负
if(handles.metricdata.X>=0)
q = atan(handles.metricdata.Y/handles.metricdata.X);
else
q=pi+atan(handles.metricdata.Y/handles.metricdata.X);
end

%初始化目标和拦截弹的坐标,用来显示运动轨迹
K=20000;
Xm=零(K,1);
Ym=零(K,1);
Xt=零(K,1);
Yt=零(K,1);
Xt(1,1)=handles.metricdata.X;
Yt(1,1)=handles.metricdata.Y;
交流=零(K,1);%存放法向加速度值
D=zeros(K,1);%存放拦截弹和目标间的距离

i=1;
T=handles.metricdata.T;%时间步长

dR=Vt*cos(Bt-q)-Vm*cos(Am-q);
while(R>0) dq=(Vt*sin(Bt-q)-Vm*sin(Am-q)
)/R;
dAm=Con*dq;
%dAm=Con*abs(dR)*dq/Vm;--------此式不能拦截某些方向上的目标

%计算脱靶量
if((dR>=0 |(dR<0 && abs(dR)<1e-10))&& abs(dAm)<=1e-10 && Xt(i,1)>Xm(i,1))
Rmin=R;
破;
end

Ac(i,1)=dAm*Vm;%计算法向加速度

%计算并储存新坐标
D(i,1)=R;
i=i+1;
Xm(i,1)=Xm(i-1,1)+Vm*cos(Am)*T;
Ym(i,1)=Ym(i-1,1)+Vm*sin(Am)*T;
Xt(i,1)=Xt(i-1,1)+Vt*cos(Bt)*T;
Yt(i,1)=Yt(i-1,1)+Vt*sin(Bt)*T;

q=q+dq*T;
Am=Am+dAm*T;
R=R+dR*T;
dR=Vt*cos(Bt-q)-Vm*cos(Am-q);
结束
%-------------------------输出结果------------------------------------------
if(Rmin==0)
disp('拦截所需时间:');
i*T

图(2) 图(Xt(1:i-1),Yt(1:i-1),'红色')

坚持;
plot(Xm(1:i-1),Ym(1:i-1)) title('拦截弹和目标的运动轨迹') xlabel('水平坐标(单位:m)

');
ylabel('垂直坐标(单位:m)');
legend('目标运动轨迹','拦截弹运动轨迹');
网格打开;
推迟;

图(3)
t=1:i-1;
plot(t*T,Ac(1:i-1,1)) title('拦截弹法向加速度的大小变化') xlabel('时间(单位:S)') ylabel('加速度值(单位:m/s^2)')



grid on;
else
disp('拦截失败!');
end

disp('脱靶量(单位:米):');
Rmin

t=1:i-1;
图(4)图(t*T,D(1:i-1,1)
);
title('拦截弹和目标之间距离')xlabel('时间(单位:S)')ylabel('距离(单位:m)')





function X_Callback(hObject, eventdata, handles)% hObject 句柄到 X (参见 GCBO)% eventdata 保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的结构(参见 GUIDATA)



% 提示: get(hObject,'String') 以文本
形式返回 X 的内容% str2double(get(hObject,'String')) 返回 X 的内容作为双精度
X = str2double(get(hObject, 'String'));
handles.metricdata.X = X;
guidata(hObject,handles)


% --- 在对象创建期间设置所有属性后执行。
函数 X_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 X (参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到毕竟 CreateFcns 调用%

提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



函数 Y_Callback(hObject, eventdata, handles)% hObject 句柄到 Y (参见 GCBO)% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的句柄结构(参见 GUIDATA)% 提示: get(hObject,'String')



以文本
形式返回 Y 的内容% str2double(get(hObject,'String')) 返回 Y 的内容作为双精度
Y = str2double(get(hObject, 'String'));
handles.metricdata.Y = Y;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 Y_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 Y(参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到所有 CreateFcns 调用

% 之后才创建 提示:编辑控件通常在 Windows 上具有白色背景.
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



函数 Bt_Callback(hObject, eventdata, handles)% hObject 句柄到 Bt (参见 GCBO)% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄结构与句柄和用户数据(参见 GUIDATA)% 提示: get(hObject,'String')



以文本
形式返回 Bt 的内容% str2double(get(hObject,'String')) 返回 Bt 的内容作为双精度
X = str2double(get(hObject, 'String'));
handles.metricdata.Bt = X*pi/180;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 Bt_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 Bt (参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到所有 CreateFcns 调用

% 之后才创建 提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



函数 Am_Callback(hObject, eventdata, handles)% hObject 句柄到 Am (参见 GCBO)% eventdata 保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的句柄结构(参见 GUIDATA)% 提示: get(hObject,'String')



以文本
形式返回 Am 的内容% str2double(get(hObject,'String')) 返回 Am 的内容作为双精度
X = str2double(get(hObject, 'String'));
handles.metricdata.Am = X*pi/180;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 Am_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 Am (参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到所有 CreateFcns 调用

后才创建 % 提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
结束



函数 Vm_Callback(hObject, eventdata, handles)% hObject 句柄到 Vm (参见 GCBO)% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的句柄结构(参见 GUIDATA)% 提示: get(hObject,'String')



以文本
形式返回 Vm 的内容% str2double(get(hObject,'String')) 将 Vm 的内容作为双精度
返回 X = str2double(get(hObject, 'String'));
handles.metricdata.Vm = X;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 Vm_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 Vm (参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到所有 CreateFcns 调用

% 之后才创建 提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
结束



函数 Vt_Callback(hObject, eventdata, handles)% hObject 句柄到 Vt (参见 GCBO)% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的结构(参见 GUIDATA)% 提示: get(hObject,'String')



以文本
形式返回 Vt 的内容% str2double(get(hObject,'String')) 将 Vt 的内容作为双精度
返回 X = str2double(get(hObject, 'String'));
handles.metricdata.Vt = X;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 Vt_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 Vt (参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到所有 CreateFcns 调用%

之后才创建 提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end


% --- 在重置中按下按钮时执行。
函数 Reset_Callback(hObject, eventdata, handles)% hObject 句柄重置 (参见 GCBO)% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的结构(参见 GUIDATA)


initialize_gui(gcbf, 句柄, true);


函数 Const_Callback(hObject, eventdata, handles)% hObject handle to Const(参见 GCBO)% eventdata 保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的句柄结构(参见 GUIDATA)% 提示: get(hObject,'String') 以文本
形式返回 Const 的内容% str2double(get(hObject,'String'))



将 Const 的内容作为双精度
X = str2double(get(hObject, 'String'));
handles.metricdata.const = X;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 Const_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 Const(参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到之后才创建所有 CreateFcns 都调用%

提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end




% --------------------------------------------------------------------
函数initialize_gui(fig_handle、句柄、重置)% 如果 metricdata 字段存在并且重置标志为 false,则表示
% 我们只是通过在 cmd 行% 启动时从 cmd 行

% 调用它来重新初始化 GUI。因此,请纾困,因为我们不想重置数据。
如果 isfield(句柄,'metricdata') && ~isreset
返回;
结束

句柄.度量数据.Vm = 800;
handles.metricdata.Am = 0;
handles.metricdata.Vt = 400;
handles.metricdata.Bt = 20;
handles.metricdata.const = 4;
handles.metricdata.X = 10000;
handles.metricdata.Y = 0;
handles.metricdata.T = 0.1;

设置(手柄。Vm, 'String', handles.metricdata.Vm);
设置(手柄。我,“字符串”,handles.metricdata.Am);
设置(手柄。Vt, 'String', handles.metricdata.Vt);
设置(手柄。Bt, 'String', handles.metricdata.Bt);
设置(手柄。Const, 'String', handles.metricdata.Const);
设置(手柄。X, 'String', handles.metricdata.X);
设置(手柄。Y, 'String', handles.metricdata.Y);
设置(手柄。T, 'String', handles.metricdata.T);

i=imread('D:\MATLAB7\work\gui.bmp');
轴(句柄.轴2);
显示(i);
% 更新句柄结构
guidata(句柄.Figure 1, 句柄);



函数 T_Callback(hObject, eventdata, handles)% hObject 句柄到 T (参见 GCBO)% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 带有句柄和用户数据的句柄结构(参见 GUIDATA)% 提示: get(hObject,'String') 以文本
形式返回 T 的内容% str2double(get(hObject,'String'))



返回 T 的内容作为双精度
X = str2double(get(hObject, 'String'));
handles.metricdata.T = X;
guidata(hObject,handles)

% --- 在对象创建期间设置所有属性后执行。
函数 T_CreateFcn(hObject, eventdata, handles)% hObject 句柄到 T(参见 GCBO)

% 事件数据保留 - 将在 MATLAB
% 的未来版本中定义 句柄空 - 句柄直到所有 CreateFcns 调用

% 之后才创建 提示:编辑控件在 Windows 上通常具有白色背景。
% 参见 ISPC 和计算机。
如果 ispc
设置(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
结束


这种算法怎么样啊
谢谢分享,看看是怎么回事
牛啊!膜拜一下!
看看 谢谢楼主分享
回头看看!
谢谢分享!
这是一种什么样的算法呢?
本帖最后由 warcraft 于 2012-4-24 20:57 编辑

楼主,这种导弹导引算法程序是否属于涉密文件??
Princeples of Terahertz Science and Technology
谢谢您的分享了啊。
这个太霸气了!!
看看此书,值得一看。
b\不错啊 谢谢啊 呵呵
kankan 看看是啥子好东西
好东西,一定要看一看!!
多谢喽!!
好东西,看看
谢谢,学习学习 经典导弹导引算法
thanks!!!!!!!!!!!!!!!
{:7_1234:}{:7_1234:}
非常感谢!!
学习一下
支持!
:16bb:16bb:48bb
学些学学
看看先    谢谢楼主   {:soso_e100:}
这个还真是不太清楚。
thanks!最近想研究一下,谢谢lz
谢谢分享  导引律关注的不多 学习学习
学习学习,谢谢分享
看看????
是什么东东啊?
呵呵呵呵呵呵呵呵呵呵
看看什么东西。
了解了解
谢谢分享{:1_1369:}{:1_1355:}
学习啦!
很不错的资料谢谢
原创?准确性需要确认
好东西,看看
绝世好文
呵呵呵 支持一下
不错不错
谢谢楼主,最近刚想做一个GUI界面,这是很好的参考资料!
学习了,谢谢分享。
dsafasdfadsfasdfadsfadsfas
好东东
经典导弹导引算法(图形界面matlab程序)----来自网络
louzhuhaoren
供销快克6602烟雾净化器,烟尘高效过滤器举报     <上一件下一件> region-detail-gallery
相当不错谢谢分享
非常感谢版主!
值得看一看
谢谢您的分享
经典导弹导引算法
感谢分享,谢谢
谢谢分享~
好东西 看看呢
好东西,谢谢分享!!!
学习一下
谢谢              
好像步錯!下來看看!
gooooooooood  thx  alot
热天刚去过和后台还挺坏
dddddddddddddddddd
谢谢分享
学习学习
这个有意思
客服中心 搜索
关于我们
关于我们
关注我们
联系我们
帮助中心
资讯中心
企业生态
社区论坛
服务支持
资源下载
售后服务
推广服务
关注我们
官方微博
官方空间
官方微信
返回顶部