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)編輯:王力】

主站蜘蛛池模板: 亚洲中文字幕无码爆乳| 国产自视频| 精品一区二区三区无码视频无码| 中文字幕色站| 午夜成人在线视频| 欧美一级在线| 国产成人精品一区二区三区| 久久天天躁狠狠躁夜夜2020一| 国产一区二区网站| 91外围女在线观看| 国产精品专区第一页在线观看| 久视频免费精品6| 日韩黄色大片免费看| 久久精品无码一区二区日韩免费| 国产视频 第一页| 日本亚洲欧美在线| 亚洲中文字幕23页在线| 日韩经典精品无码一区二区| 亚洲欧美不卡视频| 亚洲看片网| 无码久看视频| 狠狠色狠狠色综合久久第一次| 国产精品熟女亚洲AV麻豆| 91偷拍一区| 欧美亚洲一二三区| 女人18毛片久久| 影音先锋亚洲无码| 伊人激情久久综合中文字幕| 小13箩利洗澡无码视频免费网站| 91麻豆国产视频| 毛片网站免费在线观看| 伊在人亚洲香蕉精品播放| 欧美一区二区三区欧美日韩亚洲| 99久久国产综合精品2020| 911亚洲精品| 日韩少妇激情一区二区| 真实国产乱子伦高清| 久久综合成人| 欧美曰批视频免费播放免费| 美女被操黄色视频网站| 中文字幕中文字字幕码一二区| 国产精品va免费视频| 亚洲成人在线免费| 国产精品va免费视频| 日韩毛片免费| 亚洲欧美日韩久久精品| 久久男人资源站| 亚洲天堂啪啪| 国产精品毛片一区视频播| 一区二区午夜| 91国内外精品自在线播放| 精品亚洲麻豆1区2区3区| 久热中文字幕在线| 亚洲免费成人网| 毛片一级在线| 国产欧美视频在线观看| 国产成年无码AⅤ片在线| 午夜国产在线观看| 国产成人精品在线| 无码 在线 在线| 亚洲久悠悠色悠在线播放| 久久无码av三级| 思思热精品在线8| 成年免费在线观看| 欧美中文一区| 久久精品只有这里有| 亚洲av无码成人专区| 91精品网站| 免费国产无遮挡又黄又爽| 国产一区二区精品福利| 国产成人1024精品| 久热re国产手机在线观看| 91小视频在线观看| 久久久久88色偷偷| 日韩第九页| 精品国产成人高清在线| av在线人妻熟妇| 青草视频久久| 亚洲人视频在线观看| 亚洲另类色| 欧美第二区| 亚洲天堂网2014|