EDN China > 设计实例 > EDA工具与服务 > 仿真与验证 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 用Matlab和VB实现光学实验仿真系统的开发

成丕富 周青 朱力 孔德明?? 2009年07月29日 ?? 收藏0

  0 引 言

  随着计算机技术的迅猛发展和教育教学现代化的需要,计算机正逐渐走进学校,走进课堂。计算机辅助教学以其灵活、生动、形象、鲜明的文字、声音、图形和动画等丰富多彩的表现形式,使物理实验教学内容化难为易。计算机辅助教学的出现改变了传统的实验教学的模式,促进教师教育观念的转变,通过人机交互、信息共享,拓展了学生的视野,很好地培养了学生创造性思维能力。

  将计算机仿真技术用于光学实验教学,不受实验仪器和实验场所的限制,可以通过改变实验参数获得不同的实验结果,方便教师课堂演示,使课堂教学内容形象化,表现手段多样化,创造一个生动活泼的学习氛围,让学生能够结合形象的实验现象更加深刻理解光学理论。开发光学实验的仿真模拟系统,并将其运用到物理光学的教学和实验当中,可以进一步提高大学物理实验教学的现代化水平。

  但是,由于光学实验理论的复杂性、高水平仿真图像和人性化仿真界面的要求,目前国内融合光学实验的仿真系统开发还不多见。在此以VB为界面平台,Mat- lab强大的绘图、计算功能为基础,解决了VB和Mat-lab的接口技术,开发出了光学实验的仿真系统,并用于辅助实验教学。

  1 开发环境的选择及技术

  Visual Basic是由微软公司开发的可视化编程语言之一,简单易学而且功能丰富,能够迅速有效地编制优良的可视化界面。Matlab是美国MathWorks公司推出的交互式、面向对象的程序设计语言,擅长处理数值计算和系统模拟仿真。但是Matlab程序的执行速度比较慢,而且在界面设计方面远远比不上 VB,VC等软件。鉴于二者各自的优势,通过VB和Matlab的接口技术将VB功能强大的可视化界面与Matlab的绘图功能结合起来,实现二者混合编程,即可开发出模拟光学实验的软件。

  VB调用Matlab一直是一个难题,可以通过ActiveX自动化技术或Matlab的COM Builder技术实现。但是利用ActiveX时会在后台启动一个Matlab进程,不能脱离Matlab环境,而且实时性差;通过 COMBuilder技术虽然可以脱离Matlab环境,但是一些工具箱函数还是无法编译,有一定的局限性,这两种方法都难以满足软件开发的要求。这里利用DLL动态链接库方法实现了在VB中调用Matlab。

  利用动态链接库方法也就是将Matlab的M一文件转变成为VB可以调用的DLL文件,从而实现VB对Matlab的调用。具体过程如下:

(1)利用Matlab编写函数,并保存为M一文件。利用Matcorn4..5软件将其编译为DLL文件,同时还会自动生成在VB中声明DLL的模块文件.bas文件和.cls文件。
(2)把DLL文件拷贝到VB工程目录或者是系统目录systera32下,并用上面生成的.bas文件声明。
(3)把生成的.cls文件添加到VB的公共模块中。
(4)在VB中引入MaxtrixVB库作为与DLL的接口代理,Matlab编写的函数就可以在VB中直接应用。利用DLL技术能够实现VB对 Matlab的调用,这种方法可以方便地在自己开发的应用软件中嵌入Mat-lab软件的功能,实现自己的运算及图像显示。

  2 系统设计

  2.1 主体界面及设计思路

  在实验教学过程中,学生的学习过程应该是主动、自主学习的过程。本软件的设计思想在于创立友好的人机交互界面,方便的仿真系统,开发面向学生、直观、易于操作的辅助实验教学软件。在设计上,用一个主目录窗体界面将主要的光学实验整合在一起,这部分设计以文本属性、窗体的链接为主,软件主窗体如图1所示。

软件主窗体

  2.2 详细设计说明

  在各光学实验的具体模拟中,每个光学实验的模拟都含预习评价、实验内容、数据处理、思考练习等部分,同时还有实验扩展、技术应用等版块,方便老师和学生查阅、练习,提高学生的创新能力。

  以仿真模拟光栅衍射实验为例介绍开发光学实验仿真模拟系统的过程。

  3 光栅衍射实验的模拟

  3.1 光栅衍射实验的数学模型

  设λ为入射光波长;α为光栅上每一透光狭缝的宽度;d为光栅常数;φ为衍射角。一般光栅与光屏的距离D远大于衍射条纹在光屏上偏离光屏中心的距离ys,因此有:

  sinφ△~y/D

  光栅衍射可以看作是N个相干光形成的缝间干涉和单缝衍射共同作用的结果。对于光屏上任一点P的光强度,等于N个相干光在该点产生的干涉光强度与宽度为a的单缝夫朗和费衍射在该点产生的光强度的乘积,其强度可表示为:

干涉光强度

  其中:I0为屏中心的最大光强;[(sin a)/a]2为单缝衍射因子;(sin Nβ/sinβ)2。为多光束干涉因子;a=πa/λsinφ;β=πd/λsinφ。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

VB? 仿真系统? 光学实验?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈