基于MATLAB的多光学现象仿真可视化设计_徐春芳
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 29 卷 第 4 期 2016 年 8 月
大
学
物
理
实
验
PHYSICAL EXPERIMENT OF COLLEGE
Vol. 29 No. 4 Aug. 2016
2934 ( 2016 ) 04008603 文章编号: 1007-
基于 MATLAB 的多光学现象仿真可视化设计
徐春芳, 王浩然, 王建岗, 丁益民
还可以通过对界面上各参数的调节来实现同 一实验现象不同条件下的比较: 图 3, 图 4 是当光的波长保持为 737. 4 nm, 二 分之一屏幕宽度为 0. 779 22 mm 不变, 只改变缝 宽时夫琅禾费单缝衍射的比较:
图3
缝宽为 0. 031 1 mm
88
基于 MATLAB 的多光学现象仿真可视化设计
wlb = 435. 8e - 6 ; a = str2double( get( handles. edit1 , 'string') ) ; z = str2double( get( handles. edit2 , 'string') ) ; ym = str2double( get( handles. edit3 , 'string') ) ; R = str2double( get( handles. edit4 , 'string') ) ; d = str2double ( get ( handles. edit5 , 'string') ) * 10^ - 5 ; aa = str2double( get( handles. edit6 , 'string') ) ; f = str2double( get( handles. edit7 , 'string') ) ; aaa = str2double( get( handles. edit8 , 'string') ) ; lambda = str2double ( get ( handles. edit10 ,' string') ) * 10^ - 6 ; switch str{ val} ; case '白光圆孔夫琅禾费衍射’
0315 收稿日期: 2016《大学物理实验精品资源共享课》 基金项目: 理论物理国家重点实验室开放课题( Y3KF321CJ1 ) ;湖北大学 建设项目( C201407 )
基于 MATLAB 的多光学现象仿真可视化设计
87
val1 = num2str( get( handles. slider1 , 'value') ) ; set( handles. edit1 , 'string', val1 ) ; 上述代码是单色光波长所对应的 slider 的回 调函数。此回调函数用来获取 slider 的当前值。
1
光学仿真平台的 GUI 界面设计
MATLAB 中 Guide 是图形用户接口开发环境
的简称, 它 提 供 了 一 系 列 工 具 用 于 建 立 GUI 对 [6 ] GUIDE 象 。相对于全编程的方法实现可视化, 所提供的工具大大简化了设计和建立 GUI 的过 程。在建立 GUI 后, 可以对 GUI 图形界面布局和 编程, 通过 GUI 图 形 界 面 来 控 制 实 验 现 象 的 可 视化。 1. 1 GUI 布局 在建立一个新的 GUI 后, 要对 GUI 布局。 依 据需要在 GUI 布局区添加适当的组件。 在添加 控件以前我们要对所需要改变的参量要有具体的 了解, 这样有利于我们对 GUI 做合理的布局。 下 图是 GUI 布局图。
[2 ] 和条纹分布进行了模拟研究 ; 邓磊对光的多缝 [3 ] 衍射进行了仿真 ; 而钟可君则用 Matlab 的 GUI
实现光的衍射的可视化 。 本文根据各种光学 现象的基本特征, 利用 MATLAB 的 GUIDE 功能, 结合编程实现多光学实验现象在同一平台的可视 化和可调化。
[4 ]
图1百度文库
GUI 布局图
本文将界面分为三个部分:显示区, 控制区和 。 提示区 实验的可视化在显示区中呈现。而通过 屏到 控制区来调整各光学参数。 例如光栅常数, 缝的距离, 光的波长等参数可以在这个区域中进 行调整。 还可以在这个区域中选择要模拟的实 验。本界面包含了单色光 / 白光的杨氏双缝干涉、 牛顿环、 夫琅禾费单缝和圆孔衍射、 迈克尔逊干涉 仪多类实验的模拟。提示区用来提示实验操作中 的注意事项以及可能存在的问题 。 1. 2 设置组件属性 我们需要对各组件属性 在基本布局完成后, 进行设计。在设置完组件基础属性后, 还必须对 各个组件的 callback 函数进行编写。 具体方法是, 在组件对象上右击鼠标, 选择 view Callback / Callback, 在该 Callback 回调函数中 编写代码: Function slider1 _ Callback ( hObject, eventdata, handles)
5
结
语
图4
缝宽为 0. 0103 9 mm
综上所述, 在物理实验中我们觉得高不可攀 , 可望而不可及的一些抽象现象, 都可以通过 matlab 自带的 GUI 组件来实现。 而这种实现抽象现 象可视化的方法, 相比于用全编程的方法实现可 视化来说难度大大降低。 并且, 在此界面下我们 还实现了对各参数的可调性, 这也有利于我们对 同一物理现象的深刻认识和对不同物理现象的比 较。因此这种简明直观的动态展示方法, 为光学 的理论和实践教学提供了方便, 也为我们的物理 课程教学提供了很好的方法。 参考文献:
( Hubei University, Hubei Wuhan 430062 )
Abstract: Taking advantage of MATLAB's own componentGUI, implement the simulations and visualizations of the optical experiments, such as Monochromatic light, young's doubleslit, Newton's rings, Fraunhofer diffraction and Michelson interference. Key words: optical experiments;MATLAB ;GUI;visualizations
(1)
由贝塞尔函数可得:
~
E = 2J1 ( kaθ ) kaθ
2 πC '
( kθ ) 2
[ kr1 θJ1 ( kr θ ) ] 1
r1 = a r1 = 0
= πa2 C ' (2)
4
仿真模拟结果
通过编写程序代码, 可以实现对各种光学现
因此, 光强为: I =
( πa2 ) 2
2
象在同一界面上的可视化和可调性 。如下图 2 所 C'
2
θ [ 2J kaka ] θ
1
(
)
2
示为单色光夫琅禾费圆孔衍射图样 。 = I0 (3)
[
2 J1 ( Z ) Z
]
爱里斑的半径为: r0 = 1 . 22 f λ 2a (4)
在了解清楚光学原理后进行编程 。
3
光学实验的仿真设计
图2 夫琅禾费圆孔衍射图样
程序的编写必须是在对应的代码下进行 。本 文中名称为 popupmenu2 的组件对应着白光夫琅 禾费圆孔衍射的函数回调与执行, 因此我们必须 在它的 Callback 函数语句下编写白光夫琅禾费圆 孔衍射的回调函数。 具体程序如下: Function popupmenu2 _ Callback ( hObject, eventdata, handles) val = get( hObject, 'Value') ; str = get( hObject, 'String') ; wlr = 700e - 6 ; wlg = 546. 1e - 6 ;
2
光学实验原理
光学实验原理是编程的基础。可视化程序的
编写是基于对光学现象原理的熟练掌握基础进行 的。由于篇幅的限制, 以夫琅禾费圆孔衍射 验为例: 夫琅禾费圆孔衍射中间亮纹亮度最大, 称为爱 里斑, 直径为 d, 观察平面上任意一点的复振幅为:
~ [7 ]
实
E = C″
∫∫
0
a
2π
0
e[-kr1θcos( 1 - 2) ]r1 dr1 d1
图6
单色光牛顿环
图7
迈克尔逊干涉仪
Optical Experiments Simulations and Visualizations Based on MATLAB Visual Control Interface
XU Chunfang, WANG Haoran, WANG Jiangang, DING Yimin
逊干涉仪等光学实验进行可视化模拟 。 39 中图分类号: O 4-
光现象是我们生活中的基本现象, 也是大学 物理的基本内容之一, 然而, 受实验条件的限制, 光现象的相关实验往往难以在课堂上演示 。 为 此, 近年许多教师对光学实验的 Matlab 仿真进行 了研究。 余 建 立 等 对 光 的 干 涉 现 象 进 行 了 研 [1 ] 究 ;夏漫等对光的夫琅禾费单缝衍射光强曲线
[ 1] 余建立, 等. 基于 GUI 的 光 的 干 涉 实 验 模 拟 研 究 [ J] . 宜春学院学报:3740. [ 2] 夏漫, 等. 基于 Matlab 的光的单缝衍射实验模拟研 J] . 大学物理实验, 2015 ( 4 ) :9092. 究[ [ 3] 邓磊, J] 等. 多缝的夫琅禾费衍射仿真[ 湖南文理学 2014 ( 4 ) : 5964. 院学报, [ 4] 钟可君, 张海林. 基于 MatlabGUI 设计的光学实验仿 J] . 实验室研究与探索, 2010 ( 10 ) :5253. 真[ [ 5] 刘正君. Matlab 科学计算与可视化仿真[ M] . 北京: 2009 :165. 电子工业出版社, [ 6] 罗华飞. Matlab 设计学习手册[ M] . 北京:北京航空 2009 :345423. 航天大学出版社, [ 7] 章志鸣, M] . 北京:高等教育 沈元华, 陈惠芬. 光学[ 164. 出版社, 第二版:132[ 8] 周忆, .大 等. 用 MATZAB 语言模拟光衍射实验[J] 2001 ( 4 ) : 4748. 学物理实验,
( 湖北大学, 湖北 武汉 430062 )
摘 关 键
要: 利用 MATLAB 自带 GUI, 对光学单色光杨氏双缝干涉 、 牛顿环、 夫琅禾费衍射以及迈克尔 词: 光学实验;MATLAB;GUI;可视化 文献标志码: A DOI: 10. 14139 / j. cnki. cn22 - 1228. 2016. 004. 027
从图像上我们可以直观的看出, 当缝宽变小 以后, 衍射现象变得更明显, 这是与事实相符的。 同样的方法可以得到其它光学现象的仿真 图。只需要在界面选择区域选择我们要做的模拟 实验以及改变光学参数就可以得到不同的光学图 图 5 ~ 图 7 为调整参数后不同光学实验的模 像, 拟图样
[8 ]
。
图5
杨氏双缝干涉图样
大
学
物
理
实
验
PHYSICAL EXPERIMENT OF COLLEGE
Vol. 29 No. 4 Aug. 2016
2934 ( 2016 ) 04008603 文章编号: 1007-
基于 MATLAB 的多光学现象仿真可视化设计
徐春芳, 王浩然, 王建岗, 丁益民
还可以通过对界面上各参数的调节来实现同 一实验现象不同条件下的比较: 图 3, 图 4 是当光的波长保持为 737. 4 nm, 二 分之一屏幕宽度为 0. 779 22 mm 不变, 只改变缝 宽时夫琅禾费单缝衍射的比较:
图3
缝宽为 0. 031 1 mm
88
基于 MATLAB 的多光学现象仿真可视化设计
wlb = 435. 8e - 6 ; a = str2double( get( handles. edit1 , 'string') ) ; z = str2double( get( handles. edit2 , 'string') ) ; ym = str2double( get( handles. edit3 , 'string') ) ; R = str2double( get( handles. edit4 , 'string') ) ; d = str2double ( get ( handles. edit5 , 'string') ) * 10^ - 5 ; aa = str2double( get( handles. edit6 , 'string') ) ; f = str2double( get( handles. edit7 , 'string') ) ; aaa = str2double( get( handles. edit8 , 'string') ) ; lambda = str2double ( get ( handles. edit10 ,' string') ) * 10^ - 6 ; switch str{ val} ; case '白光圆孔夫琅禾费衍射’
0315 收稿日期: 2016《大学物理实验精品资源共享课》 基金项目: 理论物理国家重点实验室开放课题( Y3KF321CJ1 ) ;湖北大学 建设项目( C201407 )
基于 MATLAB 的多光学现象仿真可视化设计
87
val1 = num2str( get( handles. slider1 , 'value') ) ; set( handles. edit1 , 'string', val1 ) ; 上述代码是单色光波长所对应的 slider 的回 调函数。此回调函数用来获取 slider 的当前值。
1
光学仿真平台的 GUI 界面设计
MATLAB 中 Guide 是图形用户接口开发环境
的简称, 它 提 供 了 一 系 列 工 具 用 于 建 立 GUI 对 [6 ] GUIDE 象 。相对于全编程的方法实现可视化, 所提供的工具大大简化了设计和建立 GUI 的过 程。在建立 GUI 后, 可以对 GUI 图形界面布局和 编程, 通过 GUI 图 形 界 面 来 控 制 实 验 现 象 的 可 视化。 1. 1 GUI 布局 在建立一个新的 GUI 后, 要对 GUI 布局。 依 据需要在 GUI 布局区添加适当的组件。 在添加 控件以前我们要对所需要改变的参量要有具体的 了解, 这样有利于我们对 GUI 做合理的布局。 下 图是 GUI 布局图。
[2 ] 和条纹分布进行了模拟研究 ; 邓磊对光的多缝 [3 ] 衍射进行了仿真 ; 而钟可君则用 Matlab 的 GUI
实现光的衍射的可视化 。 本文根据各种光学 现象的基本特征, 利用 MATLAB 的 GUIDE 功能, 结合编程实现多光学实验现象在同一平台的可视 化和可调化。
[4 ]
图1百度文库
GUI 布局图
本文将界面分为三个部分:显示区, 控制区和 。 提示区 实验的可视化在显示区中呈现。而通过 屏到 控制区来调整各光学参数。 例如光栅常数, 缝的距离, 光的波长等参数可以在这个区域中进 行调整。 还可以在这个区域中选择要模拟的实 验。本界面包含了单色光 / 白光的杨氏双缝干涉、 牛顿环、 夫琅禾费单缝和圆孔衍射、 迈克尔逊干涉 仪多类实验的模拟。提示区用来提示实验操作中 的注意事项以及可能存在的问题 。 1. 2 设置组件属性 我们需要对各组件属性 在基本布局完成后, 进行设计。在设置完组件基础属性后, 还必须对 各个组件的 callback 函数进行编写。 具体方法是, 在组件对象上右击鼠标, 选择 view Callback / Callback, 在该 Callback 回调函数中 编写代码: Function slider1 _ Callback ( hObject, eventdata, handles)
5
结
语
图4
缝宽为 0. 0103 9 mm
综上所述, 在物理实验中我们觉得高不可攀 , 可望而不可及的一些抽象现象, 都可以通过 matlab 自带的 GUI 组件来实现。 而这种实现抽象现 象可视化的方法, 相比于用全编程的方法实现可 视化来说难度大大降低。 并且, 在此界面下我们 还实现了对各参数的可调性, 这也有利于我们对 同一物理现象的深刻认识和对不同物理现象的比 较。因此这种简明直观的动态展示方法, 为光学 的理论和实践教学提供了方便, 也为我们的物理 课程教学提供了很好的方法。 参考文献:
( Hubei University, Hubei Wuhan 430062 )
Abstract: Taking advantage of MATLAB's own componentGUI, implement the simulations and visualizations of the optical experiments, such as Monochromatic light, young's doubleslit, Newton's rings, Fraunhofer diffraction and Michelson interference. Key words: optical experiments;MATLAB ;GUI;visualizations
(1)
由贝塞尔函数可得:
~
E = 2J1 ( kaθ ) kaθ
2 πC '
( kθ ) 2
[ kr1 θJ1 ( kr θ ) ] 1
r1 = a r1 = 0
= πa2 C ' (2)
4
仿真模拟结果
通过编写程序代码, 可以实现对各种光学现
因此, 光强为: I =
( πa2 ) 2
2
象在同一界面上的可视化和可调性 。如下图 2 所 C'
2
θ [ 2J kaka ] θ
1
(
)
2
示为单色光夫琅禾费圆孔衍射图样 。 = I0 (3)
[
2 J1 ( Z ) Z
]
爱里斑的半径为: r0 = 1 . 22 f λ 2a (4)
在了解清楚光学原理后进行编程 。
3
光学实验的仿真设计
图2 夫琅禾费圆孔衍射图样
程序的编写必须是在对应的代码下进行 。本 文中名称为 popupmenu2 的组件对应着白光夫琅 禾费圆孔衍射的函数回调与执行, 因此我们必须 在它的 Callback 函数语句下编写白光夫琅禾费圆 孔衍射的回调函数。 具体程序如下: Function popupmenu2 _ Callback ( hObject, eventdata, handles) val = get( hObject, 'Value') ; str = get( hObject, 'String') ; wlr = 700e - 6 ; wlg = 546. 1e - 6 ;
2
光学实验原理
光学实验原理是编程的基础。可视化程序的
编写是基于对光学现象原理的熟练掌握基础进行 的。由于篇幅的限制, 以夫琅禾费圆孔衍射 验为例: 夫琅禾费圆孔衍射中间亮纹亮度最大, 称为爱 里斑, 直径为 d, 观察平面上任意一点的复振幅为:
~ [7 ]
实
E = C″
∫∫
0
a
2π
0
e[-kr1θcos( 1 - 2) ]r1 dr1 d1
图6
单色光牛顿环
图7
迈克尔逊干涉仪
Optical Experiments Simulations and Visualizations Based on MATLAB Visual Control Interface
XU Chunfang, WANG Haoran, WANG Jiangang, DING Yimin
逊干涉仪等光学实验进行可视化模拟 。 39 中图分类号: O 4-
光现象是我们生活中的基本现象, 也是大学 物理的基本内容之一, 然而, 受实验条件的限制, 光现象的相关实验往往难以在课堂上演示 。 为 此, 近年许多教师对光学实验的 Matlab 仿真进行 了研究。 余 建 立 等 对 光 的 干 涉 现 象 进 行 了 研 [1 ] 究 ;夏漫等对光的夫琅禾费单缝衍射光强曲线
[ 1] 余建立, 等. 基于 GUI 的 光 的 干 涉 实 验 模 拟 研 究 [ J] . 宜春学院学报:3740. [ 2] 夏漫, 等. 基于 Matlab 的光的单缝衍射实验模拟研 J] . 大学物理实验, 2015 ( 4 ) :9092. 究[ [ 3] 邓磊, J] 等. 多缝的夫琅禾费衍射仿真[ 湖南文理学 2014 ( 4 ) : 5964. 院学报, [ 4] 钟可君, 张海林. 基于 MatlabGUI 设计的光学实验仿 J] . 实验室研究与探索, 2010 ( 10 ) :5253. 真[ [ 5] 刘正君. Matlab 科学计算与可视化仿真[ M] . 北京: 2009 :165. 电子工业出版社, [ 6] 罗华飞. Matlab 设计学习手册[ M] . 北京:北京航空 2009 :345423. 航天大学出版社, [ 7] 章志鸣, M] . 北京:高等教育 沈元华, 陈惠芬. 光学[ 164. 出版社, 第二版:132[ 8] 周忆, .大 等. 用 MATZAB 语言模拟光衍射实验[J] 2001 ( 4 ) : 4748. 学物理实验,
( 湖北大学, 湖北 武汉 430062 )
摘 关 键
要: 利用 MATLAB 自带 GUI, 对光学单色光杨氏双缝干涉 、 牛顿环、 夫琅禾费衍射以及迈克尔 词: 光学实验;MATLAB;GUI;可视化 文献标志码: A DOI: 10. 14139 / j. cnki. cn22 - 1228. 2016. 004. 027
从图像上我们可以直观的看出, 当缝宽变小 以后, 衍射现象变得更明显, 这是与事实相符的。 同样的方法可以得到其它光学现象的仿真 图。只需要在界面选择区域选择我们要做的模拟 实验以及改变光学参数就可以得到不同的光学图 图 5 ~ 图 7 为调整参数后不同光学实验的模 像, 拟图样
[8 ]
。
图5
杨氏双缝干涉图样