摘 要: 本文以光學等傾干涉實驗為例,利用MATLAB GUI設計實驗仿真界面,界面友好直觀,內容豐富,可以通過界面的滑動條改變相關參數,動態顯示仿真結果,觀察和分析各參數對干涉條紋的影響,為光學理論分析與實驗教學提供了方便,為相關課件的設計提供了新的途徑。
關鍵詞: 光學實驗教學 MATLAB GUI 等傾干涉 仿真
1.引言
光學實驗是物理實驗的重要內容。對光學實驗進行計算機仿真,具有重要意義[1-2]:可以把抽象的概念、現象和規律通過仿真生動形象地表達出來,使學生利于理解,加深印象;不必通過具體儀器的調試,通過電腦就可演示,節省了時間,減少了貴重儀器的損傷,等等。通過GUI設計,可以設計出界面良好、操作簡便、功能強大的用戶界面,而且人機交互性好,可以直接在界面上更改參數而不必修改程序,動態顯示仿真結果,更利于學生觀察和分析各參數對干涉條紋的影響,也為相關課件的設計提供了新的途徑。[3-4]MATLAB是集數值運算、符號運算和圖形處理等功能于一體的科學計算語言,而且提供了功能強大的圖形用戶設計界面,可設計出方便直觀的智能型交互界面[5-6]。我用MATLAB 語言的GUI設計,以等傾干涉為例,設計了仿真界面,并應用于光學實驗教學中,取得了很好效果。
2.等傾干涉原理和實驗的主要內容[7-8]
把單色點光源S放在會聚透鏡L的焦點處,使平行光束ab照射到薄膜表面上。光束分為兩部分:一部分是反射光束ab;另一部分折射后又反射,然后折射成ab,如圖1所示。通過透鏡L使ab、ab在點S′疊加,產生干涉。由于干涉條紋與ab的入射角有關,因此稱其為等傾干涉。
等傾干涉的光強分布為:I=Icos[2πdcos],其中d為薄膜的厚度,f為L焦距,r=。
等傾干涉實驗的主要內容包括實驗目的、實驗原理、實驗步驟、數據處理和思考與練習。
3.界面設計
Gui界面設計主要包括以下幾個步驟。
第一步構思草圖,編排控件的布局。打開Matlab程序,在file菜單中選擇new gui,打開guide設計界面模板,界面模板左邊的各個控件可以直接用鼠標拖到編輯框。
第二步設置各控件的屬性。比如設置各控件的標識(Tag)、顏色、字體等。
第三步各個控件代碼的設計。關鍵是OpeningFcn(初始界面函數)和控件的Callback(回調函數)代碼的設計。 初始界面函數即設定各參數的初始值,可根據實際情況設定。回調函數是核心,是對界面控件觸發時的事件響應函數。
根據需要,界面使用了7個按鈕(Push Button),標識分別為:實驗目的、實驗演示、實驗步驟、數據處理、思考與練習、實驗演示和系統退出,用鼠標點擊任一個項目,則會執行相應的功能;2個靜態文本框(Static Text)用于輸入波長和薄膜厚度;2個滑動條(Slide),用鼠標拖動滑動條可以改變波長和厚度的大小;1個坐標軸對象(Axes)用于顯示仿真結果。界面如圖2所示。
4.演示控件的回調函數
控件的功能是通過執行其回調程序來實現的,用戶界面設計完成后,選中控件用鼠標雙擊,在彈出的菜單中選擇View Callbacks,在其子菜單中選擇Callback,就可以進入回調程序編譯器中,在回調程序編譯器中編寫個控件的代碼,就可以使圖形界面完成約定的任務。
演示控件的回調函數代碼:
Lambda=str2num(get(handles.slide1,’String’)); %從滑動條中獲取波長的大小
d=str2num(get(slide2,’String’)); %從滑動條中獲取厚度的大小
f=200;n=1;N=300;xmax=10;ymax=10;
x=linspace(-xmax,xmax,N);y=linspace(-ymax,ymax,N); %設定相關參數和范圍
for i=1:N
for j=1:N
r(i,j)=sqrt(x(i)*x(i)+y(j)*y(j));
B(i,j)=cos(pi*(2*n*d*cos(asin(n*sin(atan(r(i,j)/f)))))/Lambda).^2;
end
end%計算光強的大小
Br=4*B*NCL;NCL=255; colormap(gray(NCL)); %設定灰度等級
axes(handles.axes1) image(x,y,Br); %在坐標軸對象中顯示仿真結果
5.仿真結果和結果分析
在界面中設定波長的初始數據為,厚度,用鼠標點擊演示控件,得到如圖3的仿真結果。
用鼠標拖動滑動條,使由大到小變化,則在仿真界面上可以看到,條紋向外發散,如圖4.1所示;如果使由小到大變化,則條紋向里收縮,如圖4.2所示。變化結果與理論完全相同。連續拖動滑動條,則可以觀察到條紋連續變化,實現仿真的動態演示。
同樣,如果通過鼠標改變波長滑動條數值大小,可以看到條紋隨波長變化而變化,結果與理論完全相同。
6.結語
利用Matlab Gui可以設計出內容豐富、界面直觀的光學實驗仿真界面,在界面上可以輸入參數,可以通過滑動條來該變參數,實現動態仿真,更利于學生觀察和分析各參數對干涉條紋的影響,也為相關課件的設計提供了新的途徑。
參考文獻:
[1]梁齊,許曉琳等.光干涉實驗的計算機模擬[J].大學物理實驗,2003,16,(3):61-63.
[2]宋清,熊萬杰.光學現象的計算機仿真[J].中山大學學報論叢,2005,25,(3):24-29.
[3]基于MATLABGUI的大學物理交互式演示實驗動畫設計[J]. 大學物理實驗,2010,23,(1):52-53.
[4]基于GUI的空間濾波實驗的計算機模擬 [J]. 物理實驗,2010,30,(3):12-15.
[5]羅華飛.MATLAB GUI設計學習手記[M].北京:北京航空航天大學出版社,2009:224-231.
[6]陳 光,毛濤濤等.精通MATLAB GUI設計[M].北京:電子工業出版社,2008:268.
[7]姚啟鈞.光學教程[M].北京:高等教育出版社,2008:33-35.
[8]龔勇清,易江林等.大學物理實驗[M].北京:科學出版社,2007:123-129.