还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
基于MATLAB的单色光的干涉和衍射实验GUI设计报告feiignianPanel欢迎使用单色光的干涉和衍射实验开始实验胡莹宾制作2)点击“开始实验”,进入实验界面单色光的干涉与衍射实验3)选择实验类型及输入参数:4)单击“计算”按钮计算结果干涉亮纹间距lambdaXD/a=mm10,01225衍射巾央亮条纹半角宽lambda/a=mm单击“绘图”按钮:♦Jshiyaxx-|r|shiyam-Jr]xlPanel单色光的干涉与衍射实验请选择实验类型|干涉实验]PwielButtonGroup参数输入范围nm390-760波长iambda=|sooa=\~r~mm推荐0-5缝间距或缝宽光源与屏间距D=m推荐
0.3・
5.0—Panel实验原理图Panei-----------------------------------------------------计算结果干涉亮纹间距lambdaXD/a=
10.01225mm衍射巾央亮条纹半角宽lambda/a=mm输入参数超过范畴时(提示出错)单色光的干涉与衍射二Panel请选择实验类型干涉实验绘图区=ButtonGroup参数输入范围波长Fim390-760lambda=|200缝间距或缝宽a=mm推荐0-5|^2光源与屏间距推荐
0.3-5Panel单击“清除”按钮:shiyan」口1单色光的干涉与衍射实验I请选择实验类型干涉实验]绘图区dButtonGroup参薮输入范围波长390-760larnbda=|DDI推荐缝间距或缝宽a=|mm0-5推荐D=I------m
0.3-
5.0Panel实验原理图计算结果Panel计算干涉亮纹间距衍射巾lambdaXD/a=|mm绘图央亮条纹半角宽清除lambda/a=mm退出」商扇125JI星期二单击“退出”按钮及提示信息:Panel^^^^^_才类型干涉实验绘图区范围nm390-760lambda=|200推荐a=i^r mm0-5D=|i m推荐
0.3-
5.0Panel计算结果干涉亮纹间距lambdaXD/a=Io-mm
五、感想Matlab功能真的|很强大,并且感觉学得越多,不懂的I越多暑期尚有五一假期,我们小组参与数学建模大赛就用到了matlab,当时只是对mat lab解决数学问题有所理解,而学了这门课后,发现matlab在解决实际问题的能力是远远超乎我的想象的说它是工具,一点不假,并且掌握这一门工具对于我们将来搞研究或者工作都很有用处由于之前搞了一种小组项目,李老师说我们每人再做一种小作业就行了然后我回去就设计了一种简朴的GUI界面但是,虽说感觉界面比较简朴,但是调试起来也不是很轻松的记得当时最痛苦的是有天晚上,始终调试到晚上2点多,程序没错,就是不行,因此导致那天晚上也没睡好觉第二天一大早起来,又开始调试,可是还没调,竟意外地成功了,欣喜若狂
六、这次作业做得有点简朴,但快考试了,也没有精力再重新做一种更好的了
七、但我觉得做大作业只是一方面,更重要的是我们遇到问题独立解决问题的能力,我觉得这一点我做到了并且,在后来的工作学习中,也少不了会用到它因此,总体来说一一受益匪浅.【1】MATLAB教程及实训1/曹弋主编一一北京机械工业出版社,.4【2】MATLAB应用实例精讲/陈超主编电子工业出版社,.2概述
53.
83.6
五、感想15
六、参照文献15
一、概述MATLAB是目前世界上最流行的、应用最广泛的工程计算和仿真软件,它将计算、可视化和编程等功能同步集于一种易于开发的环境MATLAB重要应用于数学计算、系统建模与仿真、数学分析与可视化、科学与工程绘图和顾客界面设计等其中,顾客界面设计中,GUI开发环境是MATLAB
7.3为设计图形顾客界面提供了一种集成与开发环境,且广泛用于实验模拟软件开发中本次我所设计的是一种较简洁、清晰的有关单色光干涉与衍射实验的软件其能完毕特定条件下干涉条纹间距和衍射半角欧I计算,以及干涉条纹和衍射条纹的I绘制
二、前期准备干涉原理及程序
2.1干涉原理图程序如下ym=5*flag_lambda*flag_D/flag_a/1000000;xs=ym;n=101;ys=linspace-ym,ym,n;for i=l:nA Arl=sqrtysi-flag_a/1000/
2.2+flag_D2;Ar2=sqrtysi+flag_a/1000/
2.^2+flag_D2;phi=2*pi*r2-rl/f1ag_lambda/1000000000;AB i,:=4*cos phi/
2.2;endN=255;Br=B/
4.0*N;imagexs,ys,Br;「干涉条纹titlecolormapgrayN;衍射原理及程序
2.2衍射原理图程序如下ymax=3*flag_lambda*flag_D/flag_a/1000000;Ny=51;一ys=linspace ymax,ymax,Ny;NP=51;yP=linspace0,flag_a/1000NP;zfor i=l:NySinPhi=ysi/flag_D;alpha=2*pi*yP*SinPhi/flag_lambda/1000000000;SumCos=sumcosalpha;SumSin=sumsinalpha;Bi,:=SumCosA2+SumSinA2/NPA2;endN=255;Br=B/maxB*N;imageymax,ys,Br;,衍射条纹㊀;titl DcolormapgrayN;
三、设计阶段进入模块设计
3.1进入实验界面模块是用来与使用软件者交互欧I界面其中涉及某些诸如软件功能、实验设计者等基本信息点击“开始实验”进入实验重要知识点
3.
1.11音频欧I读取%读入声音文献11y=wavreadyinyue.wav;%由声卡播放声音sound y2图片时读取1imshow shanda.bmp3与下一种模块的I连接-----%Executes onbutton pressin pushbuttonl.function pushbuttonl_CallbackhObject eventdata,handlesz%hObject handleto pushbuttonlsee GCBO%eventdata reserved-to bedefined ina futureversion ofMATLAB%handles structurewithhandles anduser datasee GUIDATAclear allcloseShiyan遇到的问题及解决措施
3.
1.2图片时格式可为:.bmp.gif.jpg、.png、.hdf.pcx、.xwd.ico.curo而音频的格式只能为.au和.wav在调用音频时要注意音频不适宜过大,当时我调用了一种10M的音频,matlab运营不起来了因此,可以将爱慕的音频截取一小段如何关掉音乐在点击“开始实验”时.,但愿音乐也随之关掉,通过老师的解说,我懂得了在“close”语句之前,加上clear all就可将所有程序关掉如何与下一种GUI界面链接只需在“开始实验”之后加上下一种GUI界面的名字即可,这是从网上搜的在我们遇到不懂的问题,看书是一方面,问同窗,上网查资料也是较好的选择我觉得只要在最快H勺时间内解决问题,并能学会这种措施就是最佳日勺成果实验界面设计
3.21此界面由“实验类型选择”、“参数输入”、“实验原理图”、“绘图区”、“计算成果”、“操作按钮”六大板块构成界面简洁而清晰打底色选择日勺较浅日勺颜色,这样重点突出,且不会很乱提示文本加粗以及操作按钮明显、这样利于操作者操作实验类型选择此处用了一种下拉菜单Pop-Up Menu程序如下oglobal leixingleixing=get handles.popupmenul,value1;switch leixing%干涉实验case1axeshandles.axesl・1imshow ganshetupng axisfill axis off%衍射实验case2axeshandles.axeslimshow!yanshetu.pngaxis fillaxisoffotherwiseaxes handles.axeslimshowganshetu.pngaxis fillaxisoff此处定义了一种全局变量“leixing,一边后边好调用参数输入为了使GUI界面更有组织和层次,在控件多时以便布局调节,用来将有关口勺控件组织在一种区域里,设立了一种面板Panel背面日勺“实验原理图”、“绘图区”、“计算成果”、“操作按钮”均设有此面板此处,对波长lambda进行了范畴定义由于从实际角度来讲,如果波长超过了可见光范畴,我们是不会观测到干涉条纹和衍射条纹的I,因此有必要对其范畴进行定义背面“提示模块设计”会有具体阐明而“缝间距或缝宽”、“光源与屏间距”值取日勺不恰当,顶多图形绘制不是很清晰,故无需对其范畴进行限制,只是推荐了几种范畴实验原理图此处与“请输入实验类型”处相配合,运用“实验类型选择”处日勺函数,实现对实验原理图日勺调用这些原理图可以用CAD绘制为了突出效果,使线条清晰,推荐使用黑色底版,这样线条会更亮如果用白色底版,当图形较小时会看不清,影响效果绘图区同样与其他模块相配合,程序如下global leixingleixing=gethandles.popupmenul,value*;switch leixingcase1axeshandles.axes2ym=5*flag_lambda*flag_D/flag_a/1000000;xs=ym;n=101;ys=linspace-ym,ym,n;for i=l:nA Arl=sqrtysi-flag_a/1000/
2.2+flag_D2;Ar2=sqrtysi+flag_a/1000/
2.^2+flag_D2;phi=2*pi*r2-rl/flag_lambda/1000000000;Bi,:=4*cos phi/
2.A2;endN=255;Br=B/
4.0*N;imagexs,ys,Br;1干涉条纹title DcolormapgrayN;otherwiseaxes handles.axes2ymax=3*flag_lambda*flag_D/flag_a/1000000;Ny=51;ys=linspace-ymax,ymax,Ny;NP=51;yP=linspace0,flag_a/1000,NP;for i=l:NySinPhi=ysi/flag_D;alpha=2*pi*yP*SinPhi/flag_lambda/1000000000;SumCos=sumcosalpha;SumSin=sumsinalpha;人八人Bi,:=SumCos2+SumSin2/NP2;endN=255;Br=B/maxB*N;imageymax,ys,Br;,衍射条纹㊀;titl DcolormapgrayN;end先在绘图区拖进一种axis,调节其位置和大小当编写程序时,只需调用axes handles.axesXXaxis fillaxisoff就可以完毕绘图区口勺选择、使绘图布满设计的laxis,以及不显示axis的命令固然,我们可以在一开始日勺时候就可设立11set handles.axesXX,visible,off*使坐标图不显示5)计算成果与绘图区的命令类似,在不同的状况下,不同的区域输出不同成果,程序如下global leixingleixing=gethandles.popupmenul,value;switch leixingcase1j ianju=flag_lambda*flag_D/flag_a/1000000;fsethandles.edit6,*string,num2strj ianju;otherwisej iaokuan=flag_lambda/flag_a*1000;11sethandles.edit8,string,num2strj iaokuan;end计算模块设计
3.3计算模块工作过程大体为,先声明相应的全局变量,然后从实验类型中进行选择,调用参数,进行计算绘图模块设计
3.4与计算模块类似绘图模块设计
3.5此模块是很有必要的由于当我们做完一种实验后例如干涉实验,其数据和图形会对背面的实验产生影响因此,在做下一次实验时,需要清除上次实验程序如下1ff1sethandles.edit4,string0;1f1set handles.edit5string,0;f1f1set handles.edit6,string0;set handles.edit8,string1,T01;plot handles.axesl,
0.0;plot handles.axes2,
0.0;1set handles.axesl*visible,offf1set handles.axes2,*visible,off退出按钮其设计和fengmian界面中的“开始实验”按钮类似,只是没有链接其他界面而已提示模块设计
个人认证
优秀文档
获得点赞 0