徐春芳,王浩然,王建崗,丁益民
(湖北大學(xué),湖北 武漢 430062)
?
基于MATLAB的多光學(xué)現(xiàn)象仿真可視化設(shè)計
徐春芳,王浩然,王建崗,丁益民
(湖北大學(xué),湖北 武漢430062)
利用MATLAB自帶GUI,對光學(xué)單色光楊氏雙縫干涉、牛頓環(huán)、夫瑯禾費衍射以及邁克爾遜干涉儀等光學(xué)實驗進(jìn)行可視化模擬。
光學(xué)實驗;MATLAB;GUI;可視化
光現(xiàn)象是我們生活中的基本現(xiàn)象,也是大學(xué)物理的基本內(nèi)容之一,然而,受實驗條件的限制,光現(xiàn)象的相關(guān)實驗往往難以在課堂上演示。為此,近年許多教師對光學(xué)實驗的Matlab仿真進(jìn)行了研究。余建立等對光的干涉現(xiàn)象進(jìn)行了研究[1];夏漫等對光的夫瑯禾費單縫衍射光強曲線和條紋分布進(jìn)行了模擬研究[2];鄧?yán)趯獾亩嗫p衍射進(jìn)行了仿真[3];而鐘可君則用Matlab的GUI實現(xiàn)光的衍射的可視化[4]。本文根據(jù)各種光學(xué)現(xiàn)象的基本特征,利用MATLAB的GUIDE功能,結(jié)合編程實現(xiàn)多光學(xué)實驗現(xiàn)象在同一平臺的可視化和可調(diào)化。
MATLAB中Guide是圖形用戶接口開發(fā)環(huán)境的簡稱,它提供了一系列工具用于建立GUI對象[6]。相對于全編程的方法實現(xiàn)可視化,GUIDE所提供的工具大大簡化了設(shè)計和建立GUI的過程。在建立GUI后,可以對GUI圖形界面布局和編程,通過GUI圖形界面來控制實驗現(xiàn)象的可視化。
1.1GUI布局
在建立一個新的GUI后,要對GUI布局。依據(jù)需要在GUI布局區(qū)添加適當(dāng)?shù)慕M件。在添加控件以前我們要對所需要改變的參量要有具體的了解,這樣有利于我們對GUI做合理的布局。下圖是GUI布局圖。
圖1 GUI布局圖
本文將界面分為三個部分:顯示區(qū),控制區(qū)和提示區(qū)。實驗的可視化在顯示區(qū)中呈現(xiàn)。而通過控制區(qū)來調(diào)整各光學(xué)參數(shù)。例如光柵常數(shù),屏到縫的距離,光的波長等參數(shù)可以在這個區(qū)域中進(jìn)行調(diào)整。還可以在這個區(qū)域中選擇要模擬的實驗。本界面包含了單色光/白光的楊氏雙縫干涉、牛頓環(huán)、夫瑯禾費單縫和圓孔衍射、邁克爾遜干涉儀多類實驗的模擬。提示區(qū)用來提示實驗操作中的注意事項以及可能存在的問題。
1.2設(shè)置組件屬性
在基本布局完成后,我們需要對各組件屬性進(jìn)行設(shè)計。在設(shè)置完組件基礎(chǔ)屬性后,還必須對各個組件的callback函數(shù)進(jìn)行編寫。
具體方法是,在組件對象上右擊鼠標(biāo),選擇view Callback/Callback,在該Callback回調(diào)函數(shù)中編寫代碼:
Function slider1_Callback(hObject,eventdata,handles)
val1=num2str(get(handles.slider1,'value'));
set(handles.edit1,'string',val1);
上述代碼是單色光波長所對應(yīng)的slider的回調(diào)函數(shù)。此回調(diào)函數(shù)用來獲取slider的當(dāng)前值。
光學(xué)實驗原理是編程的基礎(chǔ)??梢暬绦虻木帉懯腔趯鈱W(xué)現(xiàn)象原理的熟練掌握基礎(chǔ)進(jìn)行的。由于篇幅的限制,以夫瑯禾費圓孔衍射[7]實驗為例:
夫瑯禾費圓孔衍射中間亮紋亮度最大,稱為愛里斑,直徑為d,觀察平面上任意一點的復(fù)振幅為:
(1)
由貝塞爾函數(shù)可得:
(2)
因此,光強為:
(3)
愛里斑的半徑為:
(4)
在了解清楚光學(xué)原理后進(jìn)行編程。
程序的編寫必須是在對應(yīng)的代碼下進(jìn)行。本文中名稱為popupmenu2的組件對應(yīng)著白光夫瑯禾費圓孔衍射的函數(shù)回調(diào)與執(zhí)行,因此我們必須在它的Callback函數(shù)語句下編寫白光夫瑯禾費圓孔衍射的回調(diào)函數(shù)。
具體程序如下:
Function popupmenu2_Callback(hObject,eventdata,handles)
val=get(hObject,'Value');
str=get(hObject,'String');
wlr=700e-6;
wlg=546.1e-6;
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 '白光圓孔夫瑯禾費衍射’
通過編寫程序代碼,可以實現(xiàn)對各種光學(xué)現(xiàn)象在同一界面上的可視化和可調(diào)性。如下圖2所示為單色光夫瑯禾費圓孔衍射圖樣。
圖2 夫瑯禾費圓孔衍射圖樣
還可以通過對界面上各參數(shù)的調(diào)節(jié)來實現(xiàn)同一實驗現(xiàn)象不同條件下的比較:
圖3,圖4是當(dāng)光的波長保持為737.4 nm,二分之一屏幕寬度為0.779 22 mm不變,只改變縫寬時夫瑯禾費單縫衍射的比較:
圖3 縫寬為0.031 1 mm
圖4 縫寬為0.0103 9 mm
從圖像上我們可以直觀的看出,當(dāng)縫寬變小以后,衍射現(xiàn)象變得更明顯,這是與事實相符的。
同樣的方法可以得到其它光學(xué)現(xiàn)象的仿真圖。只需要在界面選擇區(qū)域選擇我們要做的模擬實驗以及改變光學(xué)參數(shù)就可以得到不同的光學(xué)圖像,圖5~圖7為調(diào)整參數(shù)后不同光學(xué)實驗的模擬圖樣[8]。
圖5 楊氏雙縫干涉圖樣 圖6 單色光牛頓環(huán)
圖7 邁克爾遜干涉儀
綜上所述,在物理實驗中我們覺得高不可攀,可望而不可及的一些抽象現(xiàn)象,都可以通過matlab自帶的GUI組件來實現(xiàn)。而這種實現(xiàn)抽象現(xiàn)象可視化的方法,相比于用全編程的方法實現(xiàn)可視化來說難度大大降低。并且,在此界面下我們還實現(xiàn)了對各參數(shù)的可調(diào)性,這也有利于我們對同一物理現(xiàn)象的深刻認(rèn)識和對不同物理現(xiàn)象的比較。因此這種簡明直觀的動態(tài)展示方法,為光學(xué)的理論和實踐教學(xué)提供了方便,也為我們的物理課程教學(xué)提供了很好的方法。
[1]余建立,等. 基于GUI的光的干涉實驗?zāi)M研究[J].宜春學(xué)院學(xué)報:37-40.
[2]夏漫,等.基于Matlab的光的單縫衍射實驗?zāi)M研究[J].大學(xué)物理實驗,2015(4):90-92.
[3]鄧?yán)?等.多縫的夫瑯禾費衍射仿真[J]湖南文理學(xué)院學(xué)報,2014(4):59-64.
[4]鐘可君,張海林.基于MatlabGUI設(shè)計的光學(xué)實驗仿真[J].實驗室研究與探索,2010(10):52-53.
[5]劉正君.Matlab科學(xué)計算與可視化仿真[M].北京:電子工業(yè)出版社,2009:1-65.
[6]羅華飛.Matlab設(shè)計學(xué)習(xí)手冊[M].北京:北京航空航天大學(xué)出版社,2009:345-423.
[7]章志鳴,沈元華,陳惠芬.光學(xué)[M].北京:高等教育出版社,第二版:132-164.
[8]周憶,等.用MATZAB語言模擬光衍射實驗[J].大學(xué)物理實驗,2001(4):47-48.
Optical Experiments Simulations and Visualizations Based on MATLAB Visual Control Interface
XU Chun-fang,WANG Hao-ran,WANG Jian-gang,DING Yi-min
(Hubei University,Hubei Wuhan 430062)
Taking advantage of MATLAB's own component-GUI,implement the simulations and visualizations of the optical experiments,such as Monochromatic light,young's double-slit,Newton's rings,Fraunhofer diffraction and Michelson interference.
optical experiments;MATLAB;GUI;visualizations
2016-03-15
理論物理國家重點實驗室開放課題(Y3KF321CJ1);湖北大學(xué)《大學(xué)物理實驗精品資源共享課》建設(shè)項目(C201407)
1007-2934(2016)04-0086-03
O 4-39
A
10.14139/j.cnki.cn22-1228.2016.004.027