当前位置:文档之家› 圆孔衍射实验仿真设计

圆孔衍射实验仿真设计

测试与光电工程学院计算机课程设计任务书电子科学与技术系070832 班22 学生:吴海课题名称:圆孔衍射实验仿真设计课题内容:1、课题设计要求:(1)分析圆孔衍射的物理过程,建立数学模型;(2)设计算法流程图;(3)编写程序,并对仿真结果进行分析。

2、工作进度安排:查阅资料,设计算法流程图 6月28日~ 7月4日第18周编写程序,撰写报告 7月5日~ 7月9日第19周系负责人:指导教师:钟可君时间:2010年6月21日[摘要]计算机仿真是应用电子计算机对系统的结构、功能和行为以及与系统控制的人的思维过程和行为进行动态性比较逼真的模仿,并通过建立某一过程和某一系统的模式,来描述该过程或该系统,为决策者提供有关这一过程或系统的定量分析结果,以此作为决策的理论依据。

本文主要研究了圆孔衍射理论,并对其中的不同圆孔的半径和不同的波长的情况对比与分析;然后根据圆孔衍射的数学计算公式,编写了各种干涉仿真的MATLAB程序代码;最后为了方便用户使用,本文设计了图形用户界面。

[关键词]MATLAB;计算机仿真;图形用户界面;圆孔衍射;分辨本领;仿真分析目录摘要一概述 (3)二圆孔衍射的基本原理 (4)三设计过程 (5)四设计过程的问题 (8)五心得体会 (8)六致谢 (9)附录一、概述1 本次计算机课程设计是在老师所给的众多课题中所选的课题,并在课题老师的要求下进行实际的操作和设计本次所选的课题,对于此次所选的课题其具有的意义为圆孔作为光学仪器基本形状,其衍射现象在光学研究中占有重要地位.光学衍射现象的实验演示需要特定的实验仪器和实验所,给研究工作带来许多不便。

另外,清晰的圆孔衍射图样,要求的圆孔半径很小,在一般实验中难以实现.基于MATLAB7软件强大的计算能力和可视化功能上的优势,利用计算机对圆孔衍射过程进行仿分析,可以使衍射现象直观地表现出来;通过调整实验参数,可以同步生成不同实验条件下的衍射图样,便于对衍射现象和像分辨本领进行比较分析;利用色图表现光强分布,使实验效果更为逼真,在实和研究中具有重要意义。

在本次的课题设计中主要要求完成对所选的课题进行界面的设计,这也是本次课程设计的难点,在设计的过程中我们遇到了很多棘手的问题,首先是对这个功能强大的软件很是陌生,并不会充分的使用,而且在这次的实验过程中由于这个软件的版本过多,对在于学习中又有很多盲点,并在实验过程中在各个软件的安装上又遇到了新的问题,确实是软件功能过于强大,整个安装软件很大,在安装过程中又要摸索着前进,不断的尝试,最终才安装上MATLAB7软件。

在此之后就具有了一定的方向,解决问题就要简单一些。

并最终完成了所要求的设计。

2 仿真工具的简单介绍:本此仿真设计是基于MA TLAB软件,MA TLAB 是Matrix Laboratory的缩写。

除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MA TLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。

在新的版本中均嵌有对C,FORTRAN等语言的接口,可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。

MA TLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。

附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。

MA TLAB的基础是矩阵计算,但是由于他的开放性,并且mathwork 也吸收了像maple等软件的优点,使MATLAB成为一个强大的数学软件。

MATLAB具有以下几个特点:(1) 友好的编译平台和编译环境(2) 简单易用的程序语言 (3) 强大的科学计算机数据处理能力 (4) 出色的图形处理功能(5) 应用广泛的模块集合工具箱(6) 实用的程序接口和发布平台(7) 应用软件及用户界面开发二、圆孔衍射的基本原理(一)夫琅和费衍射理论衍射是光的波粒二象性中波动性的表现,是光的基本属性之一。

其主要表现在光波在遇到一定尺寸的障碍物时不沿直线传播而绕过障碍物继续传播。

图1光衍射原理图如图1,假设光在衍射屏∑平面上的某个波前点P0和观察点P的坐标分别是(x0,yo)和(x,y),当衍射屏相距光源以及观察点无限远时,即P0和P同时满足远场条件: | z|≥x2/λ、y2/λ和|z|≥x20/λ、y20/λ时,光场复振幅的分布满足夫琅和费衍射公式(1):U(P) =-ieikzλz ∑U0(P0)exp(-ikxx0+yy0z)dx0dy0公式中z是衍射屏和观察屏的距离,λ为光波波长, U0(P0)为光在P0处的复振幅。

因此,观察屏上任意一点P的光强分布为:I(P) =| U(P) |2。

对于不同情况的衍射屏,只要对衍射孔进行积分,理论上都是可以求出观察屏上任意一点P的光强分布I(P),从而可以对光强的分布进行定量研究。

夫琅和费圆孔衍射仿真当衍射孔为半径为r的圆孔时,根据公式(1),可以导出其夫琅和费衍射光强公式(2)为:I(P) = I0[2J1(m)m]2式中m=2rpiλsina, a是衍射角, J1(x)是一阶贝塞尔函数。

为了方便,对衍射角做近似处理,a≈x2+y2/f,其中f是透镜的焦距。

(二)圆孔衍射的实验装置与数学模型的、建立图2 圆孔夫琅禾费衍射装置图圆孔夫琅禾费衍射装置如图2所示,S为点光源,位于透镜L1的焦平面的主光轴上,光屏E置于焦距为D的透镜L2的焦平面上.圆孔P的半径为R.入射光波长为λ.射圆孔时,沿衍射角θ方向传播的次波在光屏Q(x,y)处的光强分布为[1]Ia= I0(J1(2m)m)2.其中:m=πRλsina,sina=x2+y2x2+y2+D2;I0为分常数.三、设计过程(一)方案选择本设计根据圆孔衍射的数学计算公式,编写实现圆孔衍射图样的MATLAB 程序,并设计出界面程序。

在本次实验的中最最要的就是编写界面而用户界面的设计有多种方案,尤其是现在新版本的MATLAB软件,其软件的兼容性更强,可以直接使用程序编写的方式建立界面,可以用MA TLAB结合VB设计出界面,还可以使用MA TLAB GUI来设计界面。

本设计是以MATLAB GUI来设计界面,即直接调用MATLAB库中的函数以编写M文件的方式来设计界面。

此方法简便灵活,程序代码设计简单,编译也更为容易。

(二)、图形界面(GUI)设计与衍射图样的生成1 用MATLAB GUI设计光学仿真界面,主要包括以下几个步骤:(1)构思草图,编排控件的布局。

打开Matlab程序,在file菜单中选择new gui,打开guide设计界面模板,界面模板左边的各个控件可以直接用鼠标拖到编辑框。

(2)设置各控件的属性。

比如设置各控件的标识(Tag),颜色,字体等,尤其要对应程序中的参数设置,对Tag进行设计。

(3)代码的设计。

关键是OpeningFcn(初始界面函数)和控件的Callback(回调函数)代码的设计。

初始界面函数即设定个参数的初始值,可根据实际情况设定。

回调函数是核心,是对界面控件触发时的事件响应函数。

光学实验仿真界面“运行”控件的回调函数设计流程是:根据设计步骤,构思草图,在编辑器中布置控件,坐标轴Axes1用来显示实验示意图,Axes2和 Axes3分别用来显示圆孔衍射图样和圆孔衍射光强分布图,文本框用来输入相应的参数,如图3所示,界面可直接输入参数有:波长 、半径0r 。

图 3 圆孔衍射实验仿真设计2 实验的程序设计在自生成的function ykys_OpeningFcn(hObject, eventdata, handles, varargin)下设置参数并同时显示衍射原理图set(mbda_edit,'String',0.0000005);用linspace()设置x,y 方向的范围用函数实现光强的计算调用函数显示光强立体图调用imagesc()函数显示仿真图读取界面参数set(handles.a_edit,'String',0.00001);I1=imread('4.jpg','JPEG');axes(handles.axes1)image(I1)在function pushbutton1_Callback(hObject, eventdata, handles)下编写主程序Lambda=str2num(get(mbda_edit,'String'));a=str2num(get(handles.a_edit,'String'));f=600;x=linspace(-20,20,100);y=x;[X,Y]=meshgrid(x,y);seta=atan(sqrt(X.^2+Y.^2)/f);alpha=2*pi*a*sin(seta)/Lambda;I=(2*besselj(1,alpha)./alpha).^2;%一阶贝塞尔函数NCL=255;Ir=I*NCL;colormap('gray');axes(handles.axes2),image(x,y,Ir*5);axis square;xlabel('圆孔衍射图样')axes(handles.axes3),plot3(X,Y,I)xlabel('圆孔衍射光强分布')axis square;保存后设计“运行”控件的回调函数的代码,在界面中输入参数,点击“运行”控件,可得到圆孔衍射实验仿真设计结果,如图4所示。

图4圆孔衍射实验仿真设计一改变参数设置波长=6e-007,半径=2e-005 后运行的结果如图5所示图5圆孔衍射实验仿真设计二3 分析与总结:从上面的分析可以看到,MATLAB GUI功能强大并且设计使用方法比较简单,可以根据需要设计丰富的界面,并由此直接在界面中输入和改变参数而不需要改变原程序,这样有利于分析和比较在不同参数条件下的实验结果,把抽象的光学问题进行简明直观的动态展示,为光学理论和实验教学提供了方便,为相关课件的设计提供了新途径。

四、设计过程的问题在整个计算机课程设计的过程中遇到了很多的问题,首先是对于软件的认识很陌生,这是最主要的问题,对于这个问题就只有通过突击学习来弥补了,在图书馆查阅资料并在网上搜索所要的资料,在通过学习后才不断的对软件有了一定的了解,当然还有老师的指点和教导,最终对MATLAB软件能够有了一定的操作能力。

相关主题