王秀芳,郑家树,陈世涛,王续宇
(西南交通大学,四川 峨眉山 614202)
文章主要介绍了 Matlab-GUI[1]在偏振光研究实验中的应用[2-5],实现了偏振光原理图的仿真和数据处理的图形用户界面的设计,使同学们加深了对偏振光的理解和节约了处理数据的时间,达到了预期的目标。
实验室产生各种偏振光主要依赖于偏振片,分为两种半波片和1/4波片。当平面偏振光入射到偏振片,会分成两束完全偏振光,一束为O光,一束为e光。由于两束光在偏振片内的传播速度不一样,从而从偏振片出来的两束光产生了相位差,其相位差主要决定于偏振片的厚度,当相位差为π时,叫半波片,当相位差为π/2时叫1/4波片。那么,当偏振光垂直入到1/4波片,在其内部的"o"光和"e"光的波动方程为[6]:
消去t得:
因为δ=π/2,上式变为:
这是偏振光的椭圆方程,其中:
式中A是入射光的振幅,α起偏振片或λ/4转动的角度,φ是检偏振片动动的角度。当α=45°时,Ao=Ae,椭圆偏振光变为圆偏振光;当α=0°,90°,180°,270°时,椭圆偏振光变为线偏振光;α转动其它任何角度均可得到椭圆偏振光。
放上起偏、检偏镜,旋转中间任意一个直至透射为0,这时他们透光方向相互垂直,然后旋转检偏镜,记录下转过的角度φ和电流表读数。
表1 马吕斯定律测量数据
放上起偏、检偏镜,转动检偏镜使透射光消失,这时两镜相互垂直。在他们之间放λ/4波片,一般又有光出射,缓缓转动λ/4波片直至检偏镜后再无出射光,这时λ/4波片光轴应与起偏镜透光方向相平行(或垂直)。再次转动λ/4波片20°,旋转放在它们后面的检偏镜来观察透射光强的变化。当检偏镜出来的透射光最弱时,以此刻度为起始的0刻度,每转过10°时读取一次电流表读数,旋转一周读取36个数据。
表2 椭圆偏振光数据测量结果
实验主要完成了三个 MATLAB GUI的设计,分别为椭圆偏振光形成的原理演示、马吕斯定律数据处理和椭圆偏振光数据处理。
用Matlab GUI完成的上面的三个设计,主要包括以下几个步骤:
(1)构思草图,编排控件的布局。打开Matlab程序,在file菜单中选择new gui,打开guide设计界面模板,界面模板左边的各个控件可以直接用鼠标拖到编辑框。
(2)设置各控件的属性。比如设置各控件的标识(Tag)、颜色、字体等。
(3)代码的设计。关键是OpeningFcn(初始界面函数)和控件的Callback(回调函数)代码的设计。初始界面函数即设定个参数的初始值,可根据实际情况设定。回调函数是核心,是对界面控件触发时的事件响应函数。
椭圆偏振光形成的原理在讲解时,往往是放上几个数学公式,从公式的形式上说明它是一个椭圆,不能形象的进行说明。椭圆偏振光可以依据力学中两个同频率的振动的合成来理解,当它们相互垂直,且有固定位相差时,必然合成为椭圆(圆和直线)可看成是椭圆的特例。
根据设计步骤,构思草图,在编辑器中布置控件,坐标轴Axes 1用来显示O光,Axes 2用来显示e光,Axes 3用来显示O光和e光的合成,文本框用来用来显示相应的名称,另外还有三个按钮,对应O光和e光的相位差,不同的相位差分别对应不同的偏振光,点击按钮可以显示出它们的合成图形。布局如图1所示,其演示结果如图2,图3,图4所示。
图1 椭圆偏振光原理演示布局图
图2 线偏振光演示结果
图3 圆偏振光演示结果
图4 椭圆偏振光演示结果
马吕斯定律说的是,当一束自然光通过偏振片A和B,见图5。
图5 马吕斯定律示意图
设偏振片间的透振方向夹角为,经过起偏器A形成的线偏振光强度为I0,则通过检偏器B的透射光强(相对光强)I将满足如下关系(马吕斯定律)[7]:
马吕斯定律数据处理GUI的设计,第一步还是在编辑器中布置控件,添加两个坐标轴(Axes),分别用来显示相对光强与夹角的关系和夹角余弦的平方与相对光强的关系。设置其横纵坐标的限制范围;添加1个普通按钮(pushbutton),字符串属性为"plot";添加30几个编辑文本框(Edit Text)用来输入光电流和角度的范围;添加几个静态文本框(Static Text),用于显示标题和各控件的名称;设置各控件的字符高度(FontSize)、Tag、String属性等等;接下来添加各控件的回调函数(Callback),回调函数可以是命令字符串,也可以是m文件。本系统主要是"plot"按钮的m文件编写。"plot"按钮的回调函数主要功能为作图,把数据赋给相应变量。这样,马吕斯定律的数据处理的GUI界面就做好了。布局如图6所示,其数据处理结果如图7所示。
通过该软件可以快速的处理数据。另外,从数据处理结果图上,可以看到相对光强与夹角的关系不严格成立有一定的误差,幅值也在改变。夹角余弦的平方与相对光强的关系也不是一条标准的直线。
图6 马吕斯定律数据处理GUI的布局图
图7 数据处理结果图
椭圆偏振光通过检偏振片后的光强度可写成:
其中A为自然光光强或是垂之入射到λ/4波片的偏振光振光光强,α是入射偏振光振动方向与λ/4波片光轴的夹角,φ为检偏振片光轴与初始方位的夹角,取A=1,(6)式可写成;
实验中,光强I转换成电信号。用极坐标绘出的I(mA)-φ图是花生状,不能直接证明入射到检偏振片的光是椭圆偏振光[8]。说明用椭圆偏振光长轴与检偏振片光轴夹角φ与测量到的对应光强(电信号)不应是椭圆,类似花生状是对的,实验结果也证明了这点。为了直接验证入射到检偏振片的是椭圆偏振光,也就是说,用实验结果绘制的I(或电信号)~φ是椭圆,把公式(2)与椭圆参数建立联系,即对式(7)进行“标定”,得到I与极坐标和直角坐标椭圆参数之间关系表达式:
根据“O”光、“e”的振幅可写成AO=Asinα,Ae= Acosα,IαA2,取 A2=2,公式(8),(9)可写成:
公式(10)、(11)中的i可以是公式(7)的值,这样可以得到理论椭圆图,i也可以是实验数据,可以得到实验结果的椭圆图。为了使实验结果与理论值进行比较,用归一化处理后用程序绘图[9]。
在椭圆偏振光数据处理系统的GUI设计中,首先编写的m文件,然后进行GUI界面设计,给出其回调函数的代码。椭圆偏振光数据处理系统的GUI界面设计与马吕斯定律数据处理GUI的设计相类似,不再赘述。下面给出他的m文件的编写。
椭圆偏振光数据处理系统的 m文件[10-11]:
x=0:10*pi/180:360*pi/180;%角度
y= [0.3403,0.3532,0.3602,0.3691,0.3571,0.3466,0.3360,0.3100,0.3017,0.2860,0.2704,0.2654,0.2656,0.2777,0.2852,0.3095,0.3256,0.3368,0.3536,0.3576,0.3638,0.3618,0.3557,0.3421,0.3241,0.3024,0.2785,0.2661,0.2602,0.2609,0.2632,0.2808,0.3022,0.3216,0.3357,0.3493,0.3537];%输入你的37个椭圆实验值
a=40*pi/180;yo=0.2602;ye=0.3403;
x1=0:5*pi/180:360*pi/180;
y1=interp1(x,y,x1,'spline');
xo=(ye.^0.5.*cos(x1+a)./(y1.^0.5));
yo=(yo.^0.5*sin(x1+a)./(y1.^0.5));
plot(xo,yo,'k*')
hold on
I= [sin(a).*cos(x1+a)].^2+
[cos(a).*sin(x1+a)].^2;
x2=(max(I).^0.5.*cos(x1)./(I.^0.5));
y2=(min(I).^0.5.*sin(x1)./(I.^0.5));
plot(x2,y2,'k-')
title('图λ/4波片转40^{0}的椭圆偏振光实验结果')%输入不同转角值
xlabel('x');ylabel('y');
grid on
set(gcf,'color','w')
然后根据所写的m文件,写出GUI的回调函数。其界面设计与运行结果,如图8,图9所示。
图8 椭圆偏振光数据处理的GUI的设计图
图9 椭圆偏振光数据处理的结果图
由于椭圆偏振光的数据较多,有37个数据需要输入,单单用m文件来作图,光是数据输入这一项就比较容易出错,而GUI界面的设计刚好弥补了这个缺点,若数据输入有误,也比较方便检查,并且是与用户直接面对面,比较友好。
偏振光实验的GUI实现,加深了学生对椭圆偏振光原理的认识,加快了学生对该实验数据处理的速度,方便了衡量学生实验的成败,为学生节约了更多的时间去对物理实验问题的分析,值得在教学中推广。
[1]刘卫国.Matlab程序设计与应用[M].北京:高等教育出版社,2006:139-155.
[2]胡孝博,刘扬正.基于MATLAB GUI的光的干涉实验仿真[J].南京工程学院学报:自然科学版,2010,8(1):65-68.
[3]李飞,吴云峰,张萍,郑建洲.基于 Matlab的霍尔效应实验数据处理[J].实验室研究与探,2011,30(1):58-73.
[4]严达利,孙佩雄,寇晶.三棱镜色散曲线拟合的MATLAB-GUI 设 计 [J].实 验 室 科 学,2010,13(3):113-115.
[5]石 涵.用Matlab研究李萨如图形及其讨论 物理与工程[J].2009,19 (1):64-67.
[6]陈世涛,王续宇,王秀芳.大学物理实验教程[M].西南交通大学出版社,2011:147-152.
[7]姚启钧.光学教程[M].北京:高等教育出版社,2006:304-362.
[8]李蓉,刘大禾,张 萍.关于椭圆偏振光与圆偏振光的实验验证[J].大学物理,2004,23(5):42-58.
[9]宋璐,冯艳平,卫亚博.基于 MATLAB GVI的拍频实现方法的研究[J].大学物理实验,2012(3):98-99.
[10]Gerald Recktenwald.数值方法和 MATLAB实现与应用 [M].北 京:机 械 工 业 出版社,2004:364-412.
[11]华晋,尹金花.基本GVI的干涉衍射的实验教学研究[J].大学物理实验,2011(1):79-81.