MATLAB仿真.docx
《MATLAB仿真.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真.docx(10页珍藏版)》请在冰豆网上搜索。
![MATLAB仿真.docx](https://file1.bdocx.com/fileroot1/2022-11/24/502ed661-8450-49df-9f47-8e2c731e6e31/502ed661-8450-49df-9f47-8e2c731e6e311.gif)
MATLAB仿真
《系统仿真与matlab》综合试题
题目:
射击问题系统的仿真
编号:
22
难度系数:
★★★★
一、问题重述:
已知直瞄武器可对任意距离上的任意形状目标进行射击,运用计算机仿真方法求
出不同距离上对目标的命中概率。
假设射弹对靶心的偏差由两部分组成
(1)武器的瞄准偏差。
其与距离的关系可用下式表示
方向综合误差的公算偏差
高低综合误差的公算偏差
其中,
、
为方向和高低上的系数常数,为输入数据;
、
为方向和高低上的指数系数常数,为输入数据;
为射距。
一般均假设水平和高低方向的误差服从以目标中心的正态分布且相互独立;
(2)武器的射弹散布偏差。
其在高低和方向上基本服从正态分布且互相独立,
方向上的散布公算偏差
高低上的散布公算偏差
其中:
、
分别为方向上的系数、指数常数,
、
分别为高低上的系数、指数常数,
为射击距离。
(3)假设靶子为坦克的侧面,其形状如图所示:
二、系统建模:
(1)模型分析
首先,对实验的题目进行分析,可以将射击问题假想为只有2个误差因素的问题,所以将射击的过程可以理解为以下整个过程:
1.在瞄准的过程中产生了瞄准误差,瞄准误差在方向上和高度上分为方向综合误差的公算偏差和高低综合误差的公算偏差。
这两个因素服从正态分布且相互独立。
2.而炮弹在发射过程中产生炮弹散布偏差导致弹着点或炸点分散。
炮弹散布误差在方向上和高度上分为方向上的散布公算偏差和高低上的散布公算偏差。
3.由1、2亮点可以得出,误差的主要来源就是以上2大类误差,即分别为瞄准时和发射后的方向与高度上的双重误差的影响,将决定最后的炮弹能否准确击中目标。
需要特别强调的是两者均符合正太分布,且相互独立,互不影响。
(2)模型建立
由以上分析可以知道
、
、
、
、
、
、
、
均应为可输入值,所以在设计仿真系统时将这8个变量均设为输入变量,另外设计坐标点(x,y)也应该由仿真这决定,设计距离为设定值,所以,以上3个变量在实验仿真时也均设为输入值变量,为了仿真者方便,
、
、
、
、
、
、
、
这8个变量的默认值均设为0.01,而瞄准点坐标的默认值设为(0,0);射击距离的默认值为100.
仿真系统建立的过程中,可以由已知的公式作出以下公式的计算:
其中X为射击距离,默认值为100,实验仿真过程中,将自动模拟设计500个炮弹,通过产生正态分布的随机数,然后判断炮弹是否击中坦克的正面或者坦克的侧面(仿真时分2个攻击方向仿真,可以仿真攻击坦克侧面和正面的炮弹命中率),最后还会给出误差曲线的分析图。
(3)模型总结
本次系统仿真充分运用了对正态分布函数与图形的理解,并以计算的偏差定值为偏差的期望值,再设定一个方差确定分散度就可以取随机点(设定为0.5)。
可以随意改变任意变量来进行仿真(要在变量范围内),并依据设定值仿真出500个炮弹的命中率。
三.系统实现的关键难点
(1)仿真关键要点
A.正态分布的确定,即均值与方差的确定;
B.符合已经确定的正态分布的随机数产生;
C.分析和计算仿真图形内部的点的数量,即计算炮弹的命中率;
D.输出图形和误差分布函数。
(2)实验难点分析
在分析题目的要求以及进行程序设计的过程中发现了一些比较攻克的难点:
A.如何确定在方向上以及高度上正态分布的期望值以及方差;
B.如何改变瞄准点坐标;
C.如何确定在船只范围内的随机点,并计算命中率;
D.几个GUI界面之间如何共享数据,即如何在一个GUI界面里利用另一个GUI界面里的数据;
E.几个界面之间的跳转;
F.在不断产生随机数的过程中,如何使前面的射击点保存,而当一轮射击点结束后,如果要进行新一轮的射击时,如何消除之前的射击点;
(3)难点解决方法
在实验仿真的过程中,经过与同学的不断讨论与网上的一些资料,可以找到难点的解决方法如下:
1.由于方向上以及高度上的误差是由
四个量产生的,并且在距离X给定后,这四个量就已经确定,所以横向和纵向的期望值就由上述四个量来确定(其中,横向期望值为
相加,纵向期望值为
),而方差值反映了分布的密集程度,该值由自己给定,所以我将该值定为了0.5,截图如下:
2.实验过程中炮弹的落点可以由设计坐标点加上实际偏差的坐标就可以得到炮弹落点,截图如下:
3.关于确定炮弹是否落在攻击目标上,可以用判断落点坐标是否是在封闭图形内,具体判断句如下:
分析正面落点数
分析侧面落点数
4.页面直接的跳转可以由open和close函数完成,即在打开下一个界面的过程时需要同时关闭当前界面,即open(下一个界面);close(当前界面)。
这样既可完美地解决跳转页面的问题。
5.最后就是仿真图形的显示问题,由于在坐标中绘图时,第二次作图时就会清空前面的图形,所以,就要用holdon语句来保持图形,并在单次仿真完后在函数末写上holdoff语句,避免影响第二次的仿真。
6.至于其它数值获取功能以及功能切换等功能,可以根据gui的基本知识完成,不再作介绍。
四、程序运行指南
系统流程图
五、程序运行实例分析
1.首先登陆界面
(该图片删除)
2.然后进入系统介绍界面
次数可以点击系统简介进入系统介绍,具体界面如下:
(关系个人隐私,已删除)
3.仿真界面
将坐标给位(0,0.7),其余均采用默认值,(假设坦克为长12米,宽3米,高2.2米)得出实验仿真结果如下:
攻击坦克正面
攻击坦克正面
4.命中率结果输出
点击命中率,可以分别得到命中率如下:
5.误差曲线分析
6.退出
最后点击退出,即退出整个系统。
六、总结
通过这次Matlab的系统仿真设计,使我加深了对系统仿真的认识,熟悉了Matlab的基本操作,更加掌握了Matlab语言的变成规范与方法。
设计开始阶段,我还是什么都不懂,然后通过查阅资料,借阅图书,上网搜索,我了解了很多关于排队论的知识,然后通过数学方法建立模拟,把一个实际的问题抽象化。
接下来又开始学习Matlab的使用,了解Matlab的编程方法,然后就是辛苦的调试。
在这个过程中,我遇到了很多困难,但是在自己的努力下,都克服了,最终完成了任务,虽然还有很多不足,但是这个过程让我提高了很多,我会继续改进的。
感谢老师一学期以来的辛苦教导,您辛苦了!