光学拍的计算机模拟(完整)_第1页
光学拍的计算机模拟(完整)_第2页
光学拍的计算机模拟(完整)_第3页
光学拍的计算机模拟(完整)_第4页
光学拍的计算机模拟(完整)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉理工大学毕业设计(论文)目 录摘 要.IAbstract.II1 绪论.11.1 波的叠加原理综述.11.2 光学实验仿真的国内外研究现状.21.3 MATLAB 用于光学仿真的优势和意义.32 光学拍现象.52.1 光学拍现象的理论知识.52.2 本章小结.83 光学拍的仿真.93.1 仿真实现方案.93.2 光学拍现象的仿真.93.3 本章小结.134 图形用户界面的设计.144.1 图形用户界面的界面设计及其初始化.154.2 图形用户界面的制作.184.3 仿真演示.214.4 本章小结.235 总结.24参考文献.25附 录.26致 谢.33武汉理工大学毕业设计(论文)I摘 要本

2、文主要学习了光学拍理论,并对两列波形成光学拍的条件做了深入细致的分析;然后根据光学拍的数学计算公式,编写了光学拍仿真的 MATLAB 程序代码;最后为了方便用户使用,本文设计了图形用户界面 (包括设计方案、界面控件的布置和控件后台程序代码的添加) ,实现了人机交互。研究结果表明:本文从光学拍的理论知识出发,运用 MATLAB 的强大的矩阵运算功能和图形绘制功能实现了两列振幅相同,角频率相差很小的单色平面波的存储;实现可两列单色平面波叠加后的合成波(光学拍)的仿真和合成波(光学拍)的光强分布;然后根据光学拍现象应用 MATLAB 进行计算机仿真,并且编写出程序代码实现光学拍现象。本文的特色在于:

3、为了让读者方便而直观的学习光学拍,本文将给出光学拍的图形用户界面(GUI)及其的设计方法,包括界面布置的设计和各控件代码的添加。关键词:光学拍; MATLAB; 计算机仿真; 图形用户界面 武汉理工大学毕业设计(论文)IIAbstractThis article has mainly studied the optical beat theory, and has made the thorough careful analysis to the conditions of two series wave emerge optical beat; Then, according to the

4、mathematical computation formula of the optical beat, this article has compiled the MATLAB procedure code of optical beat simulation; Finally, considering for the convenience of the users , this article has designed the graphical user interface (including design proposal, arrangement of the controls

5、 of the interface and compilation of the background code), realized the man-machine interaction.The researching results indicate that: this thesis sets out from the principle of optical beat, then realize the storage of two monochromatic plane wave have same amplitude and little difference angular f

6、requency, the simulation of synthesis of wave(optical beat) of superposition of two monochromatic plane wave and intensity distribution of synthesis of wave(optical beat) by taking advantage of the powerful matrix-calculating function and graphics-describing ability; Then it will use MATLAB to carry

7、 out computer simulation according to phenomenon of optical beat and give out the program code to realize phenomenon of optical beat. The characteristic of this article lies in: to make readers easy and convenient to study the optical beat,the thesis will give out the Graphics User Interface(GUI) of

8、 optical beat, including the interfaces disposal and the additional program code of uicontrols. Key words: optical beat; MATLAB; computer simulation; graphical user interface武汉理工大学毕业设计(论文)11 1 绪论本文主要是进行光学拍的 MATLAB 仿真。光学拍是光的波动特性的一种表现,属于光的干涉特征,但这种干涉现象因受到探测器伯的限制,长期难于观察到但随着光源及探测器的不断更新发展,这种干涉现象表现的越来越重要。1

9、.1 波的叠加原理综述光的干涉、衍射等波动现象是光波迭叠加的必然结果。叠加原理是波动光学的基本原理之一,也是解决光的干涉、衍射、偏振等波动问题的理论基础。当光波在媒质中传播时,必然引起空间各点的扰动。当两个或两个以上的光波同时在同一空间区域传播时,空间的每一点都将同时受到各分量波的作用,如果波的独立船舶原理成立,则在它们叠加的空间区域内,每一点的扰动将等于各个分量波单独存在时该点扰动之和,这就是波的叠加原理。这里所指的扰动,对机械弹性波来说,是指某质点振动的瞬时值;对于光波来说,则是某考察点处电矢量振幅的瞬时值。所以波的叠加,即是求考察点处合扰动的问题。当各分量波为标量波时,合扰动等于各分量波

10、在该点扰动的标量和;当各分量波为矢量波时,合扰动等于各分量波扰动的矢量和1。 波动微分方程解的叠加性,构成了波的叠加原理的数学基础,但是,和波的独立传播原理一样,波的叠加原理也是根据大量的实验总结出来的,应用波的叠加原理作出的对衍射、干涉等波动现象的正确解释,才是波的叠加原理成立的真正依据。波的叠加原理的成立也是有条件的,其条件和波的独立传播成立的条件相同,即是说,波的叠加原理和独立传播原理是相容的。具体来说,只有在真空中传播,或者光波电磁场与媒质的相互作用满足线性条件时才能成立。按照经典的理论,光波电磁场和媒质中带电粒子(主压迫是指原子的外层电子)相互作用,将产生一个新的极化电磁场,叠加在原

11、来的电磁场上。只有当上述过程是线性时,叠加原理才能成立。原子核在外层电子处产生的电磁场、强度为数量级,而地球表面直射阳光的电场强度仅1010/V m左右,所以普通光源发出的光波对媒质的作用只是一种“微扰” 、波的叠加原理310/V m才能成立。但对于电场强度接近和超过的强激光,光波与媒质的相互作用不再满1010/V m足线性性。我们将波在其中传播是服从的叠加原理和独立传播原理的媒质成为“线性媒质” ,与此相反的媒质称为“非线性媒质” 2 。一般情况下,当两个或多光波在空间相遇时,总会发生光波的叠加现象;当参与叠加的各个分量波的传播方向、振动方向或时间频率关系不同时,叠加的结果也不相同。本文就振

12、动方向相同的光波,即标量波的叠加问题作相关的理论论证。两个同频率同方向的单色波的叠加后合成波仍是与两个分量波频率相同,传播方向武汉理工大学毕业设计(论文)2相同,其他控件、时间参量及位相速度都没有变化的简谐平面波,只是有了新的初相位和振幅。合成波的初相位取决于两个分量波的初相位的平均值,合成波的振幅取决于两个分量波的位相差;两个同频率反方向的平面波的叠加后合成波是一个驻波;两个同频率,沿任意方向传播的平面波叠加是两个平面波的干涉现象;不同频率的平面波的叠加其合成波在空间时间上的变化规律都相当的复杂3。两个振动方向相同,振幅相等、且在同一方向传播,但频率接近的单色光波的叠加,其结果产生光学上的“

13、拍”现象。1.2 光学实验仿真的国内外研究现状 在计算机飞速发展的今天,光学实验仿真受到越来越多的科研工作者和教育工作者的广泛关注。国外的光学实验仿真是在模拟设计和优化光学系统的过程中发展起来的。在这方面,美国走在最前面,其中最具代表性的是劳伦斯利弗莫尔实验室光传输模拟计算软件 Prop92 及大型总体优化设计软件 CHAINOP 和 PROPSUITE 。另外法国也开发完成其具有自身特点的光传输软件 Miro。该软件采用 C+编写,可以运行于多个平台。俄罗斯普通物理实验室在上世纪 90 年代初推出光传输软件 Fresne12.0 ,经过几年的发展,目前已经推出 Fresne14.0 版本。这

14、些软件都是成熟的商业化光传输及系统设计软件4。在光学教学方面,国外己有相关的配有光盘演示光学实验的教材,该教材主要针对高年级学生和研究生使用。其中不仅详尽地介绍了几何光学、物理光学、光学成像技术及图像处理技术,而且利用现在普遍使用的软件工具 Matlab 对它们进行了系统的仿真。也有针对理科和工科低年级学生使用的光学教材,该教材使用 MatchCad 绘制各种逼真的光学仪器,创造出仿真的光学实验室,学生可利用其进行探索和发现性学习,充分调动学生的积 极性。还有网络版光学教材,该教材采用 Mathematica 进行光学仿真计算,结合 LiveGraPhic3D JavaL1.1 的动画制作功能

15、在网络上实时演示各种光学实验的结果图。 在国内,中国科技大学基础物理实验中心人工智能与计算机应用研究室的大学物理仿真实验 ,利用软件设计虚拟仪器,建立虚拟实验环境。实验者可在这个环境中操作仪器模拟真实的实验过程。该软件通过计算机把实验设备,教学内容,教师指导和学生的操作有机地融合为一体,形成了一步活的、可操作的物理实验教科书。通过仿真物理实验学习,学生对实验的物理思想和方法、仪器的结构及原理的理解,可达到实际实验难以实现的效果,实现了培养动手能力,学习实验技能,深化物理知识的目的,同时增强了学生对物理实验的兴趣,大大提高了物理实验教学水平,是物理实验教学改革的有力工具。该软件现已在全国高校得到

16、普遍应用,并获得很好的教学效果和广泛好评。然而,光学计算机仿真实验教学在国内的发展比较缓慢,在 2003 年北京举行的网络教育软件展武汉理工大学毕业设计(论文)3上,有关光学实验的网络教学软件都偏重于理论分析方面,对计算机应用于光学实验的仿真方面未给予充分重视5。本文设计基于 MATLAB 下的光学拍的仿真及其图形用户界面的设计,经查阅资料,阅读相关书籍、教材、期刊等各种文献,对光学拍现象的形成条件和理论知识得以掌握,学习 MATLAB 软件的编程方法和程序结构。通过理论知识的论证和公式计算,实现了光学拍的理论实现方程。通过理论知识的参照,编写出了基于 MATLAB 下的光学拍的仿真程序。利用

17、 MATLAB 下的 GUI 图形制作工具设计光学拍的的界面,通过前面的程序的修改和添加,在 GUI 的初始化程序中加入设计的代码实现了光学拍的界面设计。1.3 MATLAB 用于光学仿真的优势和意义在大学理工科课程的教学中引入计算机模拟技术正日益受到重视 ,关于物理图形比如光学实验图像的模拟 ,已经有人做过一些工作 ,但还较少见到有人利用 MATLAB 软件做模拟光学实验的工作。 光学信息处理具有容量大、速度快、装置简单等优点 ,但在复杂和精密光路设计过程中为了获得最佳的光学信息处理效果 ,需要进行纷繁的计算和困难的实验验证 ,而计算机模拟技术可以为光路设计、相关光学器件的设计以及图像处理提

18、供一条简捷的途径.。利用 MATLAB 模拟光学实验简单灵活 ,操作者可以在计算机上自由设计图形的形状、尺寸以及实验参数变量 ,不受实际实验室条件的限制 ,能完成实际中较难完成的操作 ,从而加深了对物理原理、概念和图像的理解。因此,在傅里叶光学实验中引入计算机模拟技术是必要的。基于此,本文介绍怎样利用 MATLAB来模拟傅里叶光学实验,并给出了利用此模拟技术解决的光学空间滤波实验的模拟,以及两个基于光学滤波原理的相干光学信息处理应的实验模拟6。MATLAB 有两种基本的数据运算量:数组和矩阵,单从形式上,它们之间是不好区分的。每一个量可能被当作数组,也可能被当作矩阵,这要依所采用的运算法则或运

19、算函数来定。在 MATLAB 中,数组与矩阵的运算法则和运算函数是有区别的。但不论是MATLAB 的数组还是 MATLAB 的矩阵,都已经改变了一般高级语言中使用数组的方式和解决矩阵问题的方法。在 MATLAB 中,矩阵运算是把矩阵视为一个整体来进行,基本上与线性代数的处理方法一致。矩阵的加减乘除、乘方开方、指数对数等运算,都有一套专门的运算符或运算函数。而对于数组,不论是算术的运算,还是关系或逻辑的运算,甚至于调用函数的运算,形式上可以当作整体,有一套有别于矩阵的、完整的运算符和运算函数,但实质上却是针对数组的每个元素施行的。当 MATLAB 把矩阵(或数组)独立地当作一个运算量来对待后,向

20、下可以兼容向量和标量。不仅如此,矩阵和数组中的元素可以用复数作基本单元,向下可以包含实数集。这些是 MATLAB 区别于其他高级语言的根本特点。以此为基础,还可以概括出如下一些 MATLAB 的特色7。1语言简洁,编程效率高因为 MATLAB 定义了专门用于矩阵运算的运算符,使得矩阵运算就像列出算式执行标武汉理工大学毕业设计(论文)4量运算一样简单,而且这些运算符本身就能执行向量和标量的多种运算。利用这些运算符可使一般高级语言中的循环结构变成一个简单的 MATLAB 语句,再结合 MATLAB 丰富的库函数可使程序变得相当简短,几条语句即可代替数十行 C 语言或 Fortran 语言程序语句的

21、功能。2交互性好,使用方便在 MATLAB 的命令窗口中,输入一条命令,立即就能看到该命令的执行结果,体现了良好的交互性。交互方式减少了编程和调试程序的工作量,给使用者带来了极大的方便。因为不用像使用 C 语言和 Fortran 语言那样,首先编写源程序,然后对其进行编译、连接,待形成可执行文件后,方可运行程序得出结果。3强大的绘图能力,便于数据可视化 MATLAB 不仅能绘制多种不同坐标系中的二维曲线,还能绘制三维曲面,体现了强大的绘图能力。正是这种能力为数据的图形化表示(即数据可视化)提供了有力工具,使数据的展示更加形象生动,有利于揭示数据间的内在关系。4学科众多、领域广泛的工具箱MATL

22、AB 工具箱(函数库)可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的功能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、通信工具箱、图像处理工具箱、小波工具箱等。5开放性好,易于扩充除内部函数外,MATLAB 的其他文件都是公开的、可读可改的源文件,体现了 MATLAB的开放性特点。用户可修改源文件和加入自己的文件,甚至构造自己的工具箱。6与 C 语言和 Fortran 语言有良好的接口通过 MEX 文件,可以方便地调用 C 语言和 Fortran 语言编写的函数或程序,完成MATLAB

23、 与它们的混合编程,充分利用已有的 C 语言和 Fortran 语言资源8。武汉理工大学毕业设计(论文)52 光学拍现象2.1 光学拍现象的理论知识两个在同一方向上传播的振动方向相同、振幅相同而频率相差很小的单色光波叠加后,出现光学拍现象。现今,利用激光窄频带特性和光学拍携带有两个入射波的频率差、相位差的特点而发展起来的各种检测技术,已成为现代精密测量的灵敏而精确的重要方法。激光外差技术就是基于光学拍发展起来的较为成熟的技术,利用此技术对光学拍的检测,可以精密测量微位移、薄膜厚度、压电系数、压力波等重要的物理量;也可以用来研究表面物理、晶体的相变、电压的迟豫过程效应等9。设角频率分别为和的两单

24、色光波沿 z 方向传播,他们的波动公式为12 (2-1)111cos()Eatk z (2-2)222cos()Eatk z这两个光波的迭加得到 (2-3)121122cos()cos()EEEatk ztk z应用三角公式 (2-4)11coscos2cos()cos()22上式可写为 (2-5)12121212112 cos()() cos()() 22Eatkkztkkz引入平均角频率和平均波数k (2-6)121()2 (2-7)121()2kkk以及调制频率和调制波数mmk (2-8)121()2m (2-9)121()2mkkk武汉理工大学毕业设计(论文)6这样,式(2-5)可写为

25、 (2-10)2 cos()cos()mmEatk ztkz若令 (2-2cos()mmAatk z11)上式化为 (2-cos()EAtkz12)表明合成波是一个频率为而振幅随时间和位置在 0 与 2间变化的波10。A图 1、2、3 表示了这样两个波的迭加情况,其中图 1 是两个单色波,图 2 是合成波,图 3 是合成波振幅的变化曲线。由于光波的频率很高,若,则,因而12m变化缓慢而变化极快,合成波的强度与成比例,有AE2A (2-13)2224cos ()mmIAaatk z或 (2-14)2221cos2()mmIAatk z因此合成波的强度随时间和位置在 0 和之间变化,这种强度时大时

26、小的现象通常称为24a拍。有式(2-14)可见拍频等于,即等于振幅调制频率的两倍,或由的定义,等2mm于两迭加单色光波频率之差11。相同频率的两列光波叠加,合成波在接受屏上固定点处具有恒定的振幅,从而有稳定的干涉花样。由式(2-5)知道,不同频率的两列波叠加时,合成波的振幅是 z( , )A z t和 t 的函数,可以把它看作是角频率为而振幅受调制的波。合成波的强度( , )A z t也是 z、t 的函数,即合成波在接受屏上的强度分布不再是稳定的花样。若固定时( , )I z t间变量 t,可以得到它们在某一瞬间的波形;若同时考虑 x、t,则得到随时间增长而沿着 x 轴传播的波形11。武汉理工

27、大学毕业设计(论文)7光学拍现象是福莱斯特等人在 1955 年首先观察到的,他们用塞曼效应分裂的两条频率相差很小的光谱线作单色光波,迭加在光电混频管的表面产生拍频。在激光问世后,由于激光有很好的单色性和强度,光学拍现象的观察就变的非常容易了。 图 1 两输入单色波图 2 合成波 图 3 合成波振幅武汉理工大学毕业设计(论文)82.2 本章小结本章主要是对光学拍现象的理论知识进行研究和分析,通过学习,对光学拍现象的生成条件做了全面的理论分析,两个波如何才能生成光学拍,光学拍现象的存在对现实社会中的意义,它对我们的社会中有什么作用,研究的价值在那里,通过本章的学习,我们也对下一节用 MATLAB

28、对光学拍的仿真和模拟打下了基础。武汉理工大学毕业设计(论文)93 光学拍的仿真3.1 仿真实现方案本章主要研究基于 MATLAB 的光学拍的计算机研究仿真,本文应用 MATLAB 实现光学拍实验的计算机仿真的目标是:能够实现电脑与用户之间的交流,根据用户输入的参数计算光学拍现象的图样并显示出与实验基本相符的图和相应的计算结果,要求能够实现两列单色波的迭加形成光学拍现象的实验。其基本思路和方法为:光学拍是两个在同一方向上传播的振动方向相同、振幅相同而频率相差很小的单色光波迭加后形成的。输入变量为两列振动方向相同、振幅相同而频率相差很小的单色光平面波,输出为两列啵迭加后的合成波以及合成波的光强分布

29、。由于这三个量都是二维分布,而 MATLAB 主要应用于矩阵数值的运算,故为了提高运算速度和精度以及便于编写程序代码,本程序选择用二维矩阵来存储两列平面波的输入,输出和输出光强的分布,并分别以矩阵的列数和行数来对应平面的直角坐标系和。( , )A x t( , )I x t如何实现即如何利用输入变量及两列在同一方向上传播的振动方向相同、振幅相同而频率相差很小的单色光波得出光学拍现象。我们知道两列在同一方向上传播的振动方向相同、振幅相同而频率相差很小的单色光波迭加后形成光学拍现象,所以观察屏上的光学拍的分布与输入变量的、有关。所以,实现光学拍现象的运算方案为:首先用kMATLAB 定义两个频率为

30、、和波数为、的两列平面波,然后根据他们的算式得出121k2k合成波的算式,然后用图形绘制函数和轴坐标函数编写出合成波的程序,通过动画函数的调用实现光学拍的仿真程序的设计和编写12。3.2 光学拍现象的仿真首先定义两列在同一方向上传播振动方向相同、振幅相同而频率相差很小的单色光波。 (3-1)111cos()Eatk z (3-2)222cos()Eatk z然后用图形绘制函数绘制输入波。首先对各列波的参数 A、k、及 a 进行定义,得出输入波的程序如下w1=8;w2=9;%定义两列波的角频率,且相差很小k1=8;k2=9;%定义两列波的波数t=0.1:0.2:1.3;%设置时间参数武汉理工大学

31、毕业设计(论文)10a =1;x =0:0.001:5;%定义振幅和 x 轴A2= a*cos(k2*x-w2*t(end);%定义其中一个平面单色波A1= a*cos(k1*x-w1*t(end);%定一个另一个满足光学拍现象的平面单色波figure(1)%调用图形窗口函数plot(x,A1,x,A2)%绘制关于 x 与和 x 与的图形1A2Aset(gcf,color,0 1 0);设置颜色set(gca,YTick,-1:0.5:1);%x 轴的标注set(gca,XTick,0:1:5);%y 轴的标注这样就完成了光学拍现象分布存储的实现,运行程序得:图 4 输入波的实现然后通过计算得

32、出合成波 (3-3)121122cos()cos()EEEatk ztk z然后用图形绘制函数和图形窗口调用得到光学拍。首先定义两列波的参数 A、k、a 及 t,然后编写程序,光学拍现象的程序如下:w1=8;w2=9; %定义两列波的角频率,且相差很小k1=8;k2=9; %定义两列波的波数t=0.1:0.2:1.3; %设置时间参数,a =1;x =0:0.001:5; %定义振幅和 x 轴A2= a*cos(k2*x-w2*t(end); %定义其中一个平面单色波A1= a*cos(k1*x-w1*t(end); %定一个另一个满足光学拍现象的平面单色波figure; %调用图形窗口函数%

33、plot the optical beats武汉理工大学毕业设计(论文)11x =0:0.001:20;k =0;%定义 x 轴的分布和定义 km2= moviein(length(0.1:0.2:1.3);%创建帧矩阵 m2for t=0.1:0.2:1.3%生成图形的一系列命令k = k+1;%递增循环A =2*a*cos(k1-k2)/2*x-(w1-w2)/2*t);%合成波函数v = a*cos(k1*x -w1*t)+a*cos(k2*x-w2*t);%合成波的群速度plot(x,v,k-,x,A,x,-A);%绘制相关参数的二维图形axis(0 20 -2 2);%设定坐标范围s

34、et(gcf,color,0 1 0)%设置颜色set(gca,YTick,-2:1:2)%Y 轴的分布情况set(gca,XTick,0:5:20)%X 轴的分布性狂m2(:,k) = getframe;%捕获动画帧end这样就完成了光学拍现象的程序编辑,运行以上程序得:图 5 光学拍现象的实现合成波的也是关于 x,t 的函数,即合成波的在接受屏上的强度分布不再是稳定的( , )I x t干涉花样。若固定时间变量 t,可以得到它们在某一瞬时的波形;若同时考虑 x、t,则得到随着间增长而沿着 x 轴传播的波形。通过理论计算可知光强: (3-4)(, )*Ix tAA根据式(3-4) ,编写出光

35、强的分布曲线程序如下:w1=8;w2=9;k1=8;k2=9;武汉理工大学毕业设计(论文)12t=0.1:0.2:1.3;a =1;k =0;m2= moviein(length(0.1:0.2:1.3);for t=0.1:0.2:1.3k = k+1;A =2*a*cos(k1-k2)/2*x-(w1-w2)/2*t);v = a*cos(k1*x -w1*t)+a*cos(k2*x-w2*t);m2(:,k) = getframe;endmovie(m2,3)figure(3)x =0:0.001:20;A =2*a*cos(k1-k2)/2*x-(w1-w2)/2*t(end);l=

36、A.*A;plot(x,l)set(gcf,color,0 1 0)set(gca,YTick,0:1:4)set(gca,XTick,0:5:20)这样就完成了光学拍光强的分布曲线,程序运行后得:图 6 合成波的光强分布曲线武汉理工大学毕业设计(论文)133.3 本章小结本章用 MATLAB 的编程思想,实现了光学拍现象的计算机仿真,通过理论计算、分析,将理论知识用 MATLAB 的编程思想和方法模拟出来。本章系统的给出了两列单色波的光学拍现象的 MATLAB 编程和仿真,并编写出了两列单色波的光学拍现象的核心代码。通过本章的编程及其运行实现了光学拍现象的 MATLAB 仿真。武汉理工大学毕

37、业设计(论文)144 图形用户界面的设计 由于实验的局限性及其条件的有限,以至于我们的学习中光学拍现象很难得到实验的论证和观测,即是我们实现了光学拍的仿真,我们也很难方便而直观的观测光学拍现象,因为其中的参数我们只能在程序中定义,才能得到想要的结果,如果需要几组数据的对比的话,操作比较麻烦和困难,由此,我们利用 MATLAB 中的 GUI 图形用户界面设计工具设计光学拍现象的仿真界面。一个好的界面应遵循以下三个原则:简单性(Simplicity ) ,一致性(Consistency)及习常性(Familiarity)。 (1) 简单性 设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征

38、。那些可有可无的功能,应尽量删去,以保持界面的整洁。设计的图形界面要直观,为此应多采用图形,而尽量避免数值。设计界面应尽量减少窗口数目,力避在不同窗口之间来回切换。 (2) 一致性 所谓一致性有两层含义:一是所开发的界面风格要尽量一致;二是新设计的界面不要与其它已有的界面风格截然相左。这是因为用户在初次使用新界面时,总习惯于凭经验进行试探。比如说,图形显示区常安排在界面左半边,而按键等控制区被排在右侧。 (3) 习常性 设计新界面时,应尽量使用人们所熟悉的标志和符号。因为用户可能并不了解新界面的具体含义及操作方法,但他完全可以根据熟悉标志做出正确猜测,自学入门 。MATLAB 提供了一种可视化

39、的设计工具 guide,可以直接利用 guide 进行菜单设计、控件的编排和设定、回调函数的编辑等。GUI 的设计很简单,直接用鼠标或键盘增减图形对象,并可将几个图形对象加到一个图形上,增强了可视性。图形用户界面或 GUI 指的是用户与计算机或计算机程序的接触点或交互方式,是用户与计算机进行信息交流的平台。其包含的图形对象有:窗口、图标、按钮、菜单和文本和用户界面,最常见的选择或激活这些对象的方式有用鼠标或其他设备去控制屏幕上的鼠标光标的运动等等。用户界面设定了如何观看和如何感知计算机操作系统或应用程序(通常是根据结构和用户界面功能的有效性来选择) ,使用户通过输入设备,如:键盘、鼠标、跟踪球

40、、绘制板或麦克风等激活这些程序,计算机根据用户的操作在屏幕上显示相应的图形、文本、和计算结果,实现人与计算机的交流。上一章讲到的程序代码,已经可以实现光学拍的计算机仿真了,而现在要做的是用图形用户界面来把程序封装起来,让用户不用直接面对枯燥的程序代码就可以实现各种仿真的操作。假如读者所从事的数据分析、解方程、计算结果可视工作比较单一,那么一般不会考虑 GUI 的制作。但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,武汉理工大学毕业设计(论文)15想制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。MATLAB 为表现其基本功能而设计的演示程序 demo

41、 是使用图形界面的最好范例。MATLAB 的用户,在指令窗中运行 demo 打开那图形界面后,只要用鼠标进行选择和点击,就可浏览那丰富多彩的内容。从上述的实验中我们可以得出本次毕业设计的图像的描绘需要三个坐标轴来画图(分别为:两列输入波的图像,合成波图像,和合成波光强分布图像) ,还需要有一个运行按钮和四个参数输入编辑框,用来输入参数的值。我们利用用户界面设计来使得我们可以非常方便的实现图像的调入及其参数的输入。让我们直观的观察不同参数下的输入输出有什么变化。让我们加深对光学拍现象的知识的理解和应用13。4.1 图形用户界面的界面设计及其初始化首先进入 MATLAB,fileguide,然后我

42、们选择“blank GUI”,在一个空白的界面来制作, “确定”之后就可以得到如下的界面:图 7 默认的界面编辑器左边有很多可以选择的控件菜单项,通过选择相应的控件实现相应的功能。首先设计界面的组成部分和布局,光学拍的计算机仿真主要由:标题、运行按钮、4 个编辑框及其对应变量的名称,3 个图形输出窗口。经过 MATLAB 图形用户界面 GUI 设计的相关学习,对光学拍的界面的组成部分及其对应的控件的选择和编辑实现方法为:标题和变量的名称用静态变量控件函数 Static Text实现;4 个变量输入框由编辑框控件 Edit Text 实现;而运行按钮由 Push Button 控件函数实现;3

43、个图形输出窗口由轴控件函数 Axes 实现14。光学拍界面的设计要实现的功能为:首先制作一个比较简洁而又整洁的界面,而且界武汉理工大学毕业设计(论文)16面的布局合理而又比较直观。其次,我们要能通过在变量输入框中输入不同的参数,点击“运行”后对应的右面的 3 个图形输出窗口要输出对应参数的曲线。通过上面的要求和功能学习,主界面的各个组成部分的名称,对应控件选择及其相关的清单如下表:表 1 主界面各个控件的名称和各参数设置清单控件名StringTagBackgroudcolorForegroudcolorFontSize静态变量1光学拍的仿真text1紫红深蓝30静态变量2波 1 的角频率 w1

44、text2紫红深蓝20静态变量3波 2 的角频率 w2text3紫红深蓝12静态变量4波 1 的波数 k1text3紫红深蓝12静态变量5波 2 的波数 k2text4紫红深蓝12按钮运行pushbutton1紫红深蓝12编辑框 1edit1白黑12编辑框 2edit2白黑12编辑框 3edit3白黑12编辑框 4edit4白黑12轴控件 1axes1轴控件 2axes2轴控件 3axes3然后布局各控件的位置,调整位置和大小,使得布局合理而又简洁和直观,再按表修改各个变量的参数和属性值,则得到如下的布局和初始设计:武汉理工大学毕业设计(论文)17图 8 光学拍仿真的界面设计及布局初始化次 G

45、UI,点击“run” ,后进行初始化的如下初始:图 9 光学拍的仿真的初始界面武汉理工大学毕业设计(论文)184.2 图形用户界面的制作从上面的界面编辑中可以看出界面的关键的控件是编辑框、文本显示框、按钮和轴控件,开始的时候要求编辑框里是空的或 0,在各个控件的属性编辑框中的 string 中设置为空或 0 就可以了,根据上面的步骤和参数和属性的清单,运行上面的上面的 GUI 就可以得到要求的初始界面,由 MATLAB figure file 和 MATLAB M-file 组成。要实现光学拍的 MATLAB 仿真,在主界面的初始化程序中的 MATLAB M-file 中加入光学拍的 MATL

46、AB 仿真程序,具体是在 function pushbutton1_Callback(hObject, eventdata, handles)里面加入光学拍的 MATLAB 仿真代码。在前面我们已经做过了 MATLAB 的仿真程序,图形用户界面的 MATLAB 的设计可以有两种方式实现:第一,用图形 figure 函数调用相关程序,实现用户界面,然而这种方法需要用函数调用且布局都要以坐标函数调用的来布局,一个地方错了要改所有的程序,可视化不好;第二,用 MTALAB 自带的图形用户界面设计工具 guide,在目录 file-newgui 就可以新建一个 gui 图形用户界面,这里可以根据需要来

47、添加控件,按要求布局而且修改起来也比较简单方便,不需要更改程序,只在界面上调整和修改就可以了,可视化好且方便,初始化后在相关位置加入代码就可以实现了图形用户界面设计了。前面的程序是用图形 figure 函数调用实现了光学拍的计算机仿真,但是只是实现了仿真而没有完成人机式的界面设计,而且各个参数的修改都要在程序里更改,图形也是分 3 个实现的不在一个界面上,现在就在以前的基础上利用 MATLAB 的 gui 图形用户界面设计工具来设计光学拍的 MATLAB 仿真,需要对前面的程序做一下修改15。具体工作如下:以前的程序中各变量定义为常数,现在要用变量,具体的修改方法如下为:scale1=str2

48、double(get(handles.edit1,String);scale2=str2double(get(handles.edit2,String);scale3=str2double(get(handles.edit3,String);scale4=str2double(get(handles.edit4,String);w1=scale1;w2=scale2;k1=scale3;k2=scale4;此前的仿真程序中我们用单独的图形函数实现,而现在要求 3 个输出图形分别在设计的3 个轴控件窗口中显示,其方法为:将图形制作 figure 进行修改成轴控件函数调用对应的程序axes(han

49、dles.axes1); axes(handles.axes2);武汉理工大学毕业设计(论文)19axes(handles.axes3);此前的设计没有对坐标轴做标注,对图形上的曲线也没有对应的标注,对个轴控件图形也没做相应的名称,现在对界面上的坐标轴标注、对坐标轴窗口命名和对各曲线做标注。其方法为:利用 xlabel(字符串 )和 ylabel(字符串 )分别对 x 和 y 轴标注;利用 title(字符串 )对图形标题;利用 legend(字符串 1,字符串 2,.,参数)对图例注解。通过以上的修改和代码的添加,基于 MATLAB 下的 GUI 的光学拍的仿真界面的程序为:scale1=s

50、tr2double(get(handles.edit1,String);scale2=str2double(get(handles.edit2,String);scale3=str2double(get(handles.edit3,String);scale4=str2double(get(handles.edit4,String);w1=scale1;w2=scale2;k1=scale3;k2=scale4;t=0.1:0.2:1.3;a =1;x =0:0.001:5;A2= a*cos(k2*x-w2*t(end);A1= a*cos(k1*x-w1*t(end);axes(handl

51、es.axes1); plot(x,A1,x,A2)set(gcf,color,0 1 0);set(gca,YTick,-1:0.5:1);set(gca,XTick,0:1:5);xlabel(变量 X)ylabel(振幅变化 A)title(两列单色平面波)legend(wave1,wave2)axes(handles.axes2);%plot the optical beatsx =0:0.001:20;k =0;m2= moviein(length(0.1:0.2:1.3);for t=0.1:0.2:1.3k = k+1;武汉理工大学毕业设计(论文)20A =2*a*cos(k1-

52、k2)/2*x-(w1-w2)/2*t);v = a*cos(k1*x -w1*t)+a*cos(k2*x-w2*t);plot(x,v,k-,x,A,x,-A);axis(0 20 -2 2);set(gcf,color,0 1 0)set(gca,YTick,-2:1:2)set(gca,XTick,0:5:20)xlabel(变量 X)ylabel(振幅变化 A)title(合成波即光学拍)legend(wave,amp1,amp2)m2(:,k) = getframe;endmovie(m2,3)axes(handles.axes3);x =0:0.001:20;A =2*a*cos(

53、k1-k2)/2*x-(w1-w2)/2*t(end);l= A.*A;plot(x,l)set(gcf,color,0 1 0)set(gca,YTick,0:1:4)set(gca,XTick,0:5:20)xlabel(变量 X)ylabel(振幅变化 A)title(合成波光强曲线)legend(intensity of synthesis of wave)将此程序添加到光学拍仿真的 GUI 的初始化程序中的 function pushbutton1_Callback(hObject, eventdata, handles)下,然后保存并运行后得到如下的界面:武汉理工大学毕业设计(论文

54、)21图 10 光学拍的仿真界面4.3 仿真演示 在 MATLAB 中 fileopen 中打开光学拍的仿真的界面设计的程序,Editor 中的Debug 下的点击 run 进入光学拍的仿真的界面。在编辑框中输入参数就得到相应的输出,输入一组参数:w1=8,w2=8,k1=8,k2=8,运行后得到如下的界面: 图 11 等频率等波数下的情况武汉理工大学毕业设计(论文)22从中可以看出没有光学拍现象。再次输入一组数据 w1=8,w2=15,k1=8,k2=15,得到如下的界面:图 12 当光频率和波数相差很大的时候的情况从中可以看出光学拍现象不是很明显,再次输入一组数据:w1=8,w2=9,k1

55、=8,k2=9,得到如下的界面:武汉理工大学毕业设计(论文)23图 13 在输入参数下的光学拍的仿真实现各个图中第一窗口显示了两列对应参数下的单色平面波在时间固定而随变量 x 的变化曲线;第二个窗口给出了以上两列波的合成波即光学拍在时间固定而随 x 变化的曲线;第三个窗口给出了合成波在时间固定而随 x 的变化而变化的光强曲线。而从以上的三个不同输入参数的界面中可以看出只有满足光学拍的产生的条件的参数才能实现光学拍的仿真,频率和波数相差太大和相等都没有光学拍现象,只有两者相差很小的时候光学拍现象就很明显。到此,光学拍的仿真界面设计的程序设计和界面设计全部完毕。4.4 本章小结本章利用前面的程序与

56、本次的修改和代码的添加制作利用 MATLAB 下的 GUI 制作了一个完整的光学拍仿真的图像用户界面,不论是界面的控件选取,属性设计及其布局都做了详细的过程和说明,是用户可以很方便而直观的对光学拍现象进行仿真和分析。武汉理工大学毕业设计(论文)245 总结在计算机飞速发展的今天,光学实验仿真受到越来越多的科研工作者和教育工作者的广泛关注。其应用主要有两个方面:第一是在科学计算方面,利用仿真实验的结果指导实际试验减少和避免贵重仪器的损伤;第二是在光学教学方面,将抽象难懂的光学概念和规律,由仿真实验过程直观地描述,让学生饶有兴趣地掌握知识。本文开始时介绍了计算机仿真的优点和发展状况,此后有详细的描

57、述了光学拍现象的理论知识,通过理论知识的论述和方程的计算,描述了光学拍产生的理论条件。通过理论知识的分析和计算,经过编程思路的讨论,包括如何实现个控件的存储及布局,如何实现如何调用各函数和如何实现各控件函数的功能,我通过程序的编写和图形用户界面设计工具实现了基于 MATLAB 下的光学拍现象的仿真和图形用户界面的设计。通过图形用户界面可以系统的研究光学拍现象的产生和产生条件,通过不同参数的输入,从输出中我们可以方便而直观的仿真和分析光学拍现象。通过建立光学拍现象的仿真平台,使那些过于抽象光学概念和不能用数学方法得到解析解复杂公式变得清晰简单;由于图形用户界面的应用,提高到了学习的可视性和可操作

58、性,使学生可以自行灵活地修改光学类型和相关的参数,实现人机交互,使学习过程变得轻松自由,且能让学生对艰深难懂的光学概念和公式有一个更深的理解。在教学方面,它打破了课时的限制和光学实验条件的苛刻性,使得光学演示实验能在课堂中轻松进行,大大提高了教学效果,使教学变得更加主动和开放。本文只是通过理论知识的论述和 MATLAB 下的程序制作和图形用户界面的制作实现了光学拍现象的仿真,只是简单的仿真和分析了光学拍现象的产生和产生条件,只能参考,具体的研究还是要通过实验的实际实现,仅供参考。武汉理工大学毕业设计(论文)25参考文献1 谢敬辉,赵达尊,阎吉祥.物理光学教程M.北京:北京理工大学出版社,200

59、5.2 张平.MATLAB 基础与应用简明教程M.北京:北京航空航天大学出版社,2001.3 F.赫克特,A.赞斯.光学(上册)M.北京:人民教育出版社,1980.4 F.赫克特,A.赞斯.光学(下册)M.北京:人民教育出版社,1980.5 赵达尊,张怀玉.波动光学M.北京:宇航出版社,1986.6 母国光,战元令.光学M.北京:人民教育出版社,1978.7 于美文等.光学全息及信息处理M.北京:国防工业出版社,1984.8 陆果.基础物理学M.北京:高等教育出版社,1997.9 久保田广.波动光学M.北京:科学出版社,1983.10 J.W.顾德门.傅里叶光学导论M.北京:科学出版社,197

60、6.11 T.B.Barker,Marcel Delker.Quality by Experimental DesignM.New York:NY,1985.12 G.E.P.Box,W.G.hunter,J.S.Hunter.Statistics for TestingM.New York:NY,1981.13 R.J.Glauber.Quantum opticsM.Eds Kays M and Mailand,Landon and New York:Academ C Press,1970.14 W.T.Silfvast.Laser FundamentalsM. Eds Kays M and

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论