999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于拍頻現(xiàn)象教學(xué)演示的Matlab Builder JA方法

2019-08-12 01:27:59鐘熙孫祥娥
電腦知識(shí)與技術(shù) 2019年16期

鐘熙 孫祥娥

摘要:采用JAVA和MATLAB混合編程技術(shù),解決目前實(shí)驗(yàn)教學(xué)中拍頻現(xiàn)象演示不夠直觀的問(wèn)題。應(yīng)用混合編程中的Matlab Builder JA技術(shù)將MATLAB中實(shí)現(xiàn)拍頻現(xiàn)象的M函數(shù)文件封裝成Java類,再利用JSP中的WebFigure標(biāo)簽完成拍頻現(xiàn)象的在線演示。MATLAB圖形窗體從網(wǎng)頁(yè)中獨(dú)立出來(lái),從而可以實(shí)現(xiàn)圖形的縮放和旋轉(zhuǎn)、圖形線條上某點(diǎn)對(duì)應(yīng)取值的顯示以及線條屬性的編輯等功能。這種方法使得MATLAB控件的豐富性在網(wǎng)頁(yè)中得到了最大程度的保留,同時(shí),為MATLAB實(shí)驗(yàn)教學(xué)相關(guān)軟件的開(kāi)發(fā)提供了一種新的途徑。

關(guān)鍵詞:混合編程;拍頻現(xiàn)象;WebFigure;Matlab Builder JA

中圖法分類號(hào):TP391.7? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)16-0124-03

開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

Abstract: To solve the nonintuitive demonstration problem of beat phenomenon, the mixed programming technology is used in experimental teaching. The Matlab Builder JA technology of the mixed programming is used to package the M file which produces beat phenomenon into Java class, and the online display of beat phenomenon based on the JSP WebFigure label is completed. In the result, The MATLAB graphics window is presented independently from the web page, which leads the functions that graphics scaling and rotation, corresponding value display and graphics property edit to be achieved. This method preserves the richness of MATLAB control to the greatest extent on the web page, and a new approach to develop the related softwares of MATLAB experimental teaching emerges in the meanwhile.

Key words: Mixed programming; Beat phenomenon; WebFigure; Matlab Builder JA

1 引言

在聲學(xué)中,節(jié)拍是由頻率略微不同的兩個(gè)聲波互相干擾所產(chǎn)生的。調(diào)動(dòng)樂(lè)器時(shí)往往會(huì)伴隨著顫音的產(chǎn)生,這是由于兩個(gè)不同的音調(diào)被調(diào)整到極其相近,但卻又不完全相同而造成的,這時(shí)兩個(gè)音調(diào)之間存在著細(xì)微的頻率差異,正是此差異導(dǎo)致了合成音的周期性起伏,從而出現(xiàn)顫音;當(dāng)兩個(gè)頻率逐漸接近一致時(shí),顫音現(xiàn)象減弱,直至完全消失。這里的顫音就是兩個(gè)音調(diào)相互干擾所產(chǎn)生的拍頻現(xiàn)象。

課堂教學(xué)中傳統(tǒng)的拍頻實(shí)驗(yàn)一般采取的措施是取兩個(gè)頻率相同的音叉,敲擊其中一個(gè)使其附近的空氣振動(dòng),引發(fā)另一個(gè)音叉與之共鳴從而振動(dòng)發(fā)聲[1],然而以這種方式演示的拍頻實(shí)驗(yàn)很難讓學(xué)生真正理解和掌握拍頻現(xiàn)象的內(nèi)涵。

隨著計(jì)算機(jī)和互聯(lián)網(wǎng)應(yīng)用的普及,基于MATLAB Web 的應(yīng)用越來(lái)越受歡迎,。通過(guò)互聯(lián)網(wǎng)將數(shù)據(jù)發(fā)送給MATLAB Web服務(wù)器[2],再利用MATLAB豐富的算法庫(kù)以及強(qiáng)大的數(shù)值計(jì)算和繪圖功能,就可以獲取相應(yīng)直觀準(zhǔn)確的圖形結(jié)果[3], 從而能夠解決上述拍頻現(xiàn)象演示不夠直觀的問(wèn)題。采用MATLAB Web對(duì)拍頻現(xiàn)象在線演示的方法,能夠在較短時(shí)間內(nèi)增強(qiáng)學(xué)生對(duì)拍頻相關(guān)理論和現(xiàn)象的理解,同時(shí),也使得教學(xué)過(guò)程更加方便靈活、生動(dòng)有效。這樣,學(xué)生既理解了實(shí)驗(yàn)內(nèi)容,又鍛煉了實(shí)驗(yàn)操作能力,使得高校的教學(xué)宗旨得以實(shí)現(xiàn)。

2 實(shí)現(xiàn)方案與應(yīng)用原理

2.1 現(xiàn)有方案的介紹

目前Java調(diào)用MATLAB的方法有如下三種:

第一種是利用CORBA(Common Object Request Broker Architecture)實(shí)現(xiàn)訪問(wèn)。在Java與C++之間可以通過(guò)CORBA完成通信, MATLAB也剛好提供了對(duì)C++語(yǔ)言編程的接口,Java和MATLAB通過(guò)使用相同的IDL接口,能夠完成客戶端對(duì)服務(wù)器端對(duì)象的方法調(diào)用[4];

第二種是利用JNI(Java Native Interface)技術(shù),JNI指的是本地編程接口,它定義了一種如何使用Java 程序調(diào)用非Java 程序的方法。通過(guò)JNI技術(shù)能夠?qū)崿F(xiàn)在Java應(yīng)用程序中調(diào)用MATLAB引擎函數(shù),MATLAB引擎將MATLAB作為一個(gè)計(jì)算引擎在后臺(tái)運(yùn)行,從而能夠讓用戶使用C/C++或Fortran等語(yǔ)言應(yīng)用程序?qū)ATLAB進(jìn)行訪問(wèn)[5];

第三種是利用Matlab的COM Builder進(jìn)行連接,在Matlab中利用COM Builder來(lái)構(gòu)建COM對(duì)象,從而使java基于COM+的應(yīng)用程序使用COM對(duì)象[6]。

2.2 本文采用的方案

本文采用第三種方案,即利用Matlab的COM Builder實(shí)現(xiàn)java與MATLAB的連接。Matlab的COM Builder也可叫作MATLAB Builder JA,它是Mathworks公司的一種面向應(yīng)用發(fā)布的產(chǎn)品[7],MATLAB Builder JA具有數(shù)值運(yùn)算功能強(qiáng)大、程序設(shè)計(jì)方便靈活等優(yōu)點(diǎn),并且替代了通過(guò)CGI 方式工作的傳統(tǒng)MATLAB Web Server組件[8]。

MATLAB Builder JA是將Matlab函數(shù)封裝成Java類,從而形成java組件或包,被封裝的Java 類可以被集成到Java 程序開(kāi)發(fā)中,因此這些程序可以部署到裝有免費(fèi)MATLAB Compiler Runtime(MCR)的Web服務(wù)器中,而無(wú)須安裝MATLAB軟件[9]。

2.3 應(yīng)用原理

利用Java調(diào)用Matlab函數(shù),Matlab相當(dāng)于服務(wù)器[10]。在Matlab的編輯器中編寫(xiě)好要使用的函數(shù),Java程序就可以通過(guò)Matlab Builder for Java調(diào)用該函數(shù)[11]。在Matlab目錄下有一個(gè)WebFigure文件,該文件包含Matlab圖形與網(wǎng)頁(yè)端的接口,可以通過(guò)調(diào)用該文件在網(wǎng)頁(yè)端呈現(xiàn)Matlab的圖形窗體,所以不會(huì)存在瀏覽器兼容問(wèn)題,使用普通的IE瀏覽器即可進(jìn)行實(shí)驗(yàn)展示。

3 拍頻的應(yīng)用——以兩個(gè)簡(jiǎn)諧振動(dòng)的合成為例

3.1 數(shù)學(xué)建模與封裝

3.1.1 建立拍頻信號(hào)數(shù)學(xué)模型

在信號(hào)處理中對(duì)拍頻現(xiàn)象的解釋,可以理解為兩個(gè)正弦信號(hào)的疊加過(guò)程[12]。現(xiàn)在有兩個(gè)正弦信號(hào),假設(shè)其頻率分別為[ωb+ω0]、[ωb-? ω0],根據(jù)拍頻的產(chǎn)生機(jī)理,當(dāng)[ωb]接近于零時(shí),拍頻現(xiàn)象就會(huì)出現(xiàn)。由兩信號(hào)的頻率可知合成的信號(hào)為:

假設(shè)兩個(gè)正弦信號(hào)具有相同的幅度[Α=Α1=Α2],相位為[θ1=Φ+φ],[θ2=Φ-φ]那么可以得出[Φ=(θ1+θ2)/2],[φ=(φ1-φ2)/2],根據(jù)公式可推算出[13]:

這樣的結(jié)果類似于幅度調(diào)制時(shí)產(chǎn)生的現(xiàn)象,幅度調(diào)制的波形如圖1所示,疊加信號(hào)的最大值和最小值不再恒定,隨著時(shí)間的變化而變化[14]。從圖1中的包絡(luò)可以看出拍頻的特征,這里幅度調(diào)制中調(diào)制信號(hào)的頻率即為拍頻。

3.1.2將編寫(xiě)的M文件打包成java類

本實(shí)驗(yàn)使用的是Matlab2016的版本。按照上述數(shù)學(xué)模型編寫(xiě)M文件,并在Matlab的命令窗口輸入“deploytool”命令,選擇“Library Compiler”選項(xiàng),啟動(dòng)Matlab Compiler界面,在Type列表框中選擇編譯類型為Java Package,并添加編寫(xiě)好的M文件至Exported Functions框中,如下圖2所示。

包名和類名由軟件自動(dòng)生成,包名默認(rèn)與M文件名一致,類名默認(rèn)為Class1。在Matlab Compiler界面的右上角點(diǎn)擊Package按鈕,對(duì)M文件進(jìn)行封裝,封裝完成后,即可在封裝項(xiàng)目所在的目錄中自動(dòng)生成相關(guān)文件夾,該文件夾包含了三個(gè)子文件夾, 其中for_testing子文件夾中存放了封裝好的Java包以及相關(guān)類的代碼文件[15]。

3.2 利用java實(shí)現(xiàn)拍頻信號(hào)的在線演示

客戶端將對(duì)用戶請(qǐng)求的響應(yīng)結(jié)果在Jsp中進(jìn)行顯示,然后利用Servlet中的session屬性共享來(lái)連接Jsp和Servlet之間的通信,而Matlab生成的圖形對(duì)象可以通過(guò)Servlet訪問(wèn)得到。具體的實(shí)現(xiàn)步驟如下:

1)在Java開(kāi)發(fā)工具Eclipse 中新建Java web項(xiàng)目以及jsp文件,分別命名為MathPlotBeating和Plot,再為該項(xiàng)目導(dǎo)入javabuilder.jar包和在3.1步驟中生成的PlotBeating.jar包。作為MATLAB builder組件中的一個(gè)重要成員,javabuilder.jar包使得在當(dāng)前的項(xiàng)目中能夠成功的使用java包中定義的類。同時(shí),項(xiàng)目中的WEBContent\WEB-INF\lib目錄下也需要導(dǎo)入這兩個(gè)包,并將webfigures.tld標(biāo)簽庫(kù)拷貝到WEB-INF下,Webfigures.tld是顯示matlab圖形的必要文件。

2)在jsp文件的頭部聲明引用webfigures.tld文件和WebFigure庫(kù),同時(shí)需要引用在3.1步驟中Matlab編譯生成的java類,以及一些必要的類和接口的定義:

3)JSP程序中實(shí)現(xiàn)本文方法的核心部分代碼如下:

由于本項(xiàng)目是由java和Matlab混合編程實(shí)現(xiàn)的,并且要實(shí)現(xiàn)Servlet 和Jsp 之間通信,而Matlab函數(shù)并不能接收Servlet中提供的參數(shù),所以在上述代碼中,不能直接將參數(shù)作為實(shí)參傳遞給由Matlab編寫(xiě)的PlotBeating函數(shù)。但MWNumericArray類可以作為Servlet和Matlab的過(guò)渡數(shù)據(jù)類型,這里可以通過(guò)將MWNumericArray類對(duì)象作為實(shí)參來(lái)傳遞;在Servlet中將函數(shù)返回的對(duì)象強(qiáng)制轉(zhuǎn)化成MWJavaObjectRef 類型;最后通過(guò)訪問(wèn)Session來(lái)實(shí)現(xiàn)Session 屬性的共享。

4)javabuilder.jar包中需要使用到WebFiguresServlet,通過(guò)web.xml文件對(duì)其進(jìn)行配置,配置代碼如下:

其中,利用元素為本項(xiàng)目的servlet分配一個(gè)名稱MyWF,并列出該servlet的類的完整路徑,再由元素在servlet和url樣式之間定義一個(gè)關(guān)系映射,在服務(wù)頁(yè)面地址欄輸入該映射路徑就可以訪問(wèn)到對(duì)應(yīng)的servlet,這里要求兩個(gè)元素下的名稱相同,以保證關(guān)系映射的成功建立。

3.3 拍頻應(yīng)用的調(diào)試結(jié)果

將做好的項(xiàng)目部署到開(kāi)源web應(yīng)用服務(wù)器Tomcat上,同時(shí)啟動(dòng)Tomcat,打開(kāi)瀏覽器,在瀏覽器最上方地址欄中輸入地址http://localhost:8080/MathPlotBeating/Plot.jsp,即可出現(xiàn)理想的拍頻信號(hào)顯示結(jié)果。現(xiàn)為該頁(yè)面做超鏈接,在html頁(yè)面中添加按鈕,如圖3所示。

點(diǎn)擊拍頻信號(hào)的網(wǎng)頁(yè)端matlab顯示鏈接,跳轉(zhuǎn)到新的頁(yè)面,即為預(yù)期的拍頻現(xiàn)象在線仿真結(jié)果。實(shí)驗(yàn)結(jié)果如圖4所示。MATLAB圖形界面沒(méi)有嵌入到網(wǎng)頁(yè)里,而是獨(dú)立出來(lái),在該界面中能夠?qū)崿F(xiàn)圖形具體點(diǎn)對(duì)應(yīng)取值的顯示以及線條屬性的編輯等功能,這點(diǎn)區(qū)別于前人的研究中圖形結(jié)果嵌入在網(wǎng)頁(yè)里面,且只能夠?qū)D形進(jìn)行放大、縮小以及旋轉(zhuǎn)的操作。

4 結(jié)束語(yǔ)

利用MATLAB Builder JA組件實(shí)現(xiàn)了拍頻信號(hào)的網(wǎng)頁(yè)端在線顯示,最關(guān)鍵是實(shí)現(xiàn)了將MATLAB圖形窗體與網(wǎng)頁(yè)分離,單獨(dú)呈現(xiàn)于網(wǎng)頁(yè)端之外,這樣就使得MATLAB圖形界面中的控件不會(huì)受到網(wǎng)頁(yè)端的影響而丟失,從而不僅保留了對(duì)圖形進(jìn)行縮放與旋轉(zhuǎn)操作的控件,而且能夠?qū)崿F(xiàn)圖形中具體點(diǎn)對(duì)應(yīng)取值的顯示以及對(duì)線條屬性的編輯等功能,具有操作簡(jiǎn)單、使用方便等特點(diǎn),同時(shí),該方法建立了新的可視化環(huán)境,能夠加深學(xué)生對(duì)拍頻現(xiàn)象的理解和認(rèn)識(shí),從而達(dá)到理想的教學(xué)目的。

參考文獻(xiàn):

[1] 宋璐,馮艷平,衛(wèi)亞博.基于MATLAB GUI的拍頻實(shí)現(xiàn)方法的研究[J].大學(xué)物理實(shí)驗(yàn),2012,25(3):98-99.

[2] 高旻,曾一,涂爭(zhēng)光.MATLAB的Web 技術(shù)應(yīng)用與方法探討[J].計(jì)算機(jī)應(yīng)用,2004,24(6):188-190.

[3] 郭志強(qiáng),黃燕,吳平.Java-MATLAB集成方法的分析與探討[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2006,(6):15-17.

[4] 袁林,巴力登,何從坤.VC與MATLAB混合編程在圖像處理中的應(yīng)用[J].微計(jì)算機(jī)信息,2008,(12):297-299.

[5] 廖云伢.基于Java與Matlab集成的數(shù)字通信原理虛擬實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:中南大學(xué),2007:12-14.

[6] 孔慶霞,朱全銀.Matlab在線實(shí)驗(yàn)系統(tǒng)關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2009,26(4):87-89.

[7] 莊思發(fā).利用MATLAB Web Server實(shí)現(xiàn)在線作圖[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(6):223-225.

[8] 蔡云鷺.基于Java Web和Matlab Java Bulider的遠(yuǎn)程數(shù)學(xué)實(shí)驗(yàn)教學(xué)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(1):83-85.

[9] 周小娟.Java-Matlab混合編程的研究[J].電子設(shè)計(jì)工程, 2013,21(2):16-18.

[10] 羅俊奇,陳偉,廖翔云.MATLAB仿真的遠(yuǎn)程實(shí)現(xiàn)[J].微計(jì)算機(jī)信信息,2007,(28):207-209.

[11] 任文杰,王偉,馬松輝.MATLAB和JAVA的混合編程研究與實(shí)現(xiàn)[J].測(cè)控技術(shù),2009,28(1):77-79.

[12] 鐘可君,張海林.基于Matlab GUI設(shè)計(jì)的光學(xué)實(shí)驗(yàn)仿真[J].實(shí)驗(yàn)室研究與探索,2010,29(10):52-54.

[13] 吳迪,孫洪毅,劉軍等.基于Matlab Simulink的物理實(shí)驗(yàn)——簡(jiǎn)諧振動(dòng)仿真研究[J].大學(xué)物理實(shí)驗(yàn),2010,23(6):72-74.

[14] 肖昭然,王凱.基于Web的虛擬現(xiàn)實(shí)仿真設(shè)計(jì)[J].系統(tǒng)仿真學(xué)報(bào),2006,27(10):2575-2581.

[15] 金萬(wàn)根,高汝維,王宇紅.利用Matlab Java Builder開(kāi)發(fā)Web遠(yuǎn)程仿真實(shí)驗(yàn)系統(tǒng)的新思路[J].微計(jì)算機(jī)信息,2011,27(4):64-66.

【通聯(lián)編輯:王力】

主站蜘蛛池模板: 亚洲人成网站色7799在线播放| 99久久精品美女高潮喷水| 波多野吉衣一区二区三区av| 国产精品亚洲五月天高清| 欧美精品在线视频观看 | 情侣午夜国产在线一区无码| 国产日韩欧美中文| 中国成人在线视频| 极品私人尤物在线精品首页| 国产成人一区| av大片在线无码免费| 在线看AV天堂| 制服无码网站| 超碰免费91| 国产成人精品视频一区视频二区| 91麻豆精品视频| 狠狠色噜噜狠狠狠狠色综合久| 在线播放真实国产乱子伦| 国产成人AV大片大片在线播放 | 国产门事件在线| 久久久久久久97| 中文字幕久久波多野结衣| 国产丝袜91| 亚洲国产精品不卡在线| 精品自窥自偷在线看| 黄色免费在线网址| 亚洲人成网7777777国产| 欧美一级高清视频在线播放| 99在线视频精品| 久久亚洲黄色视频| 一级福利视频| 免费国产高清视频| 久久精品欧美一区二区| 美女扒开下面流白浆在线试听 | 制服丝袜 91视频| 日韩123欧美字幕| 不卡视频国产| 欧美成人手机在线观看网址| 日韩人妻少妇一区二区| 日韩精品成人网页视频在线| 久久久久无码精品| 国产乱人伦精品一区二区| 国产91麻豆免费观看| 成人免费一区二区三区| 欧美性色综合网| 国产福利免费视频| 中国丰满人妻无码束缚啪啪| 国产在线观看99| 国产粉嫩粉嫩的18在线播放91| 婷婷色丁香综合激情| 亚洲国产看片基地久久1024| 又大又硬又爽免费视频| 91人妻日韩人妻无码专区精品| 欧美a在线看| 午夜毛片免费观看视频 | 久久人与动人物A级毛片| 国产肉感大码AV无码| 日本一区二区不卡视频| 99精品这里只有精品高清视频 | 一级看片免费视频| 久久亚洲精少妇毛片午夜无码| 最新国产午夜精品视频成人| 国内a级毛片| 五月婷婷亚洲综合| 欧美精品高清| 在线免费看黄的网站| 国产精欧美一区二区三区| 丁香婷婷激情网| 国产女人在线| 亚洲欧美一区二区三区图片 | 亚洲精品成人7777在线观看| 2024av在线无码中文最新| 亚洲天堂视频在线观看| 亚洲大学生视频在线播放| 日本精品视频| 中文字幕日韩丝袜一区| 伊人久久大香线蕉aⅴ色| 日韩人妻精品一区| 久久久久国产一区二区| 国产精品无码一二三视频| а∨天堂一区中文字幕| 国产成人免费手机在线观看视频|