光柵衍射實驗的MATLAB仿真_第1頁
光柵衍射實驗的MATLAB仿真_第2頁
光柵衍射實驗的MATLAB仿真_第3頁
光柵衍射實驗的MATLAB仿真_第4頁
光柵衍射實驗的MATLAB仿真_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

.-可修編..---可修編.屆別2012屆學(xué)號200814060106畢業(yè)設(shè)計光柵衍射實驗的MATLAB仿真目錄摘要IABSTRACTII1引言11.1國內(nèi)外研究動態(tài)12理論依據(jù)22.1平面光柵衍射實驗裝置22.2原理分析32.3MATLAB主程序的編寫62.4仿真圖形的用戶界面設(shè)計73光柵衍射現(xiàn)象的分析83.1縫數(shù)N對衍射條紋的影響83.2波長λ對衍射條紋的影響103.3光柵常數(shù)d對衍射光強的影響123.4條紋缺級現(xiàn)象134總結(jié)14參考文獻16致17附錄18摘要平面光柵衍射實驗是大學(xué)物理中非常重要的實驗,實驗裝置雖然簡單,但實驗現(xiàn)象卻是受很多因素的影響,例如波長λ,縫數(shù)N,以及光柵常數(shù)d。本文利用惠更斯一菲涅耳原理,獲得了衍射光柵光強的解析表達式,再運用Matlab軟件,將模擬的界面設(shè)計成實驗參數(shù)可調(diào)gui界面,能夠連續(xù)地改變波長λ,縫數(shù)N,光柵常數(shù)d,從而從這3個層面對衍射光柵的光強分布和譜線特征進行了數(shù)值模擬,并討論了光柵衍射的缺級現(xiàn)象,不僅有利于克服試驗中物理儀器和其他偶然情況等因素給實驗帶來的限制和誤差.并而且通過實驗現(xiàn)象的對比,能夠加深對光柵衍射特征及規(guī)律的理解,這些都很有意義。關(guān)鍵詞:平面光柵衍射;惠更斯-菲涅爾原理;gui;光強分布;MatlabABSTRACTPlanegratingdiffractionexperimentisveryimportantintheCollegephysicsexperiment,thoughtheexperimentalequipmentissimple,theresultwillbeinfluencedbymanyfactors,suchaswavelengthλandslotnumberN,andgratingnumberd.ThepapertakesadvantageofHuygens-Fresnelprinciple,thenfuguresthefomulaofdiffractionlightintensitydistribution.AtlasttheexperimentissimulatedbyMatlabsoftware.Theusercancontinuouslychangeparameterwavelengthλ,slotnumberN,gratingnumberd,soastogetthedifferentexperimentalphenomenon,andthemissingorderofgratingdiffractionphenomenawillbediscussed.Notonlythematlabsimulationcanbeusedtooverethelimitationsofexperimentalequipmentandotherincidentalfactors.butalsothroughtheparisonofexperimentalphenomenon,itcandeepentheunderstandingofgratingdiffractioncharactersandrules.Asawhole,itisofsignificance.Keywords:diffractionofplanegratings;Huygens-Fresnelprinciple,GUI,andlightintensitydistribution;Matlab--可修編.1引言荷蘭物理學(xué)家惠更斯(Huygens)是光的波動說創(chuàng)始人,1690年他提出了關(guān)于波如何傳播的惠更斯原理,即認為波前上每一點都可看為是新的球面子波源,子波的包絡(luò)面就是新的波前。根據(jù)這一原理可導(dǎo)出反射和折射定律,也能得出光波經(jīng)過小孔后偏離幾何光學(xué)規(guī)律向各方向傳播,但不能區(qū)別光的直線傳播和衍射現(xiàn)象產(chǎn)生的條件,更不能定量計算沿不同方向傳播的光波的振幅,因而無法確定衍射圖樣中的光強分布,只是一種幾何作圖法。1818年,菲涅爾(Fresnel)吸收了惠更斯原理中的“子波”概念,在楊氏干涉實驗的啟發(fā)下對惠更斯原理進行了補充,認為子波之間還存在相干疊加。這樣用干涉原理補充的惠更斯原理稱為惠更斯-菲涅爾原理。1882年,基爾霍夫(Kirchhoff)進一步研究了惠更斯-菲涅爾原理,用標量近似法得到了菲涅爾-基爾霍夫積分公式[1],為原理奠定了比較完善的數(shù)學(xué)基礎(chǔ),因而能依此計算得出光柵衍射圖樣中光強分布規(guī)律的數(shù)學(xué)表達式。另外光柵衍射光強的計算還可采用另外一種方法—振幅矢量法[2]。本文將采用的此種方法計算出光強表達式,進一步編寫出matlab仿真光柵衍射的主程序。1.1國內(nèi)外研究動態(tài)對光學(xué)實驗進行計算機仿真,具有兩個方面的意義:一方面,利用仿真結(jié)果指導(dǎo)實際實驗,前期投資少,且可以減少貴重儀器的損傷等;另一方面,在教學(xué)上,將抽象難懂的概念、規(guī)律通過實驗仿真生動、形象地表現(xiàn)出來,使學(xué)生更易于接受,具有明顯的教學(xué)效果[3]。波動光學(xué)實驗內(nèi)容比較抽象,如不借助實驗,學(xué)生很難理解。國外著名的光學(xué)教材配有大量的圖片(包括計算和實驗獲得的圖片),來形象地說明光學(xué)中抽象難懂的理論。波動光學(xué)實驗一般需要穩(wěn)定的環(huán)境,高精密的儀器,因此在教室里能做的光學(xué)實驗極為有限,而且也受到授課時間的限制。為了克服光學(xué)實驗對實驗條件要求比較苛刻的缺點,可采用計算機仿真光學(xué)實驗,特別是光學(xué)演示實驗,配合理論課的進行,把光學(xué)課程涉及的大多數(shù)現(xiàn)象展示在學(xué)生面前,以加深對光學(xué)內(nèi)容的理解。我國光學(xué)教材在利用計算機仿真方面相對落后,至今沒有同類教材出現(xiàn)。在2003年舉行的網(wǎng)絡(luò)教育軟件展上,有關(guān)光學(xué)實驗的網(wǎng)絡(luò)教學(xué)軟件都偏重于理論分析方面,對計算機應(yīng)用于光學(xué)實驗的仿真方面未給與充分重視[4]。在計算機日益普及的今天,計算機仿真技術(shù)作為虛擬實驗手段己經(jīng)成為計算機應(yīng)用的一個重要分支,它是繼理論分析和物理實驗之后,認識客觀世界規(guī)律性的一種新型手段。1.2Matlab簡介Matlab是MathWorks公司于1982年推出的一套高性能的數(shù)值計算和可視化軟件。它集數(shù)值分析、矩陣運算、信號處理和圖形顯示于一體,構(gòu)成了一個方便、界面友好的用戶環(huán)境。它還包括了ToolBox工具箱)的各類問題的求解工具,可用來求解特定學(xué)科的問題。其特點是:(1)可擴展性:Matlab最重要的特點是易于擴展,它允許用戶自行建立指定功能的M文件。對于一個從事特定領(lǐng)域的工程師來說,不僅可利用Matlab所提供的函數(shù)及基本工具箱函數(shù),還可方便地構(gòu)造出專用的函數(shù),從而大大擴展了其應(yīng)用范圍。當前支持Matlab的商用Toolbox工具箱)有數(shù)百種之多。而由個人開發(fā)的Toolbox則不可計數(shù)。(2)易學(xué)易用性:Matlab不需要用戶有高深的數(shù)學(xué)知識和程序設(shè)計能力,不需要用戶深刻了解算法及編程技巧。(3)高效性:Matlab語句功能十分強大,一條語句可完成十分復(fù)雜的任務(wù)。如fft語句可完成對指定數(shù)據(jù)的快速傅里葉變換,這相當于上百條C語言語句的功能。它大大加快了工程技術(shù)人員從事軟件開發(fā)的效率。據(jù)MathWorks公司聲稱,Matlab軟件中所包含的Matlab源代碼相當于70萬行C代碼。由于Matlab具有如此之多的特點,在歐美高等院校,Matlab己成為應(yīng)用于線性代數(shù)、自動控制理論、數(shù)理統(tǒng)計、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真等高級課程的基本教學(xué)工具;在研究單位、工業(yè)部門,Matlab也被廣泛用于研究和解決各種工程問題[5]。2理論依據(jù)2.1平面光柵衍射實驗裝置平面衍射光柵是由大量相互平行、等寬、等距的狹縫(或刻痕)組成;它能達到的刻槽密度需要具備亞微米的加工設(shè)備和工藝技術(shù),達到納米級的精度要求,是屬于光、機、電結(jié)合的高技術(shù)項目.以衍射光柵為色散元件組成攝譜儀或單色儀是物質(zhì)光譜分析的極其精密的光譜分析儀器,在研究譜線結(jié)構(gòu)、特征譜線的波長和強度,特別是研究物質(zhì)結(jié)構(gòu)和對元素作定量與定性的分析中有極其廣泛的應(yīng)用。平面光柵衍射的實驗裝置如圖1所示,S為點光源或與紙面垂直的狹縫光源,它位于透鏡的焦平面上,屏幕放在物鏡的焦平面上。該裝置衍射屏上有一系列等寬等間隔的平行狹縫,設(shè)每條縫的寬度為b,相鄰兩縫問不透明部分的寬度為a,則相鄰狹縫上對應(yīng)點之問的距離(即光柵常數(shù))d=a+b,其倒數(shù)表示每毫米內(nèi)有多少條狹縫,稱為光柵密度;θ是衍射角,透射光柵總縫數(shù)為N。圖2-1光柵衍射實驗裝置2.2原理分析本文用一種在普通物理階段嚴格計算光柵衍射光強分布的振幅矢量方法[5],此方法回避了困難的菲涅耳-基爾霍夫積分,該積分復(fù)雜難懂,故不采納。用振幅矢量法計算有兩個顯著的優(yōu)點,一個是物理概念清楚,另一個是計算簡單嚴格。實際上,衍射的本質(zhì)就是無窮多個子波干涉的結(jié)果.下面通過把光柵的N個縫的每一個縫都分割成n個子波帶,最后讓n→∞,考慮這無窮多個子波的干涉,用振幅矢量法嚴格計算出光柵衍射的光強分布表達式.設(shè)這N個縫的寬度都是b,相距都為a,波長為λ的光垂直照射到這N個縫前時,每條縫單獨衍射時的最大光強為,其相應(yīng)的振幅為?,F(xiàn)在將每條縫分為n等份,每一等份的振幅都為=/n.當衍射光以θ角出射時,以第1個縫的第1等份子波的位相為零作基準,則第2,3,??,n等份子波與基準子波的位相差為,2??,(n-1)。,第二個縫的第1,2,3,…,n等分子波與基準子波的位相差為,+,+2,……,+(n-1).。。第j個縫的第k等份子波與基準子波的位相差為其振幅的x和y分量為:……(1)……(2)設(shè)所有子波帶在屏上干涉的合振幅為,并且把表示成下式,省略等式右邊的下標n其中i為虛數(shù)單位,而……(3)……(4)于是得到屏上的光強分布,得:……(5)上式運用了復(fù)變函數(shù)論的歐拉公式以及等比數(shù)列的求和公式?,F(xiàn)在最關(guān)鍵的是讓n→∞取極限才是所有子波在屏上的合振幅……(6)其中只有分母部分包含有n的因子,分母取極限變形,則……(7)上式運用了數(shù)學(xué)里面一個基本極限公式由于,所以最后得到的光柵衍射的光強分布的表達式……(8)式(8)中的..及其中的來源于單縫衍射,稱為單縫衍射因子;來源于縫間干涉,稱為縫間干涉因子。因此,可以說多縫衍射光強分布是多光束干涉光強分布受單縫衍射光強分布調(diào)制的結(jié)果(圖2-3)。在光柵衍射中,相鄰兩主極大之間還分布著一些暗條紋,這些暗條紋是由各縫射出的衍射光因干涉相消而形成的,即與縫間干涉因子有關(guān)。用公式來表示,零點在下列位置出現(xiàn)暗條紋[6]:……(9)在每兩個主極大之間,分布著(N-1)暗線(零點)和(N-2)個光強極弱的次級明條紋,這些明條紋幾乎是觀察不到的。另外條紋的半角寬度也可作為研究光柵衍射條紋規(guī)律的一個重要物理量。根據(jù)半角寬度的定義:……(10)顯然式(10)給出了半角寬度與各個實驗參數(shù)之間的關(guān)系。2.3MATLAB主程序的編寫根據(jù)公式(8)可知,λ,N,b,d,f,等參數(shù)影響著光柵衍射的光強分布與光譜特性。f為的焦距。用MATLAB編寫的主程序[7][8]如下:>>clearwavelength=0.0007000;f=100;b=0.005;d=0.01;N=4;%設(shè)定參數(shù)值(單位為mm)x=linspace(-4*pi,4*pi,1000);%設(shè)定圖像的x方向范圍forj=1:1000%對x方向的全部點進行循環(huán)計算u=(pi*b/wavelength)*(((x(j)/sqrt(x(j)^2+f^2))));Idan=((sin(u)/u).^2);%單縫衍射光強公式Iduo=((sin(d*u*N/b)/sin(d*u/b)).^2);%多縫干涉光強公式I(j)=Idan*Iduo;%光柵衍射光強公式endholdon;NCLevels=255;Ir=NCLevels*I;IG=NCLevels*Idan;IB=NCLevels*Iduo;colormap(gray(NCLevels));%用灰度級顏色圖subplot(2,1,2),image(x,I,Ir)%畫圖像subplot(2,1,1),plot(x,I(:)/max(I));%屏幕上光強與位置的關(guān)系曲線title('光柵衍射仿真結(jié)果')以上主程序中所用到的數(shù)據(jù)為λ=700nm,N=5,b=0.005mm,d=0.01mm,f=100mm,(選取正入射,本文程序運行時入射方向和光柵平面法線之間的夾角都為零)。運行以上程序得到如下圖樣:圖2-2光柵衍射仿真圖像通過圖2-2可知,光柵衍射仿真圖像與理論基本吻合,光柵衍射光強是多縫干涉光強受單縫衍射調(diào)制的結(jié)果。這為下文圖形用戶界面(GUI)的設(shè)計以及光柵衍射研究提供了基礎(chǔ)。2.4仿真圖形的用戶界面設(shè)計圖形用戶界面(GraphicalUserInterface,簡稱GUI)指的是用戶與計算機或計算機程序的接觸點或交互方式,是用戶與計算機進行信息交流的平臺。用戶界面設(shè)定了如何觀看和如何感知計算機操作系統(tǒng)或應(yīng)用程序(通常是根據(jù)結(jié)構(gòu)和用戶界面功能的有效性來選擇),使用戶通過輸入設(shè)備,如:鍵盤、鼠標、等激活這些程序,計算機根據(jù)用戶的操作在屏幕上顯示相應(yīng)的圖形、文本、和計算結(jié)果,實現(xiàn)人與計算機的交流。上文編寫的程序代碼,已經(jīng)可以實現(xiàn)光柵衍射實驗的計算機仿真了,現(xiàn)在要做的是用圖形用戶界面來把程序封裝起來,讓用戶不用直接面對枯燥的程序代碼就可以實現(xiàn)各種仿真的操作[9]。一個完整的MATLAB圖形用戶界面,需要涉及到界面的控件布置、編輯和各種控件后臺程序代碼的添加。在GUI界面下,用戶可以非常方便地改變參數(shù)設(shè)置,從而可以得到對應(yīng)的仿真圖樣。顯然當縫數(shù)N=1為單縫衍射,N=2為雙縫干涉,N>2為光柵衍射,這些在該設(shè)計界面下都能滿足,如圖:圖2-3仿真界面3光柵衍射現(xiàn)象的分析3.1縫數(shù)N對衍射條紋的影響根據(jù)式式(9)和式(10)的理論關(guān)系式,可以初步得出縫數(shù)N與衍射條紋的一些關(guān)系,如亮紋的半角寬度明顯和縫數(shù)N成反比關(guān)系。而圖2是matlab對不同數(shù)目的狹縫在屏幕上形成的相對光強分布和衍射條紋的模擬。在界面中改變縫數(shù)N的值。其余參數(shù)如圖。三幅圖像分別對應(yīng)N=3,N=7,N=10:圖3-1不同縫數(shù)的衍射圖樣比較觀察圖3-1中的三幅圖可以看出:(1)主極大的位置與縫數(shù)N對沒有關(guān)系(相鄰兩個主極大之間的角間距不變),但它們的寬度隨N減少;(2)相鄰主極大之間有N-1條暗紋和N-2條次極大。(3)狹縫數(shù)目N越大,則主極大亮線的半角寬度越小,主極大的銳度越大,反映在衍射圖樣上的主極大亮紋越細,相應(yīng)地次極大的線寬變小,亮度變?nèi)鮗10]。3.2波長λ對衍射條紋的影響從式(10)我們可以看出,譜線的半角寬度與Nd的乘積成反比,Nd愈大,愈小,譜線愈窄,銳度愈好.如果光源發(fā)出的光單色性很好,這樣光柵給出的光譜是一組很明銳的譜線。多縫衍射圖樣的半角寬度與λ成正比關(guān)系,在實驗室當中很難得到任意波長的光波,毫無疑問將增加實驗的成本以及對實驗器材的要求也是相當高,對此,采用matlab來模擬這個實驗,在本文設(shè)計的圖形用戶界面(GUI)中連續(xù)的改變波長λ時,得到衍射光強分布如圖3-2所示,為方便觀察,參數(shù)設(shè)置如圖,波長分別取400nm,600nm,700nm的光波。圖3-2不同波長的衍射圖樣將圖3-2中不同波長的光強分布曲線通過處理到同一圖像下圖3-3上??梢姽獾姆秶鸀?80nm-760nm,實線代表波長為400nm光波的譜線,虛線代表波長為600nm光波的譜線。粗實線表示波長為700nm。圖3-3合成波形圖從圖3-2,圖3-3我們可以得到衍射光強隨波長λ的變化規(guī)律為:衍射條紋的主極大位置不變,而次極大位置沿兩邊發(fā)生了移動。主(次)極大的半角寬度及主(次)極大條紋的間距均隨λ的增長而增大。隨著λ的增大,衍射譜線變寬,銳度變壞(即譜線變得模糊)。3.3光柵常數(shù)d對衍射光強的影響由式(10)可以得出譜線的半角寬度與光柵常數(shù)d成反比關(guān)系.當其它參數(shù)保持不變時,我們僅改變光柵常數(shù)d的值,同樣在設(shè)計界面運行時取用不同的d值,當d=0.01,d=0.03,d=0.08(單位為mm)衍射光強分布如圖5所示:圖3-4不同光柵常數(shù)的衍射圖像從圖5中三個圖比較可以看出:衍射光強主極大的半角寬度及主極大條紋的間距隨d的增大而減小。主極大的位置隨d的增大,逐漸向中央亮紋靠攏。衍射譜線變窄,銳度變好。3.4條紋缺級現(xiàn)象由式(8)可知,光柵衍射的強度分布受到單縫衍射因子和縫間干涉因子的共同作用.縫問間涉因子決定了衍射條紋的主極大的位置和半角寬度,而單縫衍射因子并不改變主極大的位置和半角寬度,只改變各級主極大的強度;或者說,僅在于影響強度在各級主極大問的分配.我們在討論光柵公式時,只是從多光束干涉的角度說明了疊加光強最大而產(chǎn)生明條紋的必要條件,但當這一θ角位置同時也滿足單縫衍射的暗紋條件時,可將這一位置看成是光強度為零“干涉加強”。當k與k’滿足下列公式時看來應(yīng)出現(xiàn)某k級明條紋的位置,實際上卻是暗條紋,既k級明條紋不出現(xiàn),這種現(xiàn)象稱為缺級現(xiàn)象?!?1)M文件封裝的程序代碼中編寫的縫寬b=0.005mm,透鏡L2的焦距f=100mm,為使得圖像易于觀察,在M文件的程序代碼中將f=100mm修改為f=40mm。其他參數(shù)λ=600nm,N=4,d=2b=0.01mm和d=4b=0.02mm代入界面中運行得到如下圖形:圖3-5缺級現(xiàn)象圖解當d=2b=0.01mm時,由式(11)中可推算出缺級應(yīng)出現(xiàn)在±2,±4,...級條紋,而從圖3-5中模擬圖樣可以清晰的得知用matlab模擬光柵衍射現(xiàn)象與理論完全吻合。同樣當d=4b=0.02mm時,缺級應(yīng)出現(xiàn)在±4,±8,......。這一實驗現(xiàn)像也得到了完美模擬再現(xiàn)。4總結(jié)計算機仿真技術(shù)作為一個虛擬實驗的手段在現(xiàn)在的科研學(xué)習(xí)中發(fā)揮著愈來愈重要的作用。特別是在光學(xué)教學(xué)過程中,對光學(xué)現(xiàn)象的理解離不開光學(xué)實驗。采用計算機仿真技術(shù)對其進行仿真,得到滿足各種條件的光學(xué)實驗結(jié)果圖像,有助于學(xué)生在學(xué)習(xí)過程中建立清晰正確的觀念。通過上述討論分析可知,利用MATLAB軟件對平面光柵衍射實驗進行仿真模擬,不受實驗儀器和場所的限制,將模擬的界面設(shè)計成實驗參數(shù)可調(diào)的人機交互平臺,可以很輕松的通過調(diào)節(jié)界面上的實驗參數(shù)就能得到不同參數(shù)條件下的衍射強度分布和衍射譜線,對于幫助學(xué)生理解光學(xué)原理具有積極的作用,并進一步提高大學(xué)物理的趣味性;同時,對衍射光柵作為各種光譜儀器的核心元件的制作和研究進行了更深一步的認識。此方法在物理教學(xué)中具有重要的意義。本篇論文基本實現(xiàn)了光柵衍射實驗的仿真各個方面,并由理論驗證仿真結(jié)果的正確性。但由于光學(xué)實驗仿真工作涉及的程序代碼繁雜,加上時間倉促和水平有限,論文中難免有不盡人意之處,有待在后面的工作中加以改進。參考文獻[1]趙凱華,鐘錫華.光學(xué)[M]..大學(xué),1984.[2]X星輝.用振幅矢量法計算光柵衍射的光強分布[J].工科物理1998年第8卷第6期.[3]符運良.MATLAB在光學(xué)教學(xué)中的應(yīng)用[J].:華南熱帶農(nóng)業(yè)大學(xué)學(xué)報,2004,3:1-2.[4]曲偉娟.基于Matlab的光學(xué)實驗仿真[J].:西北工業(yè)大學(xué)學(xué)報,2004,21(3):21-24.[5]X衛(wèi)國.MATLAB程序設(shè)計與應(yīng)用(第二版)[M].高等教育,2009.[6]姚啟鈞.光學(xué)教程[M].第4版.:高等教育,2008.[7]周憶,梁齊.用MATLAB語言模擬光衍射實驗[J].大學(xué)物理實驗,2001.[8]藍海江.光柵衍射及其特例的MATLAB仿真[J].XX師專學(xué)報,2008.06.[9]王正林,X明.精通MATLAB[M].:電子工業(yè),2007.[10]李德釗,金東星.大學(xué)物理學(xué)習(xí)指導(dǎo)[M].機械工業(yè),2007.05.致在本文完稿之際,我要衷心的感謝我的指導(dǎo)老師姚敏教授。我在論文工作中遇到過很多困難,都是在姚老師的悉心指導(dǎo)與不斷鼓勵下克服的。姚老師知識淵博、經(jīng)驗豐富、治學(xué)態(tài)度嚴謹、作風(fēng)樸實,不僅在學(xué)術(shù)工作上給于我多方面的指導(dǎo),也教會我許多做人的道理。在此,我要再次向姚老師表示深深的謝意。感謝X澤利、廖忠誠、X柏順、謝明付、尹忠甫等同一小組的兄弟們,和他們之間進行的激烈的、有益的討論,是我在此期間所獲得的寶貴財富。也感謝同寢室的兄弟們無私的奉獻,為我的論文順利完成提供了極大的幫助和促進。感謝我的父親和母親,他們默默的支持和鼓勵,使我安心于學(xué)習(xí),順利完成這篇論文。感謝我所有的家人,他們對我的大力支持和鼓勵是我不斷前進的動力源泉。謝謝!附錄GUI界面的M文件封裝的主程序代碼functionvarargout=hg(varargin)%HGM-fileforhg.fig%HG,byitself,createsanewHGorraisestheexisting%singleton*.%%H=HGreturnsthehandletoanewHGorthehandleto%theexistingsingleton*.%%HG('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinHG.Mwiththegiveninputarguments.%%HG('Property','Value',...)createsanewHGorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforehg_OpeningFgetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtohg_OpeningFviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelphg%LastModifiedbyGUIDEv2.521-May-201201:34:22%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningF',hg_OpeningF,...'gui_OutputF',hg_OutputF,...'gui_LayoutF',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainf(gui_State,varargin{:});elsegui_mainf(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforehgismadevisible.functionhg_OpeningF(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputF.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%vararginmandlineargumentstohg(seeVARARGIN)%Choosedefaultmandlineoutputforhgset(handles.edit4,'String',0.000005);set(handles.edit1,'String',1);set(handles.edit2,'String',600e-9);set(handles.edit3,'String',0.00001);handles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakeshgwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%Outputsfromthisfunctionarereturnedtothemandline.functionvarargout=hg_OutputF(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultmandlineoutputfromhandlesstructurevarargout{1}=handles.output;%Executesonslidermovement.functionslider1_Callback(hObject,eventdata,handles)%hObjecthandletoslider1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofsliderN=get(handles.slider1,'value');set(handles.edit1,'string',num2str(N));%Executesduringobjectcreation,aftersettingallproperties.functionslider1_CreateF(hObject,eventdata,handles)%hObjecthandletoslider1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);end%Executesonslidermovement.functionslider2_Callback(hObject,eventdata,handles)%hObjecthandletoslider2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofsliderl=get(handles.slider2,'value');set(handles.edit2,'string',num2str(l));%Executesduringobjectcreation,aftersettingallproperties.functionslider2_CreateF(hObject,eventdata,handles)%hObjecthandletoslider2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);end%Executesonslidermovement.functionslider3_Callback(hObject,eventdata,handles)%hObjecthandletoslider3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofsliderd=get(handles.slider3,'value');set(handles.edit3,'string',num2str(d));%Executesduringobjectcreation,aftersettingallproperties.functionslider3_CreateF(hObject,eventdata,handles)%hObjecthandletoslider3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);end%Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)N=str2num(get(handles.edit1,'String'));l=str2num(get(handles.edit2,'String'));d=str2num(get(handles.edit3,'String'));f=40;b=str2num(get(handles.edit4,'String'));x=linspace(-4*pi,4*pi,1000);forj=1:1000u=(pi*b/l)*(((x(j)/sqrt(x(j)^2+f^2))));Idan(j)=((sin(u)/u).^2);Iduo(j)=((sin(d*u*N/b)/sin(d*u/b)).^2);I(j)=Idan(j)*Iduo(j);endNCLevels=255;Ir=NCLevels*I;IG=NCLevels*Idan;IB=NCLevels*Iduo;axes(handles.axes1);colormap(gray(NCLevels));switchN%選擇相應(yīng)的標頭case1image(x,Idan,IG)title('單縫衍射仿真結(jié)果')axes(handles.axes2);plot(x,Idan(:)/max(Idan));case2image(x,Iduo,IB)title('雙縫干涉仿真結(jié)果')axes(handles.axes2);plot(x,Iduo(:)/max(Iduo));otherwiseimage(x,I,Ir)title('光柵衍射仿真結(jié)果')axes(handles.axes2);plot(x,I(:)/max(I));end%Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)closefunctionedit1_Callback(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit1astext%str2double(get(hObject,'String'))returnscontentsofedit1asadouble%Executesduringobjectcreation,aftersettingallproperties.functionedit1_CreateF(hObject,eventdata,handles)%hObjecthandletoedit1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionedit2_Callback(hObject,eventdata,handles)%hObjecthandletoedit2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofedit2astext%str2double(get(hObject,'String'))returnscontentsofedit2asadouble%Executesduringobjectcreation,aftersettingallproperties.functionedit2_CreateF(hObject,eventdata,handles)%hObjecthandletoedit2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論