光学拍的计算机模拟.docx

上传人:牧羊曲112 文档编号:5035180 上传时间:2023-05-30 格式:DOCX 页数:39 大小:794.53KB
返回 下载 相关 举报
光学拍的计算机模拟.docx_第1页
第1页 / 共39页
光学拍的计算机模拟.docx_第2页
第2页 / 共39页
光学拍的计算机模拟.docx_第3页
第3页 / 共39页
光学拍的计算机模拟.docx_第4页
第4页 / 共39页
光学拍的计算机模拟.docx_第5页
第5页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《光学拍的计算机模拟.docx》由会员分享,可在线阅读,更多相关《光学拍的计算机模拟.docx(39页珍藏版)》请在三一办公上搜索。

1、摘要IAbstractII1绪论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摘要本文主要学习了光学拍理论,并对两列波形成光学拍的条件做了深入细致的分析;然 后根据光学拍的数学计算公式,编写了光学拍仿真的MATLAB程序代码;最后

2、为了方便用 户使用,本文设计了图形用户界面(包括设计方案、界面控件的布置和控件后台程序代 码的添加),实现了人机交互。研究结果表明:本文从光学拍的理论知识出发,运用MATLAB的强大的矩阵运算功能 和图形绘制功能实现了两列振幅相同,角频率相差很小的单色平面波的存储;实现可两列 单色平面波叠加后的合成波(光学拍)的仿真和合成波(光学拍)的光强分布;然后根据 光学拍现象应用MATLAB进行计算机仿真,并且编写出程序代码实现光学拍现象。本文的特色在于:为了让读者方便而直观的学习光学拍,本文将给出光学拍的图形用 户界面(GUI)及其的设计方法,包括界面布置的设计和各控件代码的添加。关键词:光学拍;MA

3、TLAB;计算机仿真;图形用户界面AbstractThis 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 mathematical computation formula of the optical beat, this article has compiled the MATLAB pro

4、cedure 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 of the interface and compilation of the background code), realized the man-machine interactio

5、n.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 frequency, the simulation of synthesis of wave(optical beat) of superposition of two monochroma

6、tic 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 out computer simulation according to phenomenon of optical beat and give out the program code

7、 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 optical beat, including the interfaces disposal and the additional program code of uicontrols

8、Key words: optical beat; MATLAB; computer simulation; graphical user interface1绪论本文主要是进行光学拍的MATLAB仿真。光学拍是光的波动特性的一种表现,属于光 的干涉特征,但这种干涉现象因受到探测器伯的限制,长期难于观察到但随着光源及探测 器的不断更新发展,这种干涉现象表现的越来越重要。1.1波的叠加原理综述光的干涉、衍射等波动现象是光波迭叠加的必然结果。叠加原理是波动光学的基本原 理之一,也是解决光的干涉、衍射、偏振等波动问题的理论基础。当光波在媒质中传播时,必然引起空间各点的扰动。当两个或两个以上的光波同时在

9、 同一空间区域传播时,空间的每一点都将同时受到各分量波的作用,如果波的独立船舶原 理成立,则在它们叠加的空间区域内,每一点的扰动将等于各个分量波单独存在时该点扰 动之和,这就是波的叠加原理。这里所指的扰动,对机械弹性波来说,是指某质点振动的 瞬时值;对于光波来说,则是某考察点处电矢量振幅的瞬时值。所以波的叠加,即是求考 察点处合扰动的问题。当各分量波为标量波时,合扰动等于各分量波在该点扰动的标量和; 当各分量波为矢量波时,合扰动等于各分量波扰动的矢量和。波动微分方程解的叠加性,构成了波的叠加原理的数学基础,但是,和波的独立传播 原理一样,波的叠加原理也是根据大量的实验总结出来的,应用波的叠加原

10、理作出的对衍 射、干涉等波动现象的正确解释,才是波的叠加原理成立的真正依据。波的叠加原理的成立也是有条件的,其条件和波的独立传播成立的条件相同,即是说, 波的叠加原理和独立传播原理是相容的。具体来说,只有在真空中传播,或者光波电磁场 与媒质的相互作用满足线性条件时才能成立。按照经典的理论,光波电磁场和媒质中带电 粒子(主压迫是指原子的外层电子)相互作用,将产生一个新的极化电磁场,叠加在原来 的电磁场上。只有当上述过程是线性时,叠加原理才能成立。原子核在外层电子处产生的 电磁场、强度为1010V /m数量级,而地球表面直射阳光的电场强度仅10 3V / m左右,所以 普通光源发出的光波对媒质的作

11、用只是一种“微扰”、波的叠加原理才能成立。但对于电 场强度接近和超过1010V/m的强激光,光波与媒质的相互作用不再满足线性性。我们将波 在其中传播是服从的叠加原理和独立传播原理的媒质成为“线性媒质”,与此相反的媒质 称为“非线性媒质”。一般情况下,当两个或多光波在空间相遇时,总会发生光波的叠加现象;当参与叠加 的各个分量波的传播方向、振动方向或时间频率关系不同时,叠加的结果也不相同。本文 就振动方向相同的光波,即标量波的叠加问题作相关的理论论证。两个同频率同方向的单色波的叠加后合成波仍是与两个分量波频率相同,传播方向相 同,其他控件、时间参量及位相速度都没有变化的简谐平面波,只是有了新的初相

12、位和振 幅。合成波的初相位取决于两个分量波的初相位的平均值,合成波的振幅取决于两个分量 波的位相差;两个同频率反方向的平面波的叠加后合成波是一个驻波;两个同频率,沿任 意方向传播的平面波叠加是两个平面波的干涉现象;不同频率的平面波的叠加其合成波在 空间时间上的变化规律都相当的复杂。两个振动方向相同,振幅相等、且在同一方向传播,但频率接近的单色光波的叠加, 其结果产生光学上的“拍”现象。1.2光学实验仿真的国内外研究现状在计算机飞速发展的今天,光学实验仿真受到越来越多的科研工作者和教育工作者的 广泛关注。国外的光学实验仿真是在模拟设计和优化光学系统的过程中发展起来的。在这 方面,美国走在最前面,

13、其中最具代表性的是劳伦斯利弗莫尔实验室光传输模拟计算软件 Prop92及大型总体优化设计软件CHAINOP和PROPSUITE。另外法国也开发完成其具有自 身特点的光传输软件Miro。该软件采用C+编写,可以运行于多个平台。俄罗斯普通物理 实验室在上世纪90年代初推出光传输软件Fresne12.0,经过几年的发展,目前已经推出 Fresne14.0版本。这些软件都是成熟的商业化光传输及系统设计软件。在光学教学方面,国外己有相关的配有光盘演示光学实验的教材,该教材主要针对高 年级学生和研究生使用。其中不仅详尽地介绍了几何光学、物理光学、光学成像技术及图 像处理技术,而且利用现在普遍使用的软件工具

14、Matlab对它们进行了系统的仿真。也有 针对理科和工科低年级学生使用的光学教材,该教材使用MatchCad绘制各种逼真的光学 仪器,创造出仿真的光学实验室,学生可利用其进行探索和发现性学习,充分调动学生的 积 极性。还有网络版光学教材,该教材采用Mathematica进行光学仿真计算,结合LiveGraPhic3D JavaL1.1的动画制作功能在网络上实时演示各种光学实验的结果图。在国内,中国科技大学基础物理实验中心人工智能与计算机应用研究室的大学物理 仿真实验,利用软件设计虚拟仪器,建立虚拟实验环境。实验者可在这个环境中操作仪 器模拟真实的实验过程。该软件通过计算机把实验设备,教学内容,

15、教师指导和学生的操 作有机地融合为一体,形成了一步活的、可操作的物理实验教科书。通过仿真物理实验学 习,学生对实验的物理思想和方法、仪器的结构及原理的理解,可达到实际实验难以实现 的效果,实现了培养动手能力,学习实验技能,深化物理知识的目的,同时增强了学生对 物理实验的兴趣,大大提高了物理实验教学水平,是物理实验教学改革的有力工具。该软 件现已在全国高校得到普遍应用,并获得很好的教学效果和广泛好评。然而,光学计算机 仿真实验教学在国内的发展比较缓慢,在2003年北京举行的网络教育软件展上,有关光 学实验的网络教学软件都偏重于理论分析方面,对计算机应用于光学实验的仿真方面未给 予充分重视。本文设

16、计基于MATLAB下的光学拍的仿真及其图形用户界面的设计,经查阅资料,阅 读相关书籍、教材、期刊等各种文献,对光学拍现象的形成条件和理论知识得以掌握,学 习MATLAB软件的编程方法和程序结构。通过理论知识的论证和公式计算,实现了光学拍 的理论实现方程。通过理论知识的参照,编写出了基于MATLAB下的光学拍的仿真程序。 利用MATLAB下的GUI图形制作工具设计光学拍的的界面,通过前面的程序的修改和添加, 在GUI的初始化程序中加入设计的代码实现了光学拍的界面设计。1.3 MATLAB用于光学仿真的优势和意义在大学理工科课程的教学中引入计算机模拟技术正日益受到重视,关于物理图形比 如光学实验图

17、像的模拟,已经有人做过一些工作,但还较少见到有人利用MATLAB软 件做模拟光学实验的工作。光学信息处理具有容量大、速度快、装置简单等优点,但在 复杂和精密光路设计过程中为了获得最佳的光学信息处理效果,需要进行纷繁的计算和 困难的实验验证,而计算机模拟技术可以为光路设计、相关光学器件的设计以及图像处 理提供一条简捷的途径.。利用MATLAB模拟光学实验简单灵活,操作者可以在计算机 上自由设计图形的形状、尺寸以及实验参数变量,不受实际实验室条件的限制,能完成 实际中较难完成的操作,从而加深了对物理原理、概念和图像的理解。因此,在傅里叶 光学实验中引入计算机模拟技术是必要的。基于此,本文介绍怎样利

18、用MATLAB来模拟 傅里叶光学实验,并给出了利用此模拟技术解决的光学空间滤波实验的模拟,以及两个基 于光学滤波原理的相干光学信息处理应的实验模拟们。MATLAB有两种基本的数据运算量:数组和矩阵,单从形式上,它们之间是不好区分 的。每一个量可能被当作数组,也可能被当作矩阵,这要依所采用的运算法则或运算函数 来定。在MATLAB中,数组与矩阵的运算法则和运算函数是有区别的。但不论是MATLAB 的数组还是MATLAB的矩阵,都已经改变了一般高级语言中使用数组的方式和解决矩阵 问题的方法。在MATLAB中,矩阵运算是把矩阵视为一个整体来进行,基本上与线性代 数的处理方法一致。矩阵的加减乘除、乘方

19、开方、指数对数等运算,都有一套专门的运算 符或运算函数。而对于数组,不论是算术的运算,还是关系或逻辑的运算,甚至于调用函 数的运算,形式上可以当作整体,有一套有别于矩阵的、完整的运算符和运算函数,但实 质上却是针对数组的每个元素施行的。当MATLAB把矩阵(或数组)独立地当作一个运算量 来对待后,向下可以兼容向量和标量。不仅如此,矩阵和数组中的元素可以用复数作基本 单元,向下可以包含实数集。这些是MATLAB区别于其他高级语言的根本特点。以此为 基础,还可以概括出如下一些MATLAB的特色7。1 .语言简洁,编程效率高因为MATLAB定义了专门用于矩阵运算的运算符,使得矩阵运算就像列出算式执行

20、标 量运算一样简单,而且这些运算符本身就能执行向量和标量的多种运算。利用这些运算符 可使一般高级语言中的循环结构变成一个简单的MATLAB语句,再结合MATLAB丰富的库函 数可使程序变得相当简短,几条语句即可代替数十行C语言或Fortran语言程序语句的功 能。2 .交互性好,使用方便在MATLAB的命令窗口中,输入一条命令,立即就能看到该命令的执行结果,体现了 良好的交互性。交互方式减少了编程和调试程序的工作量,给使用者带来了极大的方便。 因为不用像使用C语言和Fortran语言那样,首先编写源程序,然后对其进行编译、连接, 待形成可执行文件后,方可运行程序得出结果。3. 强大的绘图能力,

21、便于数据可视化MATLAB不仅能绘制多种不同坐标系中的二维曲线,还能绘制三维曲面,体现了强大的 绘图能力。正是这种能力为数据的图形化表示(即数据可视化)提供了有力工具,使数据的 展示更加形象生动,有利于揭示数据间的内在关系。4. 学科众多、领域广泛的工具箱MATLAB工具箱(函数库)可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主 要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的功 能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、通信 工具箱、图像处理工具箱、小波工具箱等。5. 开放性好,易于扩充除内部函数外,MATLAB的其他文件都

22、是公开的、可读可改的源文件,体现了 MATLAB 的开放性特点。用户可修改源文件和加入自己的文件,甚至构造自己的工具箱。6. 与C语言和Fortran语言有良好的接口通过MEX文件,可以方便地调用C语言和Fortran语言编写的函数或程序,完成 MATLAB与它们的混合编程,充分利用已有的C语言和Fortran语言资源82光学拍现象2.1光学拍现象的理论知识两个在同一方向上传播的振动方向相同、振幅相同而频率相差很小的单色光波叠加 后,出现光学拍现象。现今,利用激光窄频带特性和光学拍携带有两个入射波的频率差、 相位差的特点而发展起来的各种检测技术,已成为现代精密测量的灵敏而精确的重要方 法。激光

23、外差技术就是基于光学拍发展起来的较为成熟的技术,利用此技术对光学拍的检 测,可以精密测量微位移、薄膜厚度、压电系数、压力波等重要的物理量;也可以用来研 究表面物理、品体的相变、电压的迟豫过程效应等9设角频率分别为气和3 2的两单色光波沿Z方向传播,他们的波动公式为E = a cos( 3 t 一 k z)(2-1)E = a cos( 3 t - k z)这两个光波的迭加得到(2-2)E = E + E = acos(31 一 k z) + cos(3 t 一 k z)121122(2-3)应用三角公式cos a + cos P = 2cos !-(a + P) cos L(a 一。)22(2

24、-4)上式可写为11。E = 2acos2(3 -3 )t-(k -k )zcos二(3 +3 )t-(k + k )z21(2-5)引入平均角频率3和平均波数k(2-6)2( *(2-7)以及调制频率3和调制波数kmm(2-8)(2-9)这样,式(2-5)可写为E = 2 a cos( t 一 k z )cos( t 一 kz )(2-10)若令A = 2 a cos( t - k z )(211)上式化为E = A cos( t 一 kz )(2-12)表明合成波是一个频率为S而振幅A随时间和位置在0与2a间变化的波1。图1、2、3表示了这样两个波的迭加情况,其中图1是两个单色波,图2是合

25、成波, 图3是合成波振幅的变化曲线。由于光波的频率很高,若O1A2,则2s”,因而A变 化缓慢而E变化极快,合成波的强度与A2成比例,有I = A 2 = 4 aa 2 cos 2 (w t 一 k z )(2-13)或I = A 2 = 2 a 21 + cos 2( w t - k z)(2-14)因此合成波的强度随时间和位置在0和4a2之间变化,这种强度时大时小的现象通常称为 拍。有式(2-14)可见拍频等于2皿,即等于振幅调制频率的两倍,或由的定义,等于 两迭加单色光波频率之差uh。相同频率的两列光波叠加,合成波在接受屏上固定点处具有恒定的振幅,从而有稳定 的干涉花样。由式(2-5)知

26、道,不同频率的两列波叠加时,合成波的振幅A(z,t)是z和t 的函数,可以把它看作是角频率为w而振幅受A(z,t)调制的波。合成波的强度I(z,t)也是z、 t的函数,即合成波在接受屏上的强度分布不再是稳定的花样。若固定时间变量t,可以 得到它们在某一瞬间的波形;若同时考虑X、t,则得到随时间增长而沿着x轴传播的波形 11。光学拍现象是福莱斯特等人在1955年首先观察到的,他们用塞曼效应分裂的两条频率 相差很小的光谱线作单色光波,迭加在光电混频管的表面产生拍频。在激光问世后,由于 激光有很好的单色性和强度,光学拍现象的观察就变的非常容易了。图1两输入单色波图2合成波2.2本章小结本章主要是对光

27、学拍现象的理论知识进行研究和分析,通过学习,对光学拍现象的生 成条件做了全面的理论分析,两个波如何才能生成光学拍,光学拍现象的存在对现实社会 中的意义,它对我们的社会中有什么作用,研究的价值在那里,通过本章的学习,我们也 对下一节用MATLAB对光学拍的仿真和模拟打下了基础。3光学拍的仿真3.1仿真实现方案本章主要研究基于MATLAB的光学拍的计算机研究仿真,本文应用MATLAB实现光学拍 实验的计算机仿真的目标是:能够实现电脑与用户之间的交流,根据用户输入的参数计算 光学拍现象的图样并显示出与实验基本相符的图和相应的计算结果,要求能够实现两列单 色波的迭加形成光学拍现象的实验。其基本思路和方

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

29、方向上传播的振动方向相 同、振幅相同而频率相差很小的单色光波迭加后形成光学拍现象,所以观察屏上的光学拍 的分布与输入变量的o、k有关。所以,实现光学拍现象的运算方案为:首先用MATLAB定 义两个频率为o、o和波数为k、k的两列平面波,然后根据他们的算式得出合成波的1212算式,然后用图形绘制函数和轴坐标函数编写出合成波的程序,通过动画函数的调用实现 光学拍的仿真程序的设计和编写1雹3.2光学拍现象的仿真首先定义两列在同一方向上传播振动方向相同、振幅相同而频率相差很小的单色光波。E = a cos( o t - k z )(3-1)E 2 = a cos( o 21 - k 2 z )(3-2

30、)然后用图形绘制函数绘制输入波。首先对各列波的参数A、k、o及a进行定义,得出输入波的程序如下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%调用图形窗口函数 plot(x,A1,x,A2)%绘制关于x与A和x与A的图形set(gcf,color,0 1 0);设置颜色set(gca

31、,YTick,-1:0.5:1);%x 轴的标注 set(gca,XTick,0:1:5);%y 轴的标注这样就完成了光学拍现象分布存储的实现,运行程序得:-3)先定义两Figure 1然后通过计算得2=9;_%定义两列波的波数然后用图形绘制首 w1=8;W2=9; %定义两列波的角频率,且相差很小 k1=8; 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); %定一个另一个满足光学拍现象的平面单色波 figur

32、e; %调用图形窗口函数 %plot the optical beats x =0:0.001:20;k =0; %定义x轴的分布和定义km2= moviein(length(0.1:0.2:1.3);%创建帧矩阵 m2 for 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);%设定坐标

33、范围 set(gcf,color,0 1 0)% 设置颜色 set(gca,YTick,-2:1:2)%Y 轴的分布情况 set(gca,XTick,0:5:20)%X 轴的分布性狂 m2(:,k) = getframe;% 捕获动画帧 end这样就完成了光学拍现象的程序编辑,运行以上程序得:的十-4)着间增长而沿着合成波的13, t)也-1 -t,则得到随涉花样。若固定时间变量/t,可以得到它根据式(3-4),编写出光强的分布曲线程序如下: w1=8;w2=9;k1=8;k2=9;t=0.1:0.2:1.3;a =1;k =0;m2= moviein(length(0.1:0.2:1.3);

34、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= A.*A;plot(x,l)set(gcf,color,0 1 0)set(gca,YTick,0:1:4)set(gca,XTick,0:5:20)这样就完成了光学拍光强的分布曲线,程序运行后得:3.3本

35、章小结本章用MATLAB的编程思想,实现了光学拍现象的计算机仿真,通过理论计算、分析, 将理论知识用MATLAB的编程思想和方法模拟出来。本章系统的给出了两列单色波的光学 拍现象的MATLAB编程和仿真,并编写出了两列单色波的光学拍现象的核心代码。通过本 章的编程及其运行实现了光学拍现象的MATLAB仿真。4图形用户界面的设计由于实验的局限性及其条件的有限,以至于我们的学习中光学拍现象很难得到实验的 论证和观测,即是我们实现了光学拍的仿真,我们也很难方便而直观的观测光学拍现象, 因为其中的参数我们只能在程序中定义,才能得到想要的结果,如果需要几组数据的对比 的话,操作比较麻烦和困难,由此,我们

36、利用MATLAB中的GUI图形用户界面设计工具设 计光学拍现象的仿真界面。一个好的界面应遵循以下三个原则:简单性(Simplicity ),一致性(Consistency) 及习常性(Familiarity)。(1) 简单性设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征。那些可有可无的 功能,应尽量删去,以保持界面的整洁。设计的图形界面要直观,为此应多采用图形,而 尽量避免数值。设计界面应尽量减少窗口数目,力避在不同窗口之间来回切换。(2) 一致性所谓一致性有两层含义:一是所开发的界面风格要尽量一致;二是新设计的界面不要 与其它已有的界面风格截然相左。这是因为用户在初次使用新界面时

37、,总习惯于凭经验进 行试探。比如说,图形显示区常安排在界面左半边,而按键等控制区被排在右侧。(3) 习常性设计新界面时,应尽量使用人们所熟悉的标志和符号。因为用户可能并不了解新界面 的具体含义及操作方法,但他完全可以根据熟悉标志做出正确猜测,自学入门。MATLAB 提供了一种可视化的设计工具guide,可以直接利用guide进行菜单设计、控件的编排和 设定、回调函数的编辑等。GUI的设计很简单,直接用鼠标或键盘增减图形对象,并可将 几个图形对象加到一个图形上,增强了可视性。图形用户界面或GUI指的是用户与计算机或计算机程序的接触点或交互方式,是用户 与计算机进行信息交流的平台。其包含的图形对象

38、有:窗口、图标、按钮、菜单和文本和 用户界面,最常见的选择或激活这些对象的方式有用鼠标或其他设备去控制屏幕上的鼠标 光标的运动等等。用户界面设定了如何观看和如何感知计算机操作系统或应用程序(通常是根据结构和 用户界面功能的有效性来选择),使用户通过输入设备,如:键盘、鼠标、跟踪球、绘制 板或麦克风等激活这些程序,计算机根据用户的操作在屏幕上显示相应的图形、文本、和 计算结果,实现人与计算机的交流。上一章讲到的程序代码,已经可以实现光学拍的计算 机仿真了,而现在要做的是用图形用户界面来把程序封装起来,让用户不用直接面对枯燥 的程序代码就可以实现各种仿真的操作。假如读者所从事的数据分析、解方程、计

39、算结果可视工作比较单一,那么一般不会考 虑GUI的制作。但是如果读者想向别人提供应用程序,想进行某种技术、方法的演示,想 14框及其制作一个供反复使用且操作简单的专用工具,那么图形用户界面也许是最好的选择之一。 MATLAB为表现其基本功能而设计的演示程序demo是使用图形界面的最好范例。MATLAB的 用户,在指令窗中运行demo打开那图形界面后,只要用鼠标进行选择和点击,就可浏览 那丰富多彩的内容。从上述的实验中我们可以得出本次毕业设计的图像的描绘需要三个坐标轴来画图(分 别为:两列输入波的图像,合成波图像,和合成波光强分布图像),还需要有一个运行按 钮和四个参数输入编辑框,用来输入参数的

40、值。我们利用用户界面设计来使得我们可以非 常方便的实现图像的调入及其参数的输入。让我们直观的观察不同参数下的输入输出有什 么变化。让我们加深对光学拍现象的知识的理解和应用。4.1图形用户界面的界面设计及其初始化首先进入MATLAB,fileguide,然后我们选择“blank GUI”,在一个空白的界面 来制作,“确定”之后就可以得到如下的界面:界面对应变量的名称,3个图形输出窗口。经过MATLAB图形用户界面GUI设计的相关学习,对光学拍的界面的组成部分及其对应 的控件的选择和编辑实现方法为:标题和变量的名称用静态变量控件函数Static Text实 现;4个变量输入框由编辑框控件Edit

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

42、量2波1的角频率w1text2紫红深蓝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然后布局各控件的位置,调整位置和大小,使得布局合理而又简洁和直观,再按表修 改各个变量的参数和属性值,则得到如下的布局和初始设计:波1的波数心图8光学拍仿真的界面设计及初始化次GUI,点

43、击波2的波数run”,后进行初始化的如下初始4.2图形用户界面的制作从上面的界面编辑中可以看出界面的关键的控件是编辑框、文本显示框、按钮和轴控 件,开始的时候要求编辑框里是空的或0,在各个控件的属性编辑框中的string中设置为 空或0就可以了,根据上面的步骤和参数和属性的清单,运行上面的上面的GUI就可以得 到要求的初始界面,由MATLAB figure file和MATLAB M-file组成。要实现光学拍的MATLAB 仿真,在主界面的初始化程序中的MATLAB M-file中加入光学拍的MATLAB仿真程序,具 体是在 function pushbutton1_Callback(hOb

44、ject, eventdata, handles)里面加入光学拍 的MATLAB仿真代码。在前面我们已经做过了 MATLAB的仿真程序,图形用户界面的MATLAB的设计可以有两 种方式实现:第一,用图形figure函数调用相关程序,实现用户界面,然而这种方法需 要用函数调用且布局都要以坐标函数调用的来布局,一个地方错了要改所有的程序,可视 化不好;第二,用MTALAB自带的图形用户界面设计工具guide,在目录file newgui 就可以新建一个gui图形用户界面,这里可以根据需要来添加控件,按要求布局而且修改 起来也比较简单方便,不需要更改程序,只在界面上调整和修改就可以了,可视化好且方

45、便,初始化后在相关位置加入代码就可以实现了图形用户界面设计了。前面的程序是用图形figure函数调用实现了光学拍的计算机仿真,但是只是实现了仿 真而没有完成人机式的界面设计,而且各个参数的修改都要在程序里更改,图形也是分3 个实现的不在一个界面上,现在就在以前的基础上利用MATLAB的gui图形用户界面设计 工具来设计光学拍的MATLAB仿真,需要对前面的程序做一下修改1园具体工作如下:以前的程序中各变量定义为常数,现在要用变量,具体的修改方法如下为:scale1二str2double(get(handles.edit1,String);scale2二str2double(get(handle

46、s.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(handles.axes1);axes(handles.axes2);axes(handles.axes3);此前的设计没有对坐标轴做标注,对图形上的曲线也没有对应的标注,对个轴控件图 形也没做相应的名称,现在对界面上的坐标轴标注、对坐标轴窗口命名和对各曲线做标注。 其方法为:利用xlabel 字符串)和ylabel 字符串)分别对x和y轴标注;利用 title (字符串)对图形标题;利用legend (字符串1,字符串2,.,参数

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号