




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学能力拓展训练报告书目录1技术要求12基本原理12.1法布里-珀罗干涉仪原理12.2法布里-珀罗干涉仪条纹分布22.3内插薄介质片的法布里-珀罗干涉仪33建立模型描述53.1干涉图样叠绘53.2可视化界面的制作73.3函数的编写及关联114模块功能分析或源程序代码124.1编辑框的处理代码:124.2图形输出按钮代码124.3清空按钮的代码144.4初始化代码154.5完整代码165调试过程及结论256心得体会287参考文献29F-P干涉仪特性的仿真分析1 多光束干涉的理论分析1.1 多光束干涉的光强分布图1 平行平板的光程差设第一束透射光的复振幅为 ,初位相为零,光波在平板内表面的
2、反射系数为r ,由于在平板内光波传播引起的相邻相干光束的位相差为 ,于是各透射光束的复振幅可表示为:,。 由于各相干光束传播平行,因此干涉定域面在无穷远,必须在透镜后焦面上观察。注意到,再干涉条纹定域面上的合振幅为: (1)干涉场的强度为: (2)在上式中,设 ,表示第一束透射光束的强度。设光波在平板两内表面的透射率 ,于是和入射光强度之间的关系为。再设平板内表面的反射率为 ,在不计损失时,有 ,于是透射光的多光束干涉强度可表示为: (3)反射光的多光束干涉强度可表示为: (4)设计一个用户界面,能直观显示内插透明薄介质片的法布里-珀罗干涉仪的干涉图形。要求:(1) 有用户任意输入自变量的界面
3、;(2) 根据物理光学中法布里-珀罗干涉仪原理,设计出内插透明薄介质片的参数;(3) 用Matlab(或C语言)来进行模拟;通过给定介质片厚度,内插深度等,可以弹出绘图窗口,显示出该参数下,法布里-珀罗干涉仪的干涉图形。2 基本原理2.1 法布里-珀罗干涉仪原理图2 画出了法布里-珀罗干涉仪的光路图。它的核心部分F-P是两块略带楔角,内表面平行并镀有高反射膜的玻璃或石英平板,由它们构成一个具有高反射率表面的空气或介质平行平板。F-P外表面的倾斜是为了使得反射光偏离透射光的视场,从而避免杂散光干扰。在实际仪器中,两块楔形板分别安装在可以微调的镜框内,通过方位调节,以保证两平板内表面严格平行。此外
4、,靠近光源S的一块平板可以在精密导轨上平移,以改变两平板之间介质的厚度d。在有些应用中,使用固定间隔圈把两板间的距离固定,则称之为法-珀标准具。图2 法布里-珀罗干涉仪2.2法布里-珀罗干涉仪条纹分布由等倾干涉的理论知识可知,干涉场的等强度线即是等位相差线,然而当F-P确定以后,位相差只和光线入射角i有关系,即等位相差线是等入射角i光线的集合。只要i相等,位相差则相等,对应考察点的干涉强度也相等。凡是入射角i为同一个值的全部光线在定域面上形成同一级干涉条纹,所以法-珀干涉仪为等倾干涉仪。对应条纹为等倾干涉条纹。F-P由准单色扩展光源S和准直透镜L1照明。透镜L2将无穷远定域面上的干涉条纹成像到
5、它的后焦面(即屏幕)上,这样观察到的干涉条纹是一系列明暗相间的同心圆环组成的多光束等倾干涉条纹。此多光束干涉条纹与双光束干涉条纹比较,亮纹会更亮更锐。并且,若增加d,条纹半径r也会随之变化,会看到屏幕上的条纹扩大的现象;同理减小d,会看到屏幕上的条纹收缩现象。其透射光强度分布公式为: (5)其中I0为入射光强度,为楔形板内表面的反射率,为入射角i确定时,在F-P多光束干涉装置中,相邻相干光束的位相差,其表达式为: (6) 其中nf表示F-P所夹的介质的折射率,i为入射角,0表示入射光波长,d为F-P厚度,假设插入的透明薄介质片的厚度为d0,折射率为n,插入的深度为aa。如果薄介质中有光透过,则
6、必然会使得屏幕上的干涉图形发生变化。 在此,为了便于分析干涉图案的变化,我们可以做一个等效:首先,F-P的夹层折射率为nf,薄片的折射率为n(不妨认为nnf),于是下半部分有介质片,等效为总厚度是(d+(n-nf)*d0)的夹层,而上半部分仍为厚度d的夹层。等效为图(3)。图形变化分析:为了简化问题,不考虑边界上的光线变化,并且假设楔形板和介质板均为无限大平面。在屏幕上的光分布范围仅取决于透镜L1的口径R0以及透镜L2的口径,上半部分为厚度d的干涉图样,下半部分为厚度dx=(d+(n-n_f)*d0)的干涉图样。由于假设nn_f,则dxd,图样为上半部分条纹扩大。上半部分干涉图样的相对光强分布
7、公式为: IP0=1-2(1-)2+4sin22d*f/r2+f2=1-2(1-)2+4sin22d*f/(x2+y2)+f2;下半部分干涉图样的相对光强分布公式为: IP=1-2(1-)2+4sin22dx*f/r2+f2=1-2(1-)2+4sin22dx*f/(x2+y2)+f2;其中IP表示相对光强度IT/I0,r为条纹半径,x,y为以屏幕中心为原点建立的坐标系的坐标r2=x2+y2;上下两部分唯一的区别在于F-P夹层的厚度不一样。可知干涉图样与以下参数有关:夹层折射率n,反射率,焦距f,厚度d,波长0,介质厚度d0,介质折射率n0。由得到的图案可以计算亮纹的宽度和细度,法-珀干涉仪多
8、光束等倾干涉亮纹宽度的定义是:亮纹中心两侧强度降低为最大强度一半的两点之间的间隔,用b表示。计算后可以得到亮纹宽度公式:b=2(1-);可见越接近1,b越小,亮纹越细。描述亮纹宽窄,还可以采用“细度”的概念。细度F的定义为:亮纹相对宽度的倒数,即:F=2b=1- ,可见越大,F越大,亮纹越窄。3建立模型描述3.1干涉图样叠绘由以上的分析可知,要得到插入介质片以后的干涉图样,必须画出两幅干涉图的上下两个部分,再进行叠加。画出 IP0 的图样,但是只留住上部分,下部分为0;画出IP的干涉图样,但是只留住下部分,上部分为0;然后将得到的两幅图叠加成一幅图,即可得到插入介质片以后的干涉图样。过程如下所
9、示:图(4)两个图形叠绘的过程图(5)Ip0图样(左)和Ip图样(右) 图(6)图形叠绘如上为了简化模型,不妨假设介质片从中间处插入,并且假设介质片从下往上推进,逐步挡住光线(光当然可以透过去,为了简便这样说),没有挡住的部分按照 IP0 分布,挡住的部分按照IP 分布,然后用一张图进行显示。一般情况下法-珀干涉仪位于空气中,于是认为nf=1;以下均以此为编程和绘图基础。并且为了程序的编写方便,将理论公式中的字母进行改写(0=lmd,=p,b=lwkd(亮纹宽度),F=lwxd(亮纹细度),dx=dxhd(等效厚度)。本次模拟用MATLAB语言进行,主要是用MATLAB语言创建一个可供人机交互
10、的可视化界面,并且可以利用MATLAB强大的二维,三维绘图功能进行干涉图样的绘制。工作大致可以分为两部分:第一,可视化界面的制作;第二,各种绘图以及计算参数的具体函数的编写及控件与函数的关联过程。3.2可视化界面的制作MATLAB的图形用户界面(GUI)通过窗口,图标,按钮,菜单,文本等图形对象构成用户界面。用户选中或激活这些对象来导致某个操作或变化的发生,从而实现用户和计算机或计算机程序之间的交互操作。这次仿真利用的是MATLAB提供的功能强大的GUIDE模版,该模版可以自动生成相应的M文件框架,大大简化了编写用户图形界面程序的工作,可以直接打开M文件进行修改,编写自己的代码。在MATLAB
11、的工具条上,单击GUIDE命令图标,来启动图形界面创建工具GUIDE,如图:图(7)启动GUIDE启动后,系统弹出GUIDE的启动对话框。该对话框主要包括两个选项面板,其中一个创建新的用户图形界面(creat new GUI)。在该页面中包含了4种类型的GUI模版:默认的空白GUI模版(blank GUI),带有unicontrol控件的GUI模版,带有坐标轴和菜单的GUI模版,以及模态对话框模版。由于是自己设计界面,所以选择空白的模版来创建图形用户界面。选择后,初始化得到空白图形用户界面对象的编辑界面。 图(8)创建GUI 图(9)空白GUI可以在该界面的file菜单中选择预设值选项pref
12、erence进行设置编辑界面的属性,可以设置的属性包括显示工具条,显示组件对象名称,在窗口标题中显示文件后缀,在窗口标题中显示文件路径,以及为新生成的回调函数添加注释等。 图(10)预设值 图(11)拖动改变界面大小本次模拟仿真的人机交互的最终界面如下: 图(12)最终实现的人机界面在图形界面编辑对话框中,单击该界面的右下角,用鼠标拖动改变界面的大小,如图(9)。如果需要精确控制图形界面的大小和范围,则可以单击属性编辑器按钮,系统弹出属性查看对话框,在该属性对话框中,选择Units属性,在弹出的列表中选择characters;然后在position属性中,设置图形用户界面的宽和高为适当的大小。
13、图(13)属性查看器规划好自己要的最终界面后,开始制作,由图(10)知道,需要用10个编辑框,10个静态文本框,4个下压按钮,2个面板以及一个坐标轴。其中输入的参数使用7个编辑框(如图中,分别为焦距f,波长lmd,反射率p,插入深度aa,介质折射率n,F-P厚度d,介质板厚度d0),输出的参数使用3个编辑框(亮纹宽度lwkd,亮纹细度lwxd,等效厚度dxhd);两部分的编辑框分别位于两个面板上;按钮1用作计算参数,按钮2用作绘制二维图形,按钮3用作清空输出的参数(但保持输入框的默认值不变),按钮4用作绘制三维图形;坐标轴用于显示干涉图样。首先向图形编辑界面上添加4个按钮pushbutton对
14、象。添加时,直接在GUIDE编辑对话框的左侧单击组件后,在编辑界面上单击,即可将该对象放在编辑界面上。添加其他对象的方式与此相同。在图形编辑界面上,添加面板对象panel,并将前面添加的10个编辑框对象分别拖动到两个面板中。选择时,按下ctrl键,同时用鼠标左键单击将所有对象选中,在菜单layout中选择snap to grid使得对象吸附到网格线。 图(14)添加按钮 图(15)添加编辑框 图(16)添加面板 图(17)添加坐标轴在使得控件对象对齐时,可以在工具栏中单击对其按钮对齐所选择的对象,在系统弹出的对话框中,设置水平方向和竖直方向的对齐方式以及对象的分布间隔。同时辅以方向键进行微调。
15、同样的方式,从组件栏中,选择静态文本框(static text)和坐标组件(axes)放在图形用户界面的适当位置。 图(18)设置对齐 图(19)添加静态文本框完成所有可视化控件的布局以后,设置组件的属性,在属性查看器中修改控件的string属性;对所有控件修改string属性,包括静态文本框。 图(20)string属性 图(21)tag属性经过以上的操作得到可视化界面为:图(22)界面3.3函数的编写及关联MATLAB中的绘图函数很多,本次使用的是image()函数绘制二维图形,用surf()函数绘制三维图形。由于要使得两个光强函数IP0和 IP 切割并且叠绘,由此引入第三个光强函数I,I
16、=IP0(上半)+ IP (下半),然后利用image(I)进行叠绘。在找IP0(上半)以及 IP (下半)时需要使用find()函数找出想要的值,然后将找到的值赋给I。形成画图所需x,y的数值矩阵用函数meshgrid();修饰所画的图形时,用到常用的函数,比如title()修饰标题,xlabel,ylabel修饰轴等等。完成可视化界面的编写以后,图形界面并不执行任何操作,需要添加回调函数后才能执行处理过程。此时,需要切换到M文件编辑器中来进行函数文件的编辑。单击M文件编辑器的工具栏中的show function按钮后会显示M文件中的所有函数列表。此处首先选择OpeningFcn函数来进行编
17、辑和修改。这部分函数在程序执行GUI之前进行处理。在该函数中设置初始化的一些数据或函数。从下拉列表中单击该函数名后,立即切换到该函数体。或者在GUIDE编辑器中,在对应的按钮上单击鼠标右键,选择添加回调函数菜单来切换到相应的M文件编辑位置。 图(23)切换到函数 图(24)进入回调函数为按钮可以添加或编辑的回调函数包括callback,createfcn,deletefcn,buttondownfcn和keypress等。在本次仿真中,只对callback回调函数进行编辑,其他的都用默认的,不用更改。4模块功能分析或源程序代码4.1编辑框的处理代码:function p_Callback(hO
18、bject, eventdata, handles)p=str2double(get(hObject,string);if isnan(p) set(hObject,string,0); errordlg(Input must be a number,error);endhandles.metricdata.p=p;guidata(hObject,handles)此为反射率p编辑框的回调函数代码,get(hObject,string)函数用于以字符串的形式获取编辑框中的内容,p_callback()为回调函数的固定命名方式,其中p为编辑框的tag,更改tag,函数的名称也会跟着变化。所以,一般
19、为了便于识别,通常会将控件的tag更改为更加体现其作用的名称。Str2double()函数是用于将获得的字符串转换为双精度浮点数,因为只有数值才可以用于运算。If语句用于判断,isnan()函数用于检测p是否为非数,如果为非数set(hObject,string,0)会将编辑框清零,同时errordlg(Input must be a number,error)函数会产生出错对话框,标题为“error”,显示字符Input must be a number;其中handles为默认的可视化界面数据处理结构体句柄,用于存放所有数据。最后一句是更新数据的函数guidata(hObject,hand
20、les),将所有数据的变化返回给系统。同理其它编辑框的处理函数逻辑上都是相同的,仅有函数的名称不同。4.2图形输出按钮代码function sctx_Callback(hObject, eventdata, handles) x=-0.0005:0.000001:0.0005; y=-0.0005:0.000001:0.0005; x,y=meshgrid(x,y); p=handles.metricdata.p; f=handles.metricdata.f; d=handles.metricdata.d; d0=handles.metricdata.d0; aa=handles.metri
21、cdata.aa; lmd=handles.metricdata.lmd; n=handles.metricdata.n; a=(1-p).2; r=(x.2+y.2).0.5; dx=d+(n-1)*d0; b=(2*pi*d./lmd)*(f./(r.2+f.2).0.5); c=4*p*(sin(b).2; I0=a./(a+c); I0(r0.0005)=nan; x1=x(1,:); y1=y(:,1); j=find(x1-0.0005&x1-(0.0005-aa); bb=(2*pi*dx./lmd)*(f./(r.2+f.2).0.5); cc=4*p*(sin(bb).2;
22、I1=a./(a+cc); I1(r0.0005)=nan; c1=linspace(0,1,64); colormap(c1*0 c1 c1*0); x2=x(1,:); y2=y(:,1); j1=find(x2-0.0005&x20.0005); k1=find(y20.0005)=nan可以将r0.0005以外的数值变为非数,那么图形中4个角落的图案不显示,更加简洁直观。x1=x(1,:)表示选取x矩阵中的第一行所有列,y1=y(:,1)表示选取y矩阵中的第一列所有行。c1=linspace(0,1,64)用于产生一个步长为1的向量并且转置。colormap(c1*0 c1 c1*0)
23、是颜色控制函数,其内部矩阵按R,G,B即红绿蓝的顺序组合成不同颜色。j=find(x1-0.0005&x1(0.0005-aa)用于获取所规定范围点的值,j1和k1的值的获取也同此,然后将二者复制给光强函数I;I(j1,k1)=I1(j1,k1);I(j,k)=I0(j,k);为此函数的核心,表示将光强函数I1的下半部分赋值给光强函数I的下半部分,同时将光强函数I0的上半部分赋值给光强函数I的上半部分。函数image(I*640)是绘图函数,用于产生干涉图样。此中,由于光强函数均为相对光强,数值很小,为了使得图案便于观察,将光强函数I放大640倍进行显示。最后函数title(),xlabel(
24、),ylabel()用于显示标题和x,y轴的标签。4.3清空按钮的代码function qk_Callback(hObject, eventdata, handles)initialize_gui(gcbf,handles,true);可以看出,所谓清空实际上只有一条调用初始化函数的语句。Initialize_gui()为初始化函数,用于给所有的编辑框赋初值。Matlab自动生成的程序框架中没有initialize_gui()函数,所以要自己编写,主要是给不同的参数赋予初始值。文件名称为F-P.fig和F-P.m。4.4初始化代码function initialize_gui(fig_hand
25、le,handles,isreset)if isfield(handles,metricdata)&isreset returnendhandles.metricdata.p=0.9;handles.metricdata.f=0.05;handles.metricdata.d=0.05;handles.metricdata.lmd=555;handles.metricdata.n=1.5;handles.metricdata.d0=0.01;handles.metricdata.aa=0.0005;handles.metricdata.wxc=0;handles.metricdata.lwkd
26、=0;handles.metricdata.lwxd=0;handles.metricdata.dxhd=0;set(handles.p,string,handles.metricdata.p); set(handles.f,string,handles.metricdata.f);set(handles.d,string,handles.metricdata.d);set(handles.lmd,string,handles.metricdata.lmd);set(handles.n,string,handles.metricdata.n);set(handles.d0,string,han
27、dles.metricdata.d0);set(handles.aa,string,handles.metricdata.aa);set(handles.lwkd,string,0);set(handles.lwxd,string,0);set(handles.dxhd,string,0);guidata(handles.figure1,handles);初始化程序代码用于提供默认的参数,以便于程序最初运行时正常。当需要清空时调用此初始化函数initialize即可。Set()函数用于更新数据。4.5完整代码function varargout = F_P(varargin)gui_Singl
28、eton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, F_P_OpeningFcn, . gui_OutputFcn, F_P_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_ma
29、infcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction F_P_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);initialize_gui(hObject,handles,false);function initialize_gui(fig_handle,handles,isreset)if isfield(handles,metricdat
30、a)&isreset returnendhandles.metricdata.p=0.9;handles.metricdata.f=0.05;handles.metricdata.d=0.05;handles.metricdata.lmd=555;handles.metricdata.n=1.5;handles.metricdata.d0=0.01;handles.metricdata.aa=0.0005;handles.metricdata.wxc=0;handles.metricdata.lwkd=0;handles.metricdata.lwxd=0;handles.metricdata
31、.dxhd=0;set(handles.p,string,handles.metricdata.p); set(handles.f,string,handles.metricdata.f);set(handles.d,string,handles.metricdata.d);set(handles.lmd,string,handles.metricdata.lmd);set(handles.n,string,handles.metricdata.n);set(handles.d0,string,handles.metricdata.d0);set(handles.aa,string,handl
32、es.metricdata.aa);set(handles.lwkd,string,0);set(handles.lwxd,string,0);set(handles.dxhd,string,0);guidata(handles.figure1,handles);function varargout = F_P_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output;function jscs_Callback(hObject, eventdata, handles)lwkd=2*(1-handles.metricd
33、ata.p)/sqrt(handles.metricdata.p);set(handles.lwkd,string,lwkd);lwxd=2*pi/lwkd;set(handles.lwxd,string,lwxd);dxhd=handles.metricdata.d+(handles.metricdata.n-1)*handles.metricdata.d0;set(handles.dxhd,string,dxhd);function sctx_Callback(hObject, eventdata, handles) x=-0.0005:0.000001:0.0005; y=-0.0005
34、:0.000001:0.0005; x,y=meshgrid(x,y); p=handles.metricdata.p; f=handles.metricdata.f; d=handles.metricdata.d; d0=handles.metricdata.d0; aa=handles.metricdata.aa; lmd=handles.metricdata.lmd*0.000000001; n=handles.metricdata.n; a=(1-p).2; r=(x.2+y.2).0.5; dx=d+(n-1)*d0; b=(2*pi*d./lmd)*(f./(r.2+f.2).0.
35、5); c=4*p*(sin(b).2; I0=a./(a+c); I0(r0.0005)=nan; x1=x(1,:); y1=y(:,1); j=find(x1-0.0005&x1-(0.0005-aa); bb=(2*pi*dx./lmd)*(f./(r.2+f.2).0.5); cc=4*p*(sin(bb).2; I1=a./(a+cc); I1(r0.0005)=nan; c1=linspace(0,1,64); colormap(c1*0 c1 c1*0); x2=x(1,:); y2=y(:,1); j1=find(x2-0.0005&x20.0005); k1=find(y2
36、0.00003)=nan; x1=x(1,:); y1=y(:,1); j=find(x1-0.00003&x1-(0.00003-aa); bb=(2*pi*dx./lmd)*(f./(r.2+f.2).0.5); cc=4*p*(sin(bb).2; I1=a./(a+cc); I1(r0.00003)=nan; c1=linspace(0,1,64); colormap(c1*0 c1 c1*0); x2=x(1,:); y2=y(:,1); j1=find(x2-0.00003&x20.00003); k1=find(y2-(0.00003-aa); I=I1; I(j1,k1)=I1(j1,k1); I(j,k)=I0(j,k); surf(x,y,I*640); shading interp; title(法布里-珀罗干涉仪(内插透明薄介质)-光强立体分布); xlabel(X轴); ylabel(Y轴); zlabel(强度I);5调试过程及结论经过前面的工作,到现在为止已经进入了最后一步,即检验整个系统能否正常工作,同时在出现问题时能够找到问题产生的根源,并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 3 Could you please clean your room Section A Grammar focus 英文版教学设计 -人教版英语八年级下册
- 2023四年级数学上册 七 小小志愿者-混合运算信息窗1 不带括号的三步混合运算第3课时说课稿 青岛版六三制
- 氢能课件教学
- 一、设置页面版式教学设计-2025-2026学年初中信息技术(信息科技)七年级下册沪科版
- Silane-PEG-N3-MW-1000-Silane-PEG-azide-MW-1000-生命科学试剂-MCE
- 疫情知识培训内容课件
- 临床诊断方法的建立说课稿-2025-2026学年中职专业课-兽医基础-畜牧类-农林牧渔大类
- 涉尘涉爆知识培训计划课件
- 陕西省西安市回民中学九年级化学上册 走进化学实验室说课稿 粤教版
- 2024五年级语文下册 第2单元 7 猴王出世说课稿 新人教版
- 《锂电池的制造工艺》课件
- 海上风电场安全监测技术的现状与未来发展趋势
- 足浴前台礼仪培训课件
- 渠道考试题及答案
- 村级财务业务知识培训课件
- 2025年幼儿园中、高级教师职称考试(综合素质)历年参考题库含答案详解(5卷)
- 美术基础 课件全套 第1-5章 美术简介 -中国民间美术
- 2024人教版七年级生物下册期末复习全册考点背诵提纲
- 生物力学正畸方案优化-洞察及研究
- 2025年青少年法制知识竞赛题库
- 2025年《临床输血技术规范》
评论
0/150
提交评论