基于VB与MATLAB编程模拟光栅光谱分析系统

时间:2022-09-19 04:08:43

基于VB与MATLAB编程模拟光栅光谱分析系统

摘要:该仿真软件将Matlab的计算优势与VisualBasic图形用户界面开发方面的优势结合起来仿真模拟了单色光单缝衍射和光栅衍射实验,实验结果的图样细致逼真,结合3D动画演示使整个物理过程变得直观,为光学的理论分析和实验教学提供了新的途径。

关键词:Matlab;Visual Basic;MatrixVB;单缝衍射;光栅衍射;计算机仿真软件

中图分类号:TP391 文献标识码:A文章编号:1009-3044(2009)34-9735-04

The Analyzing System of Simulating the Grating Spectrum witch Programed Basded on VB and MATLAB

ZHOU You, ZHANG Dan, WU Ming-liang

(Department of Physics and Electronic Message, Leshan Techer's college, Leshan 614004, China)

Abstract: This simulate software combined the Strength on mathematics calculation of MATLAB and the superiority ondeveloping figure user interface of the program language Visual Basic, we have analogly simulated the single slit diffraction of homogeneous light and the grating diffraction. The experimente results were fine and lifelike. And we have tried our best to make the physical process more intuitive by creating a 3D animation in our system. We just put this system out for providing a new approach for theoretical analyzing of photics and may be used in Exp. Teaching.

Key words: Matlab; Visual Basic; MatrixVB; single slit diffraction; grating diffraction; computer simulation software

1 背景

在大学理工科课程的教学中引入计算机模拟技术正日益受到重视,关于物理图形比如光学实验图像的模拟,已经有人做过一些工作,但还较少见到有人利用MATLAB软件强大的数据处理以及物理公式计算功能结合面向界面的程序设计Visual Basic的友好的用户界面功能做模拟光学实验的工作。使用Visual Basic,Visual C++等环境编制数据处理应用程序能够得到灵活的人机界面,但数据处理程序会相当的烦琐,使用专用的数学软件如MATLAB它具有强大的矩阵运算功能,但生成的应用软件界面操作性差。MatrixVB是Mathtool公司针对VB内建函数库的不足而将MATLAB部分函数库重新集合以补充VB的不足而开发的,它具有方便而强大的组件对象模型库,可以脱离 MATLAB运行环境而在VB中独立进行的矩阵运算和图形显示等处理,这样使得程序的运算简洁方便并且不需要运行庞大的MATLAB软件就可以使编程速度大大加强,特别是在绘制图形方面得心应手,能够快速编制独立的图形绘制软件。

2 技术基础

2.1 MatrixVB所带函数库的主要内容

MatrixVB是为VB开发的教学数学函数COM库,库中含有600多条MATLAB所包含的基本功能函数,可以在VB中直接调用而不必考虑安装庞大的MATLAB,主要功能包括:FFT;二维FFT与逆FFT,特征值与特征向量的函数;线性方程的求解;线性与二次规划JPG与BMP图像的读取与存储;矩阵的指数函数;特殊函数、误差函数等函数;一维与二维插位;多项式拟合;MATLAB中的绘图命令与文件操作命令等。

2.2 VB中调用MATLAB的方法

安装好MatrixVB后,在VB中新建一个工程,在工程的引用中选择下拉菜单中的MATRIX选项,此时就可以使用MatrixVB所提供的一切函数了。

3 理论

光栅衍射是波动光学的重要内容,涉及到单缝衍射和多缝干涉两方面的知识,是干涉和衍射两种效应的叠加。光栅衍射条纹受光栅常数、入射光波长、总缝数、透光缝宽、入射方向等多种因素的影响,其谱线特征变化丰富。表现在主极大、次极大的产生,谱线强度及衍射角的变化,主极大的缺级,复色光入射时光栅光谱的产生及条纹越级现象等。通常的光栅衍射实验难以充分展示上述特征,学生不易获得全面认识,成为教学难点。采用计算机图形化编程技术,在电脑上模拟光栅衍射,可充分展现光栅光谱的全貌。通过交互式操作,控制有关参数的变化,观察光栅衍射光谱的相应变化特征,对激发学习兴趣,总结实验规律,辅助教学等均有显著效果。

3.1 光栅衍射的实验装置与数学模型的建立

光栅衍射的实验装置如图1所示,S为与纸面垂直的线光源,它位于透镜L1的焦平面上,屏幕放在透镜L2的焦平面上。一矩形光栅放置在衍射屏P处,由一系列等宽度且等间隔的平行狭缝构成。设各缝的宽度都等于b,相邻两缝间不透明部分的宽度都等于a,则光栅常数d=a+b,0是衍射角,f是透镜L2的焦距,光栅总狭缝数为N。

根据惠更斯――菲涅耳原理,单色平面光波垂直照射光栅时,沿衍射角方向传播的次光波在屏幕上Po处的合振动的振幅及强度分布分别为

(2)

其中,即 。来源于单缝衍射,是整个衍射图样的轮廓,称为单缝衍射因子;来源于缝间的干涉,称为缝间干涉因子。可以改写为如下:

(3)

为相邻两缝对应点到达观察点的光程差,这个光程差所引起的相位差为:

(4)

由此可以将缝间干涉因子写成,综合上面的论述,光栅衍射的光强是单缝衍射因子和缝间干涉因子的乘积,借用通信理论中的术语就是单缝衍射因子对干涉主极大起调制作用。设Pθ到P0的距离为x,则有。由此可以得到屏幕上x点与P0点的光强I0之间的关系。

3.2 谱线缺级的情况讨论

对于一定的波长来说,根据光栅方程:

(5)

谱线之间的距离由光栅常量d确定。然而各谱线强度的分布,根据下面的证明,将随b与d的比值而改变,在这个比值为整数的情况下某些级数的谱线将消失,例如:当d=2b时所有级数为偶数的谱线将消失,(….-6,-4,-2,0,2+2,+4,+6…),当d=3b时,所有级数为奇数的谱线将消失(…-5,-3,-1,+1,+3,+5…),这种现象称为谱线的缺级。由(1)式不难确定各主极大值的振幅分布,把由(5)确定的Sinθ的值带入(1),由于该式的因子,,故得到J级谱线的振幅为:

(6)

由此可见,若k=+1,+2,+3,...为衍射最小值的级数,j为主最大值的级数,且j>k,则当 时,

(7)

因而Aj=0,固当 时,级数为j的谱线消失。这就是产生缺级现象时j与k之间的关系。在接下来的计算机仿真模拟中将再现N=6,d=4b时的缺级现象。由此可见,(5)式只是光强为最大值的必要条件。因为即便使(5)条件满足,应产生主最大,但假若此衍射方向恰好为单缝衍射的最小,则合成光强亦为零,即发生缺级现象。[4]

3.3 非单色光的光栅衍射

以上的讨论都只限于单色光的衍射情况,如果入射光是包含几种波长不同的复合光,除去零级以外,不同波长对应的主极大的位置不尽相同,因此在衍射图样中我们将看到有几组颜色不同的谱线分别对应于不同的波长。对于同一光栅来说,波长越短,对应的衍射角就越小,,如果光源发出的是具有连续谱的白光,在同一级谱线中,紫光的谱线在光谱的内缘,红光的谱线在光谱的外缘。在本模拟系统中,采用对最大与最小阈值波长间等分100份波长值进行衍射,各波长值在屏幕上特定点的光强代数叠加来最终显示该点的光强,来最终形成叠加图样。

4 模拟分析

4.1 单缝夫琅和费衍射模拟

根据惠更斯一菲涅尔原理,单色平行光垂直照射到单缝时,沿衍射角0方向传播的次光波在屏幕处的光强分布公式为 ,其中。实验参数选定为λ=0.000 632 8mm,f=100 mm,选两个值:b=0.05 mm 和b=0.01mm,运行结果如图2a)、2b)所示:

从图2a)(横坐标)可以看出,缝宽a越小,中央明条纹越宽,其他各级明条纹也越宽。

4.2 双缝衍射模拟

取N=2,分别选b=0.01mm,d=0.04mm,和b=0.01mm,d=0.1mm运行结果如图3所示。

由图3可见,两缝间距离d越小,相邻条纹间距越大,并且还可看出,在光栅衍射中双缝衍射的干涉部分被衍射所调制。

4.3 条纹缺级现象的观察(N>2)

由图4可见:光栅衍射图样的光强分布是单缝衍射因子对多光束干涉光强分布的调制。根据理论分析可知,当d/b为某整数时,该整数级次及其倍数级次的主极大明条纹将出现缺级。在左图中,d/b=4,则第4、8、12等级次的谱线消失。在右图中,d/b=3,则第3,6,9等级次谱线消失。

4.4 缝数N对主极大条纹

由图5可见:中央主极大条纹的位置并没有随着缝数的改变而改变,与N无关,但是中央主极大条纹的宽度随着N的增加而减小,而强度随N的增加而迅速增加。

5 结束语

通过上述验证可知,利用该模拟系统可以很好的对光学光栅光谱进行很好仿真模拟,不受实验场地和苛刻条件的限制,而灵活多变地改变实验参数,方便地进行物理实验教学,对学生增加感性认识,提高学习兴趣有积极作用。本软件利用了MatrixVB无缝地将MATLAB与VB加以结合,提高了VB在开发科学计算与绘图方面程序的效率, 为其他工程软件开发提供了一种新的思路。

6 附录

6.1 核心代码片段

'===============/片段/ 定义全局变量=============

Const pi As Double = 3.14159265358979'定义pi

Dim Lambda As Double ' 波长(mm)

Dim doub_f As Double '焦距(mm)

Dim doub_b As Double'缝宽(mm)

Dim doub_d As Double'光栅常数

Dim doub_n As Double'缝数

Dim int_NAs Integer '图象清晰度

Dim int_ymax As Integer '图象细调

Dim mat_xAs Matrix'到p的距离

Dim mat_iAs Matrix'每一点的光强(绝对)

Dim mat_ir As Matrix'每一点的光强(相对)

Dim doub_ymaxAs Double '图象细调(doub)

'=============定义一些临时变量=================

Dim i As Integer

Dim doub_sinAs Double

Dim doub_uAs Double

Dim doub_vAs Double

Dim NCLevelsAs Integer

doub_ymax = int_ymax * Lambda * doub_f / CDbl(doub_d)'y坐标轴的最远点

'设定图像X范围,并把X方向分成int_N个点

Set mat_x = linspace(-doub_ymax, doub_ymax, int_N)

Set mat_i = zeros(1, int_N)'初始化数组

Set mat_ir = zeros(int_N, int_N) '初始化矩阵

For i = 1 To int_N

doub_sin = (mat_x(i).Simple)/(Sqr((mat_x(i).Simple) ^ 2 + doub_f ^ 2))' 表达式

doub_u = pi * doub_sin * doub_b / Lambda'u,v的表达式

doub_v = doub_u * doub_d/doub_b

'=======光强分布表达式===================

mat_i(i) = Abs(((Sin(doub_u)/doub_u) ^ 2) * ((Sin(doub_v * doub_n)/Sin(doub_v)) ^ 2))

Next i

NCLevels=255 '确定灰度等级为255

tem=mmax(mat_i) '求最大光强

For i = 1 To int_N

For j = 1 To int_N

mat_ir(j, i) = (mat_i(i).Simple / tem.Simple) * 255'相对光强度

Next j

Next i

'=============开始绘图========================

Call subplot(2, 1, 1) '分割显示窗口

colormap (grey(NCLevels)) '用灰度级颜色图

h = imagesc(mat_x, mat_i, mat_ir) '画图像

Call subplot(2, 1, 2)

m = plot(mat_x, rdivide(mat_i, mmax(mat_i))) '画线条

6.2 系统运行界面

图6为系统运行界面。

参考文献:

[1] 王福昌,曹慧荣.VB与MATLAB完美结合――MatrixVB[J]. 电脑学习,2002(2).

[2] 何强.MATLAB扩展编程[M]. 北京:清华大学出版社,2002.

[3] 陈怀琛.MATLAB及其在理工课程中的应用指南[M]. 西安:西安电子科技大学,2000.

[4] 姚启钧.光学教程[M]. 北京:高等教育出版社,2002:133-135.

上一篇:入侵检测系统的分析技术研究 下一篇:网上银行函数密码的设计与实现