光栅衍射实验的MATLAB仿真_第1页
光栅衍射实验的MATLAB仿真_第2页
光栅衍射实验的MATLAB仿真_第3页
光栅衍射实验的MATLAB仿真_第4页
光栅衍射实验的MATLAB仿真_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

.-可修编..---可修编.届别2012届学号200814060106毕业设计光栅衍射实验的MATLAB仿真目录摘要IABSTRACTII1引言11.1国内外研究动态12理论依据22.1平面光栅衍射实验装置22.2原理分析32.3MATLAB主程序的编写62.4仿真图形的用户界面设计73光栅衍射现象的分析83.1缝数N对衍射条纹的影响83.2波长λ对衍射条纹的影响103.3光栅常数d对衍射光强的影响123.4条纹缺级现象134总结14参考文献16致17附录18摘要平面光栅衍射实验是大学物理中非常重要的实验,实验装置虽然简单,但实验现象却是受很多因素的影响,例如波长λ,缝数N,以及光栅常数d。本文利用惠更斯一菲涅耳原理,获得了衍射光栅光强的解析表达式,再运用Matlab软件,将模拟的界面设计成实验参数可调gui界面,能够连续地改变波长λ,缝数N,光栅常数d,从而从这3个层面对衍射光栅的光强分布和谱线特征进行了数值模拟,并讨论了光栅衍射的缺级现象,不仅有利于克服试验中物理仪器和其他偶然情况等因素给实验带来的限制和误差.并而且通过实验现象的对比,能够加深对光栅衍射特征及规律的理解,这些都很有意义。关键词:平面光栅衍射;惠更斯-菲涅尔原理;gui;光强分布;MatlabABSTRACTPlanegratingdiffractionexperimentisveryimportantintheCollegephysicsexperiment,thoughtheexperimentalequipmentissimple,theresultwillbeinfluencedbymanyfactors,suchaswavelengthλandslotnumberN,andgratingnumberd.ThepapertakesadvantageofHuygens-Fresnelprinciple,thenfuguresthefomulaofdiffractionlightintensitydistribution.AtlasttheexperimentissimulatedbyMatlabsoftware.Theusercancontinuouslychangeparameterwavelengthλ,slotnumberN,gratingnumberd,soastogetthedifferentexperimentalphenomenon,andthemissingorderofgratingdiffractionphenomenawillbediscussed.Notonlythematlabsimulationcanbeusedtooverethelimitationsofexperimentalequipmentandotherincidentalfactors.butalsothroughtheparisonofexperimentalphenomenon,itcandeepentheunderstandingofgratingdiffractioncharactersandrules.Asawhole,itisofsignificance.Keywords:diffractionofplanegratings;Huygens-Fresnelprinciple,GUI,andlightintensitydistribution;Matlab--可修编.1引言荷兰物理学家惠更斯(Huygens)是光的波动说创始人,1690年他提出了关于波如何传播的惠更斯原理,即认为波前上每一点都可看为是新的球面子波源,子波的包络面就是新的波前。根据这一原理可导出反射和折射定律,也能得出光波经过小孔后偏离几何光学规律向各方向传播,但不能区别光的直线传播和衍射现象产生的条件,更不能定量计算沿不同方向传播的光波的振幅,因而无法确定衍射图样中的光强分布,只是一种几何作图法。1818年,菲涅尔(Fresnel)吸收了惠更斯原理中的“子波”概念,在杨氏干涉实验的启发下对惠更斯原理进行了补充,认为子波之间还存在相干叠加。这样用干涉原理补充的惠更斯原理称为惠更斯-菲涅尔原理。1882年,基尔霍夫(Kirchhoff)进一步研究了惠更斯-菲涅尔原理,用标量近似法得到了菲涅尔-基尔霍夫积分公式[1],为原理奠定了比较完善的数学基础,因而能依此计算得出光栅衍射图样中光强分布规律的数学表达式。另外光栅衍射光强的计算还可采用另外一种方法—振幅矢量法[2]。本文将采用的此种方法计算出光强表达式,进一步编写出matlab仿真光栅衍射的主程序。1.1国内外研究动态对光学实验进行计算机仿真,具有两个方面的意义:一方面,利用仿真结果指导实际实验,前期投资少,且可以减少贵重仪器的损伤等;另一方面,在教学上,将抽象难懂的概念、规律通过实验仿真生动、形象地表现出来,使学生更易于接受,具有明显的教学效果[3]。波动光学实验内容比较抽象,如不借助实验,学生很难理解。国外著名的光学教材配有大量的图片(包括计算和实验获得的图片),来形象地说明光学中抽象难懂的理论。波动光学实验一般需要稳定的环境,高精密的仪器,因此在教室里能做的光学实验极为有限,而且也受到授课时间的限制。为了克服光学实验对实验条件要求比较苛刻的缺点,可采用计算机仿真光学实验,特别是光学演示实验,配合理论课的进行,把光学课程涉及的大多数现象展示在学生面前,以加深对光学内容的理解。我国光学教材在利用计算机仿真方面相对落后,至今没有同类教材出现。在2003年举行的网络教育软件展上,有关光学实验的网络教学软件都偏重于理论分析方面,对计算机应用于光学实验的仿真方面未给与充分重视[4]。在计算机日益普及的今天,计算机仿真技术作为虚拟实验手段己经成为计算机应用的一个重要分支,它是继理论分析和物理实验之后,认识客观世界规律性的一种新型手段。1.2Matlab简介Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境。它还包括了ToolBox工具箱)的各类问题的求解工具,可用来求解特定学科的问题。其特点是:(1)可扩展性:Matlab最重要的特点是易于扩展,它允许用户自行建立指定功能的M文件。对于一个从事特定领域的工程师来说,不仅可利用Matlab所提供的函数及基本工具箱函数,还可方便地构造出专用的函数,从而大大扩展了其应用范围。当前支持Matlab的商用Toolbox工具箱)有数百种之多。而由个人开发的Toolbox则不可计数。(2)易学易用性:Matlab不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。(3)高效性:Matlab语句功能十分强大,一条语句可完成十分复杂的任务。如fft语句可完成对指定数据的快速傅里叶变换,这相当于上百条C语言语句的功能。它大大加快了工程技术人员从事软件开发的效率。据MathWorks公司声称,Matlab软件中所包含的Matlab源代码相当于70万行C代码。由于Matlab具有如此之多的特点,在欧美高等院校,Matlab己成为应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;在研究单位、工业部门,Matlab也被广泛用于研究和解决各种工程问题[5]。2理论依据2.1平面光栅衍射实验装置平面衍射光栅是由大量相互平行、等宽、等距的狭缝(或刻痕)组成;它能达到的刻槽密度需要具备亚微米的加工设备和工艺技术,达到纳米级的精度要求,是属于光、机、电结合的高技术项目.以衍射光栅为色散元件组成摄谱仪或单色仪是物质光谱分析的极其精密的光谱分析仪器,在研究谱线结构、特征谱线的波长和强度,特别是研究物质结构和对元素作定量与定性的分析中有极其广泛的应用。平面光栅衍射的实验装置如图1所示,S为点光源或与纸面垂直的狭缝光源,它位于透镜的焦平面上,屏幕放在物镜的焦平面上。该装置衍射屏上有一系列等宽等间隔的平行狭缝,设每条缝的宽度为b,相邻两缝问不透明部分的宽度为a,则相邻狭缝上对应点之问的距离(即光栅常数)d=a+b,其倒数表示每毫米内有多少条狭缝,称为光栅密度;θ是衍射角,透射光栅总缝数为N。图2-1光栅衍射实验装置2.2原理分析本文用一种在普通物理阶段严格计算光栅衍射光强分布的振幅矢量方法[5],此方法回避了困难的菲涅耳-基尔霍夫积分,该积分复杂难懂,故不采纳。用振幅矢量法计算有两个显著的优点,一个是物理概念清楚,另一个是计算简单严格。实际上,衍射的本质就是无穷多个子波干涉的结果.下面通过把光栅的N个缝的每一个缝都分割成n个子波带,最后让n→∞,考虑这无穷多个子波的干涉,用振幅矢量法严格计算出光栅衍射的光强分布表达式.设这N个缝的宽度都是b,相距都为a,波长为λ的光垂直照射到这N个缝前时,每条缝单独衍射时的最大光强为,其相应的振幅为。现在将每条缝分为n等份,每一等份的振幅都为=/n.当衍射光以θ角出射时,以第1个缝的第1等份子波的位相为零作基准,则第2,3,⋯⋯,n等份子波与基准子波的位相差为,2⋯⋯,(n-1)。,第二个缝的第1,2,3,…,n等分子波与基准子波的位相差为,+,+2,……,+(n-1).。。第j个缝的第k等份子波与基准子波的位相差为其振幅的x和y分量为:……(1)……(2)设所有子波带在屏上干涉的合振幅为,并且把表示成下式,省略等式右边的下标n其中i为虚数单位,而……(3)……(4)于是得到屏上的光强分布,得:……(5)上式运用了复变函数论的欧拉公式以及等比数列的求和公式。现在最关键的是让n→∞取极限才是所有子波在屏上的合振幅……(6)其中只有分母部分包含有n的因子,分母取极限变形,则……(7)上式运用了数学里面一个基本极限公式由于,所以最后得到的光栅衍射的光强分布的表达式……(8)式(8)中的..及其中的来源于单缝衍射,称为单缝衍射因子;来源于缝间干涉,称为缝间干涉因子。因此,可以说多缝衍射光强分布是多光束干涉光强分布受单缝衍射光强分布调制的结果(图2-3)。在光栅衍射中,相邻两主极大之间还分布着一些暗条纹,这些暗条纹是由各缝射出的衍射光因干涉相消而形成的,即与缝间干涉因子有关。用公式来表示,零点在下列位置出现暗条纹[6]:……(9)在每两个主极大之间,分布着(N-1)暗线(零点)和(N-2)个光强极弱的次级明条纹,这些明条纹几乎是观察不到的。另外条纹的半角宽度也可作为研究光栅衍射条纹规律的一个重要物理量。根据半角宽度的定义:……(10)显然式(10)给出了半角宽度与各个实验参数之间的关系。2.3MATLAB主程序的编写根据公式(8)可知,λ,N,b,d,f,等参数影响着光栅衍射的光强分布与光谱特性。f为的焦距。用MATLAB编写的主程序[7][8]如下:>>clearwavelength=0.0007000;f=100;b=0.005;d=0.01;N=4;%设定参数值(单位为mm)x=linspace(-4*pi,4*pi,1000);%设定图像的x方向范围forj=1:1000%对x方向的全部点进行循环计算u=(pi*b/wavelength)*(((x(j)/sqrt(x(j)^2+f^2))));Idan=((sin(u)/u).^2);%单缝衍射光强公式Iduo=((sin(d*u*N/b)/sin(d*u/b)).^2);%多缝干涉光强公式I(j)=Idan*Iduo;%光栅衍射光强公式endholdon;NCLevels=255;Ir=NCLevels*I;IG=NCLevels*Idan;IB=NCLevels*Iduo;colormap(gray(NCLevels));%用灰度级颜色图subplot(2,1,2),image(x,I,Ir)%画图像subplot(2,1,1),plot(x,I(:)/max(I));%屏幕上光强与位置的关系曲线title('光栅衍射仿真结果')以上主程序中所用到的数据为λ=700nm,N=5,b=0.005mm,d=0.01mm,f=100mm,(选取正入射,本文程序运行时入射方向和光栅平面法线之间的夹角都为零)。运行以上程序得到如下图样:图2-2光栅衍射仿真图像通过图2-2可知,光栅衍射仿真图像与理论基本吻合,光栅衍射光强是多缝干涉光强受单缝衍射调制的结果。这为下文图形用户界面(GUI)的设计以及光栅衍射研究提供了基础。2.4仿真图形的用户界面设计图形用户界面(GraphicalUserInterface,简称GUI)指的是用户与计算机或计算机程序的接触点或交互方式,是用户与计算机进行信息交流的平台。用户界面设定了如何观看和如何感知计算机操作系统或应用程序(通常是根据结构和用户界面功能的有效性来选择),使用户通过输入设备,如:键盘、鼠标、等激活这些程序,计算机根据用户的操作在屏幕上显示相应的图形、文本、和计算结果,实现人与计算机的交流。上文编写的程序代码,已经可以实现光栅衍射实验的计算机仿真了,现在要做的是用图形用户界面来把程序封装起来,让用户不用直接面对枯燥的程序代码就可以实现各种仿真的操作[9]。一个完整的MATLAB图形用户界面,需要涉及到界面的控件布置、编辑和各种控件后台程序代码的添加。在GUI界面下,用户可以非常方便地改变参数设置,从而可以得到对应的仿真图样。显然当缝数N=1为单缝衍射,N=2为双缝干涉,N>2为光栅衍射,这些在该设计界面下都能满足,如图:图2-3仿真界面3光栅衍射现象的分析3.1缝数N对衍射条纹的影响根据式式(9)和式(10)的理论关系式,可以初步得出缝数N与衍射条纹的一些关系,如亮纹的半角宽度明显和缝数N成反比关系。而图2是matlab对不同数目的狭缝在屏幕上形成的相对光强分布和衍射条纹的模拟。在界面中改变缝数N的值。其余参数如图。三幅图像分别对应N=3,N=7,N=10:图3-1不同缝数的衍射图样比较观察图3-1中的三幅图可以看出:(1)主极大的位置与缝数N对没有关系(相邻两个主极大之间的角间距不变),但它们的宽度随N减少;(2)相邻主极大之间有N-1条暗纹和N-2条次极大。(3)狭缝数目N越大,则主极大亮线的半角宽度越小,主极大的锐度越大,反映在衍射图样上的主极大亮纹越细,相应地次极大的线宽变小,亮度变弱[10]。3.2波长λ对衍射条纹的影响从式(10)我们可以看出,谱线的半角宽度与Nd的乘积成反比,Nd愈大,愈小,谱线愈窄,锐度愈好.如果光源发出的光单色性很好,这样光栅给出的光谱是一组很明锐的谱线。多缝衍射图样的半角宽度与λ成正比关系,在实验室当中很难得到任意波长的光波,毫无疑问将增加实验的成本以及对实验器材的要求也是相当高,对此,采用matlab来模拟这个实验,在本文设计的图形用户界面(GUI)中连续的改变波长λ时,得到衍射光强分布如图3-2所示,为方便观察,参数设置如图,波长分别取400nm,600nm,700nm的光波。图3-2不同波长的衍射图样将图3-2中不同波长的光强分布曲线通过处理到同一图像下图3-3上。可见光的范围为380nm-760nm,实线代表波长为400nm光波的谱线,虚线代表波长为600nm光波的谱线。粗实线表示波长为700nm。图3-3合成波形图从图3-2,图3-3我们可以得到衍射光强随波长λ的变化规律为:衍射条纹的主极大位置不变,而次极大位置沿两边发生了移动。主(次)极大的半角宽度及主(次)极大条纹的间距均随λ的增长而增大。随着λ的增大,衍射谱线变宽,锐度变坏(即谱线变得模糊)。3.3光栅常数d对衍射光强的影响由式(10)可以得出谱线的半角宽度与光栅常数d成反比关系.当其它参数保持不变时,我们仅改变光栅常数d的值,同样在设计界面运行时取用不同的d值,当d=0.01,d=0.03,d=0.08(单位为mm)衍射光强分布如图5所示:图3-4不同光栅常数的衍射图像从图5中三个图比较可以看出:衍射光强主极大的半角宽度及主极大条纹的间距随d的增大而减小。主极大的位置随d的增大,逐渐向中央亮纹靠拢。衍射谱线变窄,锐度变好。3.4条纹缺级现象由式(8)可知,光栅衍射的强度分布受到单缝衍射因子和缝间干涉因子的共同作用.缝问间涉因子决定了衍射条纹的主极大的位置和半角宽度,而单缝衍射因子并不改变主极大的位置和半角宽度,只改变各级主极大的强度;或者说,仅在于影响强度在各级主极大问的分配.我们在讨论光栅公式时,只是从多光束干涉的角度说明了叠加光强最大而产生明条纹的必要条件,但当这一θ角位置同时也满足单缝衍射的暗纹条件时,可将这一位置看成是光强度为零“干涉加强”。当k与k’满足下列公式时看来应出现某k级明条纹的位置,实际上却是暗条纹,既k级明条纹不出现,这种现象称为缺级现象。……(11)M文件封装的程序代码中编写的缝宽b=0.005mm,透镜L2的焦距f=100mm,为使得图像易于观察,在M文件的程序代码中将f=100mm修改为f=40mm。其他参数λ=600nm,N=4,d=2b=0.01mm和d=4b=0.02mm代入界面中运行得到如下图形:图3-5缺级现象图解当d=2b=0.01mm时,由式(11)中可推算出缺级应出现在±2,±4,...级条纹,而从图3-5中模拟图样可以清晰的得知用matlab模拟光栅衍射现象与理论完全吻合。同样当d=4b=0.02mm时,缺级应出现在±4,±8,......。这一实验现像也得到了完美模拟再现。4总结计算机仿真技术作为一个虚拟实验的手段在现在的科研学习中发挥着愈来愈重要的作用。特别是在光学教学过程中,对光学现象的理解离不开光学实验。采用计算机仿真技术对其进行仿真,得到满足各种条件的光学实验结果图像,有助于学生在学习过程中建立清晰正确的观念。通过上述讨论分析可知,利用MATLAB软件对平面光栅衍射实验进行仿真模拟,不受实验仪器和场所的限制,将模拟的界面设计成实验参数可调的人机交互平台,可以很轻松的通过调节界面上的实验参数就能得到不同参数条件下的衍射强度分布和衍射谱线,对于帮助学生理解光学原理具有积极的作用,并进一步提高大学物理的趣味性;同时,对衍射光栅作为各种光谱仪器的核心元件的制作和研究进行了更深一步的认识。此方法在物理教学中具有重要的意义。本篇论文基本实现了光栅衍射实验的仿真各个方面,并由理论验证仿真结果的正确性。但由于光学实验仿真工作涉及的程序代码繁杂,加上时间仓促和水平有限,论文中难免有不尽人意之处,有待在后面的工作中加以改进。参考文献[1]赵凯华,钟锡华.光学[M]..大学,1984.[2]X星辉.用振幅矢量法计算光栅衍射的光强分布[J].工科物理1998年第8卷第6期.[3]符运良.MATLAB在光学教学中的应用[J].:华南热带农业大学学报,2004,3:1-2.[4]曲伟娟.基于Matlab的光学实验仿真[J].:西北工业大学学报,2004,21(3):21-24.[5]X卫国.MATLAB程序设计与应用(第二版)[M].高等教育,2009.[6]姚启钧.光学教程[M].第4版.:高等教育,2008.[7]周忆,梁齐.用MATLAB语言模拟光衍射实验[J].大学物理实验,2001.[8]蓝海江.光栅衍射及其特例的MATLAB仿真[J].XX师专学报,2008.06.[9]王正林,X明.精通MATLAB[M].:电子工业,2007.[10]李德钊,金东星.大学物理学习指导[M].机械工业,2007.05.致在本文完稿之际,我要衷心的感谢我的指导老师姚敏教授。我在论文工作中遇到过很多困难,都是在姚老师的悉心指导与不断鼓励下克服的。姚老师知识渊博、经验丰富、治学态度严谨、作风朴实,不仅在学术工作上给于我多方面的指导,也教会我许多做人的道理。在此,我要再次向姚老师表示深深的谢意。感谢X泽利、廖忠诚、X柏顺、谢明付、尹忠甫等同一小组的兄弟们,和他们之间进行的激烈的、有益的讨论,是我在此期间所获得的宝贵财富。也感谢同寝室的兄弟们无私的奉献,为我的论文顺利完成提供了极大的帮助和促进。感谢我的父亲和母亲,他们默默的支持和鼓励,使我安心于学习,顺利完成这篇论文。感谢我所有的家人,他们对我的大力支持和鼓励是我不断前进的动力源泉。谢谢!附录GUI界面的M文件封装的主程序代码functionvarargout=hg(varargin)%HGM-fileforhg.fig%HG,byitself,createsanewHGorraisestheexisting%singleton*.%%H=HGreturnsthehandletoanewHGorthehandleto%theexistingsingleton*.%%HG('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinHG.Mwiththegiveninputarguments.%%HG('Property','Value',...)createsanewHGorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforehg_OpeningFgetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtohg_OpeningFviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelphg%LastModifiedbyGUIDEv2.521-May-201201:34:22%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningF',hg_OpeningF,...'gui_OutputF',hg_OutputF,...'gui_LayoutF',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainf(gui_State,varargin{:});elsegui_mainf(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforehgismadevisible.functionhg_OpeningF(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputF.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%vararginmandlineargumentstohg(seeVARARGIN)%Choosedefaultmandlineoutputforhgset(handles.edit4,'String',0.000005);set(handles.edit1,'String',1);set(handles.edit2,'String',600e-9);set(handles.edit3,'String',0.00001);handles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakeshgwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%Outputsfromthisfunctionarereturnedtothemandline.functionvarargout=hg_OutputF(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultmandlineoutputfromhandlesstructurevarargout{1}=handles.output;%Executesonslidermovement.functionslider1_Callback(hObject,eventdata,handles)%hObjecthandletoslider1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofsliderN=get(handles.slider1,'value');set(handles.edit1,'string',num2str(N));%Executesduringobjectcreation,aftersettingallproperties.functionslider1_CreateF(hObject,eventdata,handles)%hObjecthandletoslider1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);end%Executesonslidermovement.functionslider2_Callback(hObject,eventdata,handles)%hObjecthandletoslider2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofsliderl=get(handles.slider2,'value');set(handles.edit2,'string',num2str(l));%Executesduringobjectcreation,aftersettingallproperties.functionslider2_CreateF(hObject,eventdata,handles)%hObjecthandletoslider2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);end%Executesonslidermovement.functionslider3_Callback(hObject,eventdata,handles)%hObjecthandletoslider3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofsliderd=get(handles.slider3,'value');set(handles.edit3,'string',num2str(d));%Executesduringobjectcreation,aftersettingallproperties.functionslider3_CreateF(hObject,eventdata,handles)%hObjecthandletoslider3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);end%Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)N=str2num(get(handles.edit1,'String'));l=str2num(get(handles.edit2,'String'));d=str2num(get(handles.edit3,'String'));f=40;b=str2num(get(handles.edit4,'String'));x=linspace(-4*pi,4*pi,1000);forj=1:1000u=(pi*b/l)*(((x(j)/sqrt(x(j)^2+f^2))));Idan(j)=((sin(u)/u).^2);Iduo(j)=((sin(d*u*N/b)/sin(d*u/b)).^2);I(j)=Idan(j)*Iduo(j);endNCLevels=255;Ir=NCLevels*I;IG=NCLevels*Idan;IB=NCLevels*Iduo;axes(handles.axes1);colormap(gray(NCLevels));switchN%选择相应的标头case1image(x,Idan,IG)title('单缝衍射仿真结果')axes(handles.axes2);plot(x,Idan(:)/max(Idan));case2image(x,Iduo,IB)title('双缝干涉仿真结果')axes(handles.axes2);plot(x,Iduo(:)/max(Iduo));otherwiseimage(x,I,Ir)title('光栅衍射仿真结果')axes(handles.axes2);plot(x,I(:)/max(I));end%Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)closefunctionedit1_Callback(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit1astext%str2double(get(hObject,'String'))returnscontentsofedit1asadouble%Executesduringobjectcreation,aftersettingallproperties.functionedit1_CreateF(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit2_Callback(hObject,eventdata,handles)%hObjecthandletoedit2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit2astext%str2double(get(hObject,'String'))returnscontentsofedit2asadouble%Executesduringobjectcreation,aftersettingallproperties.functionedit2_CreateF(hObject,eventdata,handles)%hObjecthandletoedit2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows

温馨提示

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

评论

0/150

提交评论