首页 光栅衍射实验的MATLAB仿真

光栅衍射实验的MATLAB仿真

举报
开通vip

光栅衍射实验的MATLAB仿真届 别        2012届            学 号    200814060106       毕业设计 光栅衍射实验的MATLAB仿真 姓            名       吴      帅          系    别、  专  业   物理与电子信息工程系  应用物理专业        导 师 姓 名、职 称     姚  敏  教  授      完    成    时  间     2012年5月16日    目    录 摘  要    I ABSTRACT    ...

光栅衍射实验的MATLAB仿真
届 别        2012届            学 号    200814060106       毕业设计 光栅衍射实验的MATLAB仿真 姓            名       吴      帅          系    别、  专  业   物理与电子信息 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 系  应用物理专业        导 师 姓 名、职 称     姚  敏  教  授      完    成    时  间     2012年5月16日    目    录 摘  要    I ABSTRACT    II 1 引言    1 1.1 国内外研究动态    1 2理论依据    2 2.1 平面光栅衍射实验装置    2 2.2 原理分析    3 2.3 MATLAB主程序的编写    6 2.4 仿真图形的用户界面设计    7 3 光栅衍射现象的分析    8 3.1 缝数N对衍射条纹的影响    8 3.2 波长λ对衍射条纹的影响    10 3.3 光栅常数d对衍射光强的影响    12 3.4 条纹缺级现象    13 4 总结    14 参考文献    16 致    谢    17 附    录    18 摘  要 平面光栅衍射实验是大学物理中非常重要的实验,实验装置虽然简单,但实验现象却是受很多因素的影响,例如波长λ,缝数N,以及光栅常数d。本文利用惠更斯一菲涅耳原理,获得了衍射光栅光强的解析表达式,再运用Matlab软件,将模拟的界面设计成实验参数可调gui界面,能够连续地改变波长λ,缝数N,光栅常数d,从而从这 3个层面对衍射光栅的光强分布和谱线特征进行了数值模拟,并讨论了光栅衍射的缺级现象,不仅有利于克服试验中物理仪器和其他偶然情况等因素给实验带来的限制和误差.并而且通过实验现象的对比,能够加深对光栅衍射特征及规律的理解,这些都很有意义。 关键词:平面光栅衍射;惠更斯-菲涅尔原理;gui;光强分布;Matlab ABSTRACT Plane grating diffraction experiment is very important in the College physics experiment, though the experimental equipment is simple, the result will be influenced by many factors, such as wavelengthλ and slot number N, and grating number d. The paper takes advantage of  Huygens-Fresnel principle, then fugures the fomula of diffraction light intensity distribution. At last the experiment is simulated by Matlab software. The user can continuously change parameter wavelengthλ, slot number N, grating number d, so as to get the different experimental phenomenon,and the missing order of grating diffraction phenomena will be discussed. Not only the matlab simulation can be used to overcome the limitations of experimental equipment and other incidental factors. but also through the comparison of experimental phenomenon, it can deepen the understanding of grating diffraction characters and rules. As a whole, it is of significance. Key words: diffraction of plane gratings; Huygens-Fresnel principle, GUI, and light intensity distribution; Matlab 1 引言 荷兰物理学家惠更斯(Huygens)是光的波动说创始人,1690年他提出了关于波如何传播的惠更斯原理,即认为波前上每一点都可看为是新的球面子波源,子波的包络面就是新的波前。根据这一原理可导出反射和折射定律,也能得出光波经过小孔后偏离几何光学规律向各方向传播,但不能区别光的直线传播和衍射现象产生的条件,更不能定量计算沿不同方向传播的光波的振幅,因而无法确定衍射图样中的光强分布,只是一种几何作图法。 1818年,菲涅尔(Fresnel)吸收了惠更斯原理中的“子波”概念,在杨氏干涉实验的启发下对惠更斯原理进行了补充,认为子波之间还存在相干叠加。这样用干涉原理补充的惠更斯原理称为惠更斯-菲涅尔原理。 1882年,基尔霍夫(Kirchhoff)进一步研究了惠更斯-菲涅尔原理,用标量近似法得到了菲涅尔-基尔霍夫积分公式[1],为原理奠定了比较完善的数学基础,因而能依此计算得出光栅衍射图样中光强分布规律的数学表达式。另外光栅衍射光强的计算还可采用另外一种方法—振幅矢量法[2]。本文将采用的此种方法计算出光强表达式,进一步编写出matlab仿真光栅衍射的主程序。 1.1国内外研究动态 对光学实验进行计算机仿真,具有两个方面的意义:一方面,利用仿真结果指导实际实验,前期投资少,且可以减少贵重仪器的损伤等;另一方面,在教学上,将抽象难懂的概念、规律通过实验仿真生动、形象地表现出来,使学生更易于接受,具有明显的教学效果[3]。 波动光学实验内容比较抽象,如不借助实验,学生很难理解。国外著名的光学教材配有大量的图片(包括计算和实验获得的图片),来形象地说明光学中抽象难懂的理论。波动光学实验一般需要稳定的环境,高精密的仪器,因此在教室里能做的光学实验极为有限,而且也受到授课时间的限制。为了克服光学实验对实验条件要求比较苛刻的缺点,可采用计算机仿真光学实验,特别是光学演示实验,配合理论课的进行,把光学课程涉及的大多数现象展示在学生面前,以加深对光学内容的理解。我国光学教材在利用计算机仿真方面相对落后,至今没有同类教材出现。在2003年北京举行的网络教育软件展上,有关光学实验的网络教学软件都偏重于理论分析方面,对计算机应用于光学实验的仿真方面未给与充分重视[4]。 在计算机日益普及的今天,计算机仿真技术作为虚拟实验手段己经成为计算机应用的一个重要分支,它是继理论分析和物理实验之后,认识客观世界规律性的一种新型手段。 1.2 Matlab简介 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.3 MATLAB主程序的编写 根据公式(8)可知,λ,N,b,d,f,等参数影响着光栅衍射的光强分布与光谱特性。f为 的焦距。用MATLAB编写的主程序[7][8]如下: >>  clear wavelength=0.0007000;f=100;b=0.005;d=0.01;N=4;%设定参数值(单位为mm) x=linspace(-4*pi,4*pi,1000); %设定图像的x方向范围 for j=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;      %光栅衍射光强公式 end hold on; 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 仿真图形的用户界面设计 图形用户界面(Graphical User Interface,简称 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我们可以得到衍射光强随波长λ的变化规律为: (1) 衍射条纹的主极大位置不变,而次极大位置沿两边发生了移动。 (2) 主(次)极大的半角宽度及主(次)极大条纹的间距均随λ的增长而增大。 (3) 随着λ的增大,衍射谱线变宽,锐度变坏(即谱线变得模糊)。 3.3 光栅常数d对衍射光强的影响 由式(10)可以得出谱线的半角宽度 与光栅常数d成反比关系.当其它参数保持不变时,我们仅改变光栅常数d的值,同样在设计界面运行时取用不同的d值,当d=0.01,d=0.03,d=0.08(单位为mm)衍射光强分布如图5所示: 图3-4 不同光栅常数的衍射图像                                                                                  从图5中三个图比较可以看出: (1) 衍射光强主极大的半角宽度及主极大条纹的间距随d的增大而减小。 (2) 主极大的位置随d的增大,逐渐向中央亮纹靠拢。 (3) 衍射谱线变窄,锐度变好。 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]  张星辉.用振幅矢量法计算光栅衍射的光强分布[J].工科物理1998年第8卷第6期. [3]  符运良.MATLAB在光学教学中的应用[J].海口:华南热带农业大学学报,2004,3:1-2. [4]  曲伟娟.基于Matlab的光学实验仿真[J].西安:西北工业大学学报,2004,21(3):21-24. [5] 刘卫国.MATLAB程序设计与应用(第二版)[M].高等教育出版社,2009. [6]  姚启钧.光学教程[M].第4版.北京:高等教育出版社,2008. [7] 周忆,梁齐.用MATLAB 语言模拟光衍射实验[J].大学物理实验,2001. [8] 蓝海江.光栅衍射及其特例的MATLAB仿真[J].柳州师专学报,2008.06. [9] 王正林,刘明.精通MATLAB[M].北京:电子工业出版社,2007. [10] 李德钊,金东星.大学物理学习指导[M].机械工业出版社,2007.05. 致    谢 在本文完稿之际,我要衷心的感谢我的指导老师姚敏教授。我在论文工作中遇到过很多困难,都是在姚老师的悉心指导与不断鼓励下克服的。姚老师知识渊博、 经验 班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验 丰富、治学态度严谨、作风朴实,不仅在学术工作上给于我多方面的指导,也教会我许多做人的道理。在此,我要再次向姚老师表示深深的谢意。    感谢张泽利、廖忠诚、刘柏顺、谢明付、尹忠甫等同一小组的兄弟们,和他们之间进行的激烈的、有益的讨论,是我在此期间所获得的宝贵财富。也感谢同寝室的兄弟们无私的奉献,为我的论文顺利完成提供了极大的帮助和促进。 感谢我的父亲和母亲,他们默默的支持和鼓励,使我安心于学习,顺利完成这篇论文。感谢我所有的家人,他们对我的大力支持和鼓励是我不断前进的动力源泉。谢谢! 附  录 GUI界面的M文件封装的主程序代码 function varargout = hg(varargin) % HG M-file for hg.fig %      HG, by itself, creates a new HG or raises the existing %      singleton*. % %      H = HG returns the handle to a new HG or the handle to %      the existing singleton*. % %      HG('CALLBACK',hObject,eventData,handles,...) calls the local %      function named CALLBACK in HG.M with the given input arguments. % %      HG('Property','Value',...) creates a new HG or raises the %      existing singleton*.  Starting from the left, property value pairs are %      applied to the GUI before hg_OpeningFcn gets called.  An %      unrecognized property name or invalid value makes property application %      stop.  All inputs are passed to hg_OpeningFcn via varargin. % %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one %      instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help hg % Last Modified by GUIDE v2.5 21-May-2012 01:34:22 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name',      mfilename, ... 'gui_Singleton',  gui_Singleton, ... 'gui_OpeningFcn', @hg_OpeningFcn, ... 'gui_OutputFcn',  @hg_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{:}); end % End initialization code - DO NOT EDIT % --- Executes just before hg is made visible. function hg_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject    handle to figure % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % varargin  command line arguments to hg (see VARARGIN) % Choose default command line output for hg set(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; % Update handles structure guidata(hObject, handles); % UIWAIT makes hg wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = hg_OutputFcn(hObject, eventdata, handles) % varargout  cell array for returning output args (see VARARGOUT); % hObject    handle to figure % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject    handle to slider1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider N=get(handles.slider1,'value'); set(handles.edit1,'string',num2str(N)); % --- Executes during object creation, after setting all properties. function slider1_CreateFcn(hObject, eventdata, handles) % hObject    handle to slider1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on slider movement. function slider2_Callback(hObject, eventdata, handles) % hObject    handle to slider2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider l=get(handles.slider2,'value'); set(handles.edit2,'string',num2str(l)); % --- Executes during object creation, after setting all properties. function slider2_CreateFcn(hObject, eventdata, handles) % hObject    handle to slider2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on slider movement. function slider3_Callback(hObject, eventdata, handles) % hObject    handle to slider3 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider %        get(hObject,'Min') and get(hObject,'Max') to determine range of slider d=get(handles.slider3,'value'); set(handles.edit3,'string',num2str(d)); % --- Executes during object creation, after setting all properties. function slider3_CreateFcn(hObject, eventdata, handles) % hObject    handle to slider3 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]); end % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject    handle to pushbutton1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) 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); for j=1:1000 u=(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); end NCLevels=255; Ir=NCLevels*I; IG=NCLevels*Idan; IB=NCLevels*Iduo; axes(handles.axes1); colormap(gray(NCLevels)); switch N                %选择相应的标头 case 1 image(x,Idan,IG) title('单缝衍射仿真结果') axes(handles.axes2); plot(x,Idan(:)/max(Idan)); case 2 image(x,Iduo,IB) title('双缝干涉仿真结果') axes(handles.axes2); plot(x,Iduo(:)/max(Iduo)); otherwise image(x,I,Ir) title('光栅衍射仿真结果') axes(handles.axes2); plot(x,I(:)/max(I)); end % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject    handle to pushbutton2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) close function edit1_Callback(hObject, eventdata, handles) % hObject    handle to edit1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text %        str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject    handle to edit1 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %      See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) % hObject    handle to edit2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text %        str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject    handle to edit2 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %      See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) % hObject    handle to edit3 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit3 as text %        str2double(get(hObject,'String')) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles) % hObject    handle to edit3 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %      See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles) % hObject    handle to edit4 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit4 as text %        str2double(get(hObject,'String')) returns contents of edit4 as a double % --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles) % hObject    handle to edit4 (see GCBO) % eventdata  reserved - to be defined in a future version of MATLAB % handles    empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. %      See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
本文档为【光栅衍射实验的MATLAB仿真】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_358746
暂无简介~
格式:doc
大小:154KB
软件:Word
页数:40
分类:互联网
上传时间:2019-02-09
浏览量:94