亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        用Matlab和VB實(shí)現(xiàn)光學(xué)實(shí)驗(yàn)仿真系統(tǒng)的開發(fā)

        2009-03-02 09:33:12成丕富孔德明
        現(xiàn)代電子技術(shù) 2009年4期

        成丕富 周 青 朱 力 孔德明

        摘 要:計(jì)算機(jī)仿真輔助教學(xué)比起傳統(tǒng)的教學(xué)模式有很大的優(yōu)勢(shì)。利用DLL動(dòng)態(tài)鏈接庫技術(shù)解決VB和Matlab編程的接口問題,將VB的可視化界面功能與Matlab強(qiáng)大的繪圖功能結(jié)合起來,實(shí)現(xiàn)二者混合編程,開發(fā)出了光學(xué)實(shí)驗(yàn)的仿真模擬系統(tǒng)。該系統(tǒng)具有人機(jī)交互好,生動(dòng)形象,易于操作等特點(diǎn),并且可以脫離VB和Matlab單獨(dú)運(yùn)行。通過在物理實(shí)驗(yàn)室的試用表明,該系統(tǒng)真正實(shí)現(xiàn)了輔助實(shí)驗(yàn)教學(xué)。

        關(guān)鍵詞:光學(xué)實(shí)驗(yàn)?zāi)M;Matlab;VB;DLL

        中圖分類號(hào):G434;G642.423 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1004-373X(2009)04-169-03

        Development of Optical Experiment Simulation System Using Matlab and VB

        CHENG Pifu1,ZHOU Qing1,ZHU Li1,KONG Deming2

        (1.School of Civil Engineering and Architecture,Central South University,Changsha,410075,China;

        2.School of Physics Science and Technology,Central South University,Changsha,410075,China)

        Abstract:Computer simulation-aided instruction has an advantage over traditional instruction mode.This paper describes mainly about using the technology of DLL to realize merging programming,integrating the visual interface of VB and the strong plot function of Matlab.Based on this,the optical experiment simulation system is developed.The system is chara-cterized by its mutualness between person and computer,lifelikeness,as well as easiness to use.And it can run separately without VB and Matlab.The probation in physics laboratory indicates the system can truly aid in experiment instruction.

        Keywords:optical experiment simulation;Matlab;Visual Basic;DLL

        0 引 言

        隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展和教育教學(xué)現(xiàn)代化的需要,計(jì)算機(jī)正逐漸走進(jìn)學(xué)校,走進(jìn)課堂。計(jì)算機(jī)輔助教學(xué)以其靈活、生動(dòng)、形象、鮮明的文字、聲音、圖形和動(dòng)畫等豐富多彩的表現(xiàn)形式,使物理實(shí)驗(yàn)教學(xué)內(nèi)容化難為易[1]。計(jì)算機(jī)輔助教學(xué)的出現(xiàn)改變了傳統(tǒng)的實(shí)驗(yàn)教學(xué)的模式,促進(jìn)教師教育觀念的轉(zhuǎn)變,通過人機(jī)交互、信息共享,拓展了學(xué)生的視野,很好地培養(yǎng)了學(xué)生創(chuàng)造性思維能力。

        將計(jì)算機(jī)仿真技術(shù)用于光學(xué)實(shí)驗(yàn)教學(xué),不受實(shí)驗(yàn)儀器和實(shí)驗(yàn)場所的限制,可以通過改變實(shí)驗(yàn)參數(shù)獲得不同的實(shí)驗(yàn)結(jié)果,方便教師課堂演示,使課堂教學(xué)內(nèi)容形象化,表現(xiàn)手段多樣化,創(chuàng)造一個(gè)生動(dòng)活潑的學(xué)習(xí)氛圍,讓學(xué)生能夠結(jié)合形象的實(shí)驗(yàn)現(xiàn)象更加深刻理解光學(xué)理論。開發(fā)光學(xué)實(shí)驗(yàn)的仿真模擬系統(tǒng),并將其運(yùn)用到物理光學(xué)的教學(xué)和實(shí)驗(yàn)當(dāng)中,可以進(jìn)一步提高大學(xué)物理實(shí)驗(yàn)教學(xué)的現(xiàn)代化水平。

        但是,由于光學(xué)實(shí)驗(yàn)理論的復(fù)雜性、高水平仿真圖像和人性化仿真界面的要求,目前國內(nèi)融合光學(xué)實(shí)驗(yàn)的仿真系統(tǒng)開發(fā)還不多見。在此以VB為界面平臺(tái),Matlab強(qiáng)大的繪圖、計(jì)算功能為基礎(chǔ),解決了VB和Matlab的接口技術(shù),開發(fā)出了光學(xué)實(shí)驗(yàn)的仿真系統(tǒng),并用于輔助實(shí)驗(yàn)教學(xué)。

        1 開發(fā)環(huán)境的選擇及技術(shù)

        Visual Basic是由微軟公司開發(fā)的可視化編程語言之一,簡單易學(xué)而且功能豐富,能夠迅速有效地編制優(yōu)良的可視化界面。Matlab是美國MathWorks公司推出的交互式、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,擅長處理數(shù)值計(jì)算和系統(tǒng)模擬仿真[2]。但是Matlab程序的執(zhí)行速度比較慢,而且在界面設(shè)計(jì)方面遠(yuǎn)遠(yuǎn)比不上VB,VC 等軟件。鑒于二者各自的優(yōu)勢(shì),通過VB和Matlab的接口技術(shù)將VB功能強(qiáng)大的可視化界面與Matlab的繪圖功能結(jié)合起來,實(shí)現(xiàn)二者混合編程,即可開發(fā)出模擬光學(xué)實(shí)驗(yàn)的軟件。

        VB調(diào)用Matlab一直是一個(gè)難題,可以通過ActiveX自動(dòng)化技術(shù)或Matlab的COM Builder技術(shù)實(shí)現(xiàn)。但是利用ActiveX時(shí)會(huì)在后臺(tái)啟動(dòng)一個(gè)Matlab進(jìn)程,不能脫離Matlab環(huán)境,而且實(shí)時(shí)性差;通過COM Builder技術(shù)雖然可以脫離Matlab環(huán)境,但是一些工具箱函數(shù)還是無法編譯,有一定的局限性,這兩種方法都難以滿足軟件開發(fā)的要求[3-5]。這里利用DLL動(dòng)態(tài)鏈接庫方法實(shí)現(xiàn)了在VB中調(diào)用Matlab。

        利用動(dòng)態(tài)鏈接庫方法也就是將Matlab的M-文件轉(zhuǎn)變成為VB可以調(diào)用的DLL文件,從而實(shí)現(xiàn)VB對(duì)Matlab的調(diào)用[4,5]。具體過程如下:

        (1) 利用Matlab編寫函數(shù),并保存為M-文件。利用Matcom4.5軟件將其編譯為DLL文件,同時(shí)還會(huì)自動(dòng)生成在VB中聲明DLL的模塊文件.bas文件和.cls文件。

        (2) 把DLL文件拷貝到VB工程目錄或者是系統(tǒng)目錄system32下,并用上面生成的.bas文件聲明。

        (3) 把生成的.cls文件添加到VB的公共模塊中。

        (4) 在VB中引入MaxtrixVB庫作為與DLL的接口代理,Matlab編寫的函數(shù)就可以在VB中直接應(yīng)用。

        利用DLL技術(shù)能夠?qū)崿F(xiàn)VB對(duì)Matlab的調(diào)用,這種方法可以方便地在自己開發(fā)的應(yīng)用軟件中嵌入Matlab軟件的功能,實(shí)現(xiàn)自己的運(yùn)算及圖像顯示。

        2 系統(tǒng)設(shè)計(jì)

        2.1 主體界面及設(shè)計(jì)思路

        在實(shí)驗(yàn)教學(xué)過程中,學(xué)生的學(xué)習(xí)過程應(yīng)該是主動(dòng)、自主學(xué)習(xí)的過程。本軟件的設(shè)計(jì)思想在于創(chuàng)立友好的人機(jī)交互界面,方便的仿真系統(tǒng),開發(fā)面向?qū)W生、直觀、易于操作的輔助實(shí)驗(yàn)教學(xué)軟件。在設(shè)計(jì)上,用一個(gè)主目錄窗體界面將主要的光學(xué)實(shí)驗(yàn)整合在一起,這部分設(shè)計(jì)以文本屬性、窗體的鏈接為主,軟件主窗體如圖1所示。

        圖1 系統(tǒng)目錄主界面

        2.2 詳細(xì)設(shè)計(jì)說明

        在各光學(xué)實(shí)驗(yàn)的具體模擬中,每個(gè)光學(xué)實(shí)驗(yàn)的模擬都含預(yù)習(xí)評(píng)價(jià)、實(shí)驗(yàn)內(nèi)容、數(shù)據(jù)處理、思考練習(xí)等部分,同時(shí)還有實(shí)驗(yàn)擴(kuò)展、技術(shù)應(yīng)用等版塊,方便老師和學(xué)生查閱、練習(xí),提高學(xué)生的創(chuàng)新能力。

        以仿真模擬光柵衍射實(shí)驗(yàn)為例介紹開發(fā)光學(xué)實(shí)驗(yàn)仿真模擬系統(tǒng)的過程。

        3 光柵衍射實(shí)驗(yàn)的模擬

        3.1 光柵衍射實(shí)驗(yàn)的數(shù)學(xué)模型

        設(shè)Е宋入射光波長;a為光柵上每一透光狹縫的寬度;d為光柵常數(shù);φ為衍射角。一般光柵與光屏的距離D遠(yuǎn)大于衍射條紋在光屏上偏離光屏中心的距離ys,б虼擻校

        sin φ靬s/D

        光柵衍射可以看作是N個(gè)相干光形成的縫間干涉和單縫衍射共同作用的結(jié)果。對(duì)于光屏上任一點(diǎn)P的光強(qiáng)度,等于N個(gè)相干光在該點(diǎn)產(chǎn)生的干涉光強(qiáng)度與寬度為aУ牡シ旆蚶屎頭蜒萇湓詬玫悴生的光強(qiáng)度的乘積,其強(qiáng)度可表示為[6]:

        IP=I022

        其中:I0為屏中心的最大光強(qiáng);2為單縫衍射因子;(sin Nβ/sin β)2為多光束干涉因子;α=πa/λsin φ;β=πd/λsin φ。

        3.2 編寫Matlab程序

        根據(jù)光柵衍射實(shí)驗(yàn)的數(shù)學(xué)模型,在Matlab環(huán)境下編寫光柵衍射實(shí)驗(yàn)的raster.m函數(shù)文件。raster.m程序清單如下:

        function y=raster(d,a,D,N,lam)

        ym=1.5*lam*D/a; xs=ym;%設(shè)定圖幅范圍

        n=1001;ys=linspace(-ym,ym,n);

        for i=1:n%計(jì)算光強(qiáng)

        sinphi=ys(i)/D;

        alpha=pi*a*sinphi/lam; beta=pi*d*sinphi/lam;

        B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;

        B1=B/max(B);

        end

        NC=255; %確定繪圖灰度等級(jí)為255級(jí)

        Br=(B/max(B))*NC;

        subplot(1,2,1) ,image(xs,ys,Br);%畫光柵衍射圖像

        colormap(gray(NC)); %用灰度顏色圖

        subplot(1,2,2) ,plot(B1,ys);%畫出沿y方向的光強(qiáng)分布圖

        3.3 將Matlab程序轉(zhuǎn)化為DLL文件

        用Matcom4.5將M-文件轉(zhuǎn)化成DLL的操作步驟如下:

        (1) 啟動(dòng)運(yùn)行Matcom,點(diǎn)擊菜單File/Compile to dll,選擇要寫好的raster.m文件。

        (2) 點(diǎn)擊OK。這時(shí)在對(duì)應(yīng)的Debug目錄下,有許多編譯生成的文件。在VB開發(fā)環(huán)境中需要用的文件有3個(gè):raster.dll (DLL文件)、raster.bas(聲明DLL的模塊文件)、raster.cls(VB調(diào)用DLL的接口)。

        3.4 在VB中調(diào)用DLL文件

        (1) 界面設(shè)計(jì)。

        在VB中新建一個(gè)工程,新建窗體。在窗體中添加控件并設(shè)置各控件的屬性(如圖2所示)。然后,通過編寫簡單程序建立文本框和相應(yīng)滾動(dòng)條之間的聯(lián)系。

        圖2 光柵衍射實(shí)驗(yàn)仿真模擬界面

        (2) 導(dǎo)入MaxtrixVB庫和DLL文件。

        為了能適應(yīng)Matlab強(qiáng)大的矩陣運(yùn)算功能,還必須將MaxtrixVB庫加入到工程中,過程為:點(diǎn)擊菜單Project,選擇Reference,在Reference對(duì)話框中復(fù)選Mmatrix,點(diǎn)擊OK。

        將raster.bas和 raster.cls加入到工程中,將生成的raster.dll文件拷貝到System32目錄下。這樣就可以用raster.bas聲明raster.dll,并通過mymfile.cls建立VB調(diào)用raster.dll的接口。

        (3) 主要程序代碼設(shè)計(jì)

        Option Explicit ′函數(shù)申明

        Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte,ByVal bScan As Byte,ByVal dwFlags As Long,ByVal dwExtraInfo As Long)

        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String,ByVal lpWindowName As String) As Long

        Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long

        Private Sub Command1_Click() ′顯示圖像事件

        Dim a(0 To 2),e,x ′定義變量

        Dim winHwnd As Long,RetVal As Long

        a(0) = Val(Text1.Text) ′獲取光柵常數(shù)

        a(1) = Val(Text2.Text) ′獲取縫寬

        a(2) = Val(Text3.Text) ′獲取縫數(shù)

        a(3) = Val(Text3.Text) ′獲取光柵與屏的距離

        a(4) = Val(Text3.Text) ′獲取入射光波長

        e = raster(a) ′調(diào)用raster .dll文件

        Call keybd_event(vbKeySnapshot,1,100,100) ′將彈出窗口的圖像拷貝到剪切板

        DoEvents

        Image1.Stretch = True

        Image1.Picture = Clipboard.GetData(vbCFBitmap)′在圖像框中顯示圖像

        winHwnd = FindWindow(vbNullString,"Figure 1")′找到彈出窗口句柄

        If winHwnd <> 0 Then

        RetVal = PostMessage(winHwnd,&H10;,0&,0&) ′關(guān)閉彈出的窗口

        End If

        End Sub

        (4) 調(diào)試通過,設(shè)置參數(shù)后可以看到如圖2所示的效果。在VB中將程序生成可執(zhí)行文件,再把相關(guān)的文件一起打包,制作成安裝包,就可以脫離VB和Matlab而單獨(dú)安裝使用。

        4 結(jié) 語

        用動(dòng)態(tài)鏈接庫DLL方法成功實(shí)現(xiàn)了VB和Matlab的接口編程,并生成可執(zhí)行程序,可以脫離VB和Matlab的環(huán)境單獨(dú)運(yùn)行。這樣也隱藏了程序源代碼,提高了程序的保密性。

        開發(fā)出基本光學(xué)實(shí)驗(yàn)的模擬系統(tǒng),實(shí)現(xiàn)了在實(shí)驗(yàn)室做不出的實(shí)驗(yàn)效果演示。該集成的光學(xué)實(shí)驗(yàn)仿真系統(tǒng)可實(shí)現(xiàn)圖像的動(dòng)態(tài)顯示,隨入射光波長的實(shí)時(shí)改變動(dòng)態(tài)顯示光強(qiáng)分布的圖像,較為逼真。實(shí)驗(yàn)窗口中的圖像可以由實(shí)驗(yàn)者調(diào)試為單獨(dú)顯示模式,故而方便了實(shí)驗(yàn)者對(duì)光學(xué)圖像的存儲(chǔ)。

        本套光學(xué)實(shí)驗(yàn)仿真系統(tǒng)已經(jīng)在中南大學(xué)物理實(shí)驗(yàn)室初步投入使用,彌補(bǔ)了光學(xué)實(shí)驗(yàn)在此方面的空缺,提高了教學(xué)質(zhì)量。而且還將提供給其他高校物理實(shí)驗(yàn)室,輔助光學(xué)實(shí)驗(yàn)教學(xué)。

        參 考 文 獻(xiàn)

        [1]李建平,胡瑋,董超,等.最大氣泡法測(cè)液體表面張力實(shí)驗(yàn)多媒體CAI課件的開發(fā)與應(yīng)用[J].實(shí)驗(yàn)技術(shù)與管理,2007,24 (8):86-89.

        [2]周憶,梁齊.用Matlab語言模擬光衍射實(shí)驗(yàn)[J].大學(xué)物理實(shí)驗(yàn),2001,14(4):47-48.

        [3]黃錫泉,姚竹亭.VB和Matlab無縫接口編程[J].微計(jì)算機(jī)應(yīng)用,2005,26(2):238-240.

        [4]譚炎,張凌燕.Matlab 與VB 混合編程技術(shù)研究[J].微計(jì)算機(jī)信息,2006,22(5):247-249.

        [5]王正祥,劉載文,楊斌,等.Matlab 6.5與VB混合編程中的接口技術(shù)研究[J].微計(jì)算機(jī)信息,2006,22(10):187-189.

        [6]鐘錫華,趙凱華.光學(xué)(上、下冊(cè))[M].北京:北京大學(xué)出版社,1984.

        [7]韓振海,賀德春.Matlab在波動(dòng)光學(xué)教學(xué)中的應(yīng)用[J].河西學(xué)院學(xué)報(bào),2005,21(2):126-128.

        [8]馮旭.在VB開發(fā)環(huán)境中調(diào)用由Matlab函數(shù)轉(zhuǎn)化的DLL[J].西北民族大學(xué)學(xué)報(bào):自然科學(xué)版,2004,25(2):65-67.

        [9]郭平.淺談VB與Matlab混合編程[J].廣西輕工業(yè),2006,(5):78-79.

        [10]符運(yùn)良.Matlab在光學(xué)教學(xué)中的應(yīng)用[J].華南熱帶農(nóng)業(yè)大學(xué)學(xué)報(bào),2004,10(3):55-57.

        [11] 胡春霞,賀昌海,賀敏.在VB.NET中應(yīng)用Matlab 實(shí)現(xiàn)三維數(shù)據(jù)可視化[J].微機(jī)發(fā)展,2005,15(5):66-71.

        作者簡介 成丕富 男,1986年出生,山西平遙人,學(xué)士,中南大學(xué)橋梁工程系。

        孔德明 男,1971年出生,河南新縣人,博士,中南大學(xué)物理實(shí)驗(yàn)中心副主任,從事實(shí)驗(yàn)教學(xué)、計(jì)算機(jī)仿真的研究。

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。

        好爽受不了了要高潮了av| 欧美老肥妇做爰bbww| 亚洲av无码国产精品色软件下戴 | 色先锋av资源中文字幕| 四虎国产精品视频免费看| 女同av免费在线播放| 国产日产久久高清ww| 精东天美麻豆果冻传媒mv| 99re这里只有热视频| 日本一区二区三区的免费视频观看| 天堂蜜桃视频在线观看| 国产精品理论片| 91精品福利一区二区| 国产精品久久中文字幕亚洲| 一区二区三区天堂在线| 日本精品αv中文字幕| 国产精品久久1024| 91青青草手机在线视频| 精品无码久久久久久久久水蜜桃| 欧妇女乱妇女乱视频| 中文字幕avdvd| 丝袜美腿在线观看视频| 亚洲av无码乱码在线观看牲色| 国产乱人伦偷精品视频| 免费a级毛片无码a∨免费| 丝袜美腿国产一区二区| 免费看av在线网站网址| 欧美成人久久久| 日本女优中文字幕有码| 97一期涩涩97片久久久久久久| 丰满岳乱妇久久久| 人妻中文字幕av有码在线| 手机av在线中文字幕| 伊人久久精品久久亚洲一区| 免费国产一级特黄aa大片在线| 夜夜爽无码一区二区三区| 精品人人妻人人澡人人爽牛牛| 亚洲第一区无码专区| 亚洲一区亚洲二区视频在线| s级爆乳玩具酱国产vip皮裤| 狠狠色综合播放一区二区|