圆孔衍射实验仿真设计
圆孔衍射图样

二者常常同时存在。 例如,不是极细缝情况下的双缝干涉,就应该 既考虑双缝的干涉,又考虑每个缝的衍射。
2024/10/13
26
光学仪器的分辨本领
二、圆孔夫琅禾费衍射
S
D
圆孔衍射图样:由一个中央亮斑和一组明暗相间的同心圆环组成;
2024/10/13
k 1 k 3.3
d
最高3级; 共7条谱线
43
P398 例题10-2 用波长=546.1nm的绿光垂直照射每厘米有3000条刻 线的光栅,该光栅的刻痕宽和透光缝宽相等,问:
能看到几条光谱线?各谱线衍射角多大?
2024/10/13
44
作业: P401,选择题:1,2,8,9 P404, 一. 1
R 1 D
1.22
人眼瞳孔:D =2~6mm
=68~23
望远镜: DM = 6m
= 0.023
例题:汽车二前灯相距1m,设 解:人眼的最小可分辨角
=500nm 人眼瞳孔直径为 5mm。
问:1)人眼的最小分辨角?
2)对迎面而来的汽车,离多远能 分辨出两盏亮灯?
0
1.22
D
L0 1m
L 8200m
1m
L?
2024/10/13
32
望远镜: 不可选择,但 D R
▲ 世界上最大的光学望远镜: D=8m
建在了夏威夷山顶。 ▲世界上最大的射电望远镜:
D = 305 m 建在了波多黎各岛的
Arecibo,能探测射到整个
地球表面仅1012W的功率,
也可探测引力波。
2024/10/13
33
实验报告之仿真(光的干涉与衍射)

大学物理创新性试验实验项目:单缝﹑双缝﹑多缝衍射现象仿真实验专业班级:材料成型及控制工程0903班姓名:曹惠敏学号:090201097目录1光的衍射2衍射分类3实验现象4仿真模拟5实验总结光的衍射光在传播路径中,遇到不透明或透明的障碍物,绕过障碍物,产生偏离直线传播的现象称为光的衍射。
光的衍射现象是光的波动性的重要表现之一.波动在传播过程中,只要其波面受到某种限制,如振幅或相位的突变等,就必然伴随着衍射的发生. 然而,只有当这种限制的空间几何线度与波长大小可以比拟时,其衍射现象才能显著地表现出来.所有光学系统,特别是成像光学系统,一般都将光波限制在一个特定的空间域内,这使得光波的传播过程实际上就是一种衍射过程.因此,研究各种形状的衍射屏在不同实验条件下的衍射特性,对于深刻理解衍射的实质,研究光波在不同光学系统中的传播规律分析复杂图像的空间频谱分布以及改进光学滤波器设计等具有非常重要的意义.随着计算机技术的飞速发展, 计算机仿真已深入各种领域。
光的干涉与衍射既是光学的主要内容 , 也是人们研究与仿真的热点。
由于光波波长较短,与此相应的复杂形状衍射屏的制作较困难,并且实验过程中对光学系统及环境条件的要求较高.因而在实际的实验操作和观察上存在诸多不便. 计算机仿真以其良好的可控性、无破坏、易观察及低成本等优点,为数字化模拟现代光学实验提供了一种极好的手段. 本次实验利用MATLAB软件实现对任意形状衍射屏的夫琅禾费衍射实验的计算机仿真。
衍射分类⒈菲涅尔衍射菲涅尔衍射:入射光与衍射光不都是平行光的衍射。
惠更斯提出,媒质上波阵面上的各点,都可以看成是发射子波的波源,其后任意时刻这些子波的包迹,就是该时刻新的波阵面。
菲涅尔充实了惠更斯原理,他提出波前上每个面元都可视为子波的波源,在空间某点P的振动是所有这些子波在该点产生的相干振动的叠加,称为惠更斯-菲涅尔原理。
惠更斯-菲涅尔原理能定性地描述衍射现象中光的传播问题,成为我们解释光的各类衍射现象的理论依据。
夫琅禾费圆孔衍射

基于MATLAB的课题设计:
意义
光的衍射现象是光的波动性的一种表现, 通过对光的衍射现象的研究,可以深入具体 地了解光的波动性。本课题研究夫琅禾费圆 孔衍射,对于深刻理解衍射的实质,研究光 波在不同光学系统的传播规律,分析复杂图 像的空间频谱分布以及改进光学滤波器设计 等具有非常重要的意义。课题利用MATLAB 的数值计算和绘图能力,根据衍射场的理论 公式,计算得出光强分布并绘制光强分布曲 线及衍射图样,便于对衍射图样再现。
开题报告 根据开题报告情况继续查阅文献资料 写出论文第一稿
指导老师批阅论文第一稿
修改论文,并定稿
指导教师评定成绩,评阅老师评阅论文,写出评阅意见。 答辩
参考文献
[ 1] 赵凯华, 钟锡华.光学(上册)[M].北京:北京大学出版社,1984:210-213. [ 2] 姚启钧.光学教程[M].北京:高等教育出版社,2002:82-132. [ 3] E.赫克特,A.赞斯.光学(下册)[M].北京:人民教育出版社,1980:682-807. [ 4] M.波恩,E.沃尔夫.光学原理(第七版,上册)[M].北京:电子工业出版社,2005:342-400. [ 5] 马莉.MATLAB语言实用教程[M].北京:清华大学出版社,2010. [ 6] E.库宁著,秦克诚译.计算物理学[M].北京:高等教育出版社,1993:1-64. [ 7] 裴鹿成,张孝泽. 蒙特卡罗方法及其在粒子输运问题中的应用[M].北京:科学出版社,1980: 1-18. [ 8] 飞思科技产品研发中心.MATLAB7基础与提高[M].北京:电子工业出版社,2005. [ 9] 薛定宇.控制系统计算机辅助设计——MATLAB语言及其应用.北京:清华大学出版社,1996. [10] Dongarra J J, Bunch J R, Moler C B, Stewart G W. LINPACK user’s guide, Philadelphia: Society of Industrial and Applied Mathematics(SLAM), 1979. [11] Phyccis J.Fleming. PHYSICS. Addiso-wesley Publishing Company, 1978. [12] Ogata K.Solving control engineering problems with MATLAB, 1944. [13]Armstrong E S.ORACLSa design system for linear multivariable control. New York: Marcel Dekker Inc. , 1980.
2.7圆孔衍射(Diffraction by Circular Aperture)

衍射限制了透镜的分辨能力的示意图。
对两个象斑,怎么算可分辨,怎么算不可分辨?有没有定量 的标准? 3、瑞利判据 对于两个相等光强的非相干物点, 如果其一个象斑的 中心恰好落在另一象斑的边缘(第一暗纹处), 则此两物点被认为 是刚刚可以分辨。
刚可分辨 不可分辨 非相干叠加
1.0
0.8
S1 D * * S2 爱里斑的半角宽为1
直径305m,能探测射到整 个地球表面仅10-12W的功 率,也可探测引力波。
显微镜:
D R 1.22
D不会很大,可
(紫光显微镜) (电子显微镜)
1
R
电子的波长很小:0.1 Å-1Å, ∴分辨本领 R 很大。
用电子显微镜 观察一种小蜘 蛛的头部
用电子显微镜观察红 血球 (假彩色)
= 1 0 I
1.22 1 sin 1 D
假设按瑞利判据的最小分辨角为
它就是两个衍射斑的角距离, 也就是等于爱里斑的半角宽:
1 1.22
D
定义:透镜的分辨本领
D R 1.22
1
D R
D R 1.22
Ip I0
1
I 0 1
中央极大 第一极小 第一次极大 第二极小 第二次极大 第三极小
0
0.610 0.819 1.116 1.333 1.619 1.847
R
0
0.0175
R
R
0
0.0042
sin 20 1.333 sin 3 1.619 sin 30 1.847
物点
象斑
物(物点集合) 象(象斑集合) 透镜成象清楚不清楚,要考虑物镜衍射的因素。 注:目镜的放大倍数本质上不能解决清晰不清晰 的问题
利用MATLAB语言进行光学衍射现象的仿真

利用MATLAB语言进行光学衍射现象的仿真储林华(安庆师范学院物理与电气工程学院安徽安庆246011)指导教师:张杰摘要:光的衍射是光的波动性的一种重要表现,因此对光的衍射现象的研究,不仅具有重要的理论意义,而且在光学仪器研制和成像分析等诸多实际应用方面均有重要价值,但是其衍射光强的计算非常复杂,对实验条件的要求非常高,通常情况下很难得到满意的效果,严重影响了光学的教学。
本文从衍射的相关理论知识出发,首先介绍了惠更斯--菲涅耳原理及其数学表示形式,然后重点讨论了单色光经各种对称光学衍射元件(单缝,双缝,光栅,圆孔)的夫琅和费衍射情况,并分别给出了它们在焦平面上的衍射光强计算公式,最后利用科学计算软件MA TLAB对光的衍射现象进行了仿真,所得到的图样细致逼真,使整个物理过程变得直观形象,且与实验所得到的衍射图样进行了比较,两者吻合得很好,从而为光学的理论分析和实验教学提供了一种新的途径。
关键词:光的衍射,光栅衍射,圆孔衍射,Matlab,计算机仿真0 引言光的衍射现象是光具有波动性的重要特征,因此对衍射现象的研究无论在理论上还是在实践中都有很重要的意义。
对光的衍射现象的研究,始于17世纪,当时著名的荷兰科学家惠更斯提出了光是一种波的假说,并根据波动理论提出了光的传播理论——即惠更斯原理[1],根据这一原理,他解释了光的反射定律和折射定律,给出了折射率的意义,光在两种介质中的速度比。
到了19世纪,法国年轻的科学家菲涅耳,根据叠加原理把惠更斯原理进一步具体化,给出了光在传播过程中光强学计算公式,这就是著名的惠更斯-菲涅耳原理[2]。
但由于在实际应用过程中,障碍物形状的不规则性,导致光强的计算公式几乎无解析解,只能进行一些数值计算。
针对衍射计算中出现的困难,近代的研究人员想到运用科学的计算软件MA TLAB,利用其较强的绘图和图象功能,编写计算程序,使得多种衍射元件(单缝,双缝,光栅,矩孔,圆孔)下的衍射现象得以在计算机中形象地被模拟仿真。
圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学

工程光学综合练习-----圆孔、矩孔的菲涅尔衍射模拟圆孔和矩孔的菲涅尔衍射模拟一、原理由惠更斯-菲涅尔原理可知接收屏上的P点的复振幅可以表示为其中为衍射屏上的复振幅分布,为倾斜因子。
根据基尔霍夫对此公式的完善,有设衍射屏上点的坐标为(x1, y1),接收屏上点的坐标为(x, y),衍射屏与接收屏间距离为z1,当满足菲涅尔近似条件时,即此时可得到菲涅尔衍射的计算公式把上式指数项中的二次项展开,并改写成傅里叶变换的形式,可以写成上式为菲涅尔衍射的傅里叶变换表达式,它表明除了积分号前面的一个与x1、y1无关的振幅和相位因子外,菲涅尔衍射的复振幅分布是孔径平面的复振幅分布和一个二次相位因子乘积的傅里叶变换。
相对于夫琅和费衍射而言,菲涅尔衍射的观察屏距衍射屏不太远。
在菲涅尔衍射中,输入变量和输出变量分别为衍射孔径平面的光场分布和观察平面的光场以及光强分布,考虑到这三个量都是二维分布,而且Matlab主要应用于矩阵数值运算,所以本程序选择用二维矩阵来存储衍射孔径平面和观察平面的场分布,并分别以矩阵的列数和行数来对应平面的直角坐标值(x, y)以及(x1, y1)。
二、圆孔菲涅尔衍射用MATLAB分别构造表示衍射屏和接收屏的二维矩阵。
注意使两矩阵阶次相同,考虑到运算量的要求,采样点数不能过多,所以每个屏的x和y方向各取200到300点进行运算。
根据式(4),选取合适的衍射屏和接收屏尺寸和相距的距离,模拟结果如下:取典型的He-Ne激光器波长λ=632.8nm,固定衍射屏和接收屏尺寸和相距的距离,分别取不同的圆孔半径,得到以下三组衍射图样,其圆孔半径分别为12mm,20mm,50mm图1(r=12mm)图2(r=20mm)图3(r=50mm) 三、矩孔的菲涅尔衍射步骤与上述相同,仅需改变与衍射屏形状对应的矩阵。
这里选择矩孔的长宽相等,分别为15mm,20mm,30mm,其衍射图样及强度分布如图4、5、6图4(a=b=15mm)图5(a=b=20mm)图 6(a=b=30mm)四、MATLAB 程序%所有长度单位为毫米lamda=632.8e-6; k=2*pi/lamda;z=1000000;%先确定衍射屏N=300; %圆屏采样点数a=15;b=15;[m,n]=meshgrid(linspace(-N/2,N/2-1,N));I=rect(m/(2*a)).*rect(n/(2*b));q=exp(j*k*(m.^2+n.^2)/2/z);subplot(2,2,1); %圆孔图像画在2行2列的第一个位置 imagesc(I) %画衍射屏的形状colormap([0 0 0; 1 1 1]) %颜色以黑白区分axis imagetitle('衍射屏形状')L=300;M=300; %取相同点数用于矩阵运算若为圆孔,方框内替换为以下程序 r=12;a=1;b=1; I=zeros(N,N); [m,n]=meshgrid(linspace(-N/2,N/2-1,N)); D=((m-a).^2+(n-b).^2).^(1/2); i=find(D<=r); I(i)=1; %孔半径范围内透射系数为1[x,y]=meshgrid(linspace(-L/2,L/2,M));h=exp(j*k*z)*exp((j*k*(x.^2+y.^2))/(2*z))/(j*lamda*z);%接收屏H =fftshift(fft2(h));B=fftshift(fft2(I)); %圆孔频谱G=H.*B; %公式中为卷积,空间域中相卷相当于频域中相乘U= fftshift(ifft2(G)); %求逆变换,得到复振幅分布矩阵Br=(U/max(U)); %归一化subplot(2,2,2);imshow(abs(U));axis image;colormap(hot)% figure,imshow(C);title('衍射后的图样');subplot(2,2,3);mesh(x,y,abs(U)); %画三维图形subplot(2,2,4);plot(abs(Br))。
利用MatlabGUI模拟圆孔衍射

总第272期2012年第6期计算机与数字工程Computer &Digital EngineeringVol.40No.6151利用Matlab GUI模拟圆孔衍射*李芳菊 王菊霞(渭南师范学院物理与电气工程学院 渭南 714000)摘 要 在惠更斯-菲涅尔原理的基础上,建立了衍射仿真实验的数学模型,分析了圆孔的夫琅禾费衍射图样及其强度分布,并实现了对圆孔衍射的仿真。
关键词 Matlab GUI;夫琅禾费衍射;圆孔衍射中图分类号 O436.1Simulation of Aperture Diffraction Based on MATLAB GUILI Fangju WANG Juxia(School of Physics and Electrical Engineering,Weinan Teachers University,Weinan 714000)Abstract Based on the basic theory of the Fraunhofer diffraction,the mathematical model of diffraction experiment simulation was es-tablished,and the aperture diffraction of Fraunhofer diffraction were analyzed.Finally,the simulation of aperture diffraction was successfullycompleted.Key Words MATLAB GUI,Fraunhofer diffraction,aperture diffractionClass Number O436.11 引言Matlab语言是由墨西哥大学计算机系任主任的CleveMoler教授开发的一种专门作矩阵运算的数学软件[1~2]。
圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学

圆孔矩孔的菲涅尔衍射模拟(m a t l a b实现)-工程光学-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII工程光学综合练习-----圆孔、矩孔的菲涅尔衍射模拟圆孔和矩孔的菲涅尔衍射模拟一、原理由惠更斯-菲涅尔原理可知接收屏上的P点的复振幅可以表示为其中为衍射屏上的复振幅分布,为倾斜因子。
根据基尔霍夫对此公式的完善,有设衍射屏上点的坐标为(x1, y1),接收屏上点的坐标为(x, y),衍射屏与接收屏间距离为z1,当满足菲涅尔近似条件时,即此时可得到菲涅尔衍射的计算公式把上式指数项中的二次项展开,并改写成傅里叶变换的形式,可以写成上式为菲涅尔衍射的傅里叶变换表达式,它表明除了积分号前面的一个与x1、y1无关的振幅和相位因子外,菲涅尔衍射的复振幅分布是孔径平面的复振幅分布和一个二次相位因子乘积的傅里叶变换。
相对于夫琅和费衍射而言,菲涅尔衍射的观察屏距衍射屏不太远。
在菲涅尔衍射中,输入变量和输出变量分别为衍射孔径平面的光场分布和观察平面的光场以及光强分布,考虑到这三个量都是二维分布,而且Matlab主要应用于矩阵数值运算,所以本程序选择用二维矩阵来存储衍射孔径平面和观察平面的场分布,并分别以矩阵的列数和行数来对应平面的直角坐标值(x, y)以及(x1, y1)。
二、圆孔菲涅尔衍射用MATLAB分别构造表示衍射屏和接收屏的二维矩阵。
注意使两矩阵阶次相同,考虑到运算量的要求,采样点数不能过多,所以每个屏的x和y方向各取200到300点进行运算。
根据式(4),选取合适的衍射屏和接收屏尺寸和相距的距离,模拟结果如下:取典型的He-Ne激光器波长λ=,固定衍射屏和接收屏尺寸和相距的距离,分别取不同的圆孔半径,得到以下三组衍射图样,其圆孔半径分别为12mm,20mm,50mm图 1(r=12mm)图 2(r=20mm)图 3(r=50mm)三、矩孔的菲涅尔衍射步骤与上述相同,仅需改变与衍射屏形状对应的矩阵。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
测试与光电工程学院计算机课程设计任务书电子科学与技术系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软件能够有了一定的操作能力。