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

基于COM組件的VB與MATLAB混合編程技術(shù)在地形變數(shù)據(jù)分析中的應(yīng)用*

2011-11-23 06:26:18
大地測量與地球動力學(xué) 2011年6期
關(guān)鍵詞:數(shù)據(jù)處理

胡 靜 吳 云 張 燕

(1)中國地震局地震研究所,武漢 430071 2)中國地震局地殼應(yīng)力研究所武漢創(chuàng)新基地,武漢430071)

基于COM組件的VB與MATLAB混合編程技術(shù)在地形變數(shù)據(jù)分析中的應(yīng)用*

胡 靜1,2)吳 云1,2)張 燕1,2)

(1)中國地震局地震研究所,武漢 430071 2)中國地震局地殼應(yīng)力研究所武漢創(chuàng)新基地,武漢430071)

介紹一種基于組件對象模型(Component Object Model,COM)的VB與Matlab混合編程技術(shù),以作者開發(fā)的地形變處理軟件數(shù)據(jù)處理模塊為例,闡述基于COM組件的VB與Matlab的混合編程在地形變數(shù)據(jù)處理中的應(yīng)用,論述如何實現(xiàn)VB與Matlab數(shù)據(jù)的互調(diào)。集成后的軟件不僅能夠充分發(fā)揮兩種語言各自的優(yōu)點,還可以完全脫離Matlab的運行環(huán)境。

VB;Matlab;COM組件;混合編程;地形變

1 引言

地形變觀測是監(jiān)測地殼運動與變形、認(rèn)識地震孕育過程和開展地震預(yù)測的重要手段之一。目前已具有多種方法,并形成一定規(guī)模[1]。地形變數(shù)據(jù)是地震學(xué)中最基礎(chǔ)的資料之一,對于地形變數(shù)據(jù)的預(yù)處理往往需要大運算量的矩陣計算以及對分析結(jié)果進行實時、直觀的圖形化顯示,一般采用Matlab等第三方數(shù)據(jù)處理軟件進行分析[2]。Matlab是美國MathWorks公司開發(fā)的大型數(shù)學(xué)計算應(yīng)用軟件系統(tǒng),用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,在地形變數(shù)據(jù)處理領(lǐng)域應(yīng)用廣泛。然而,Matlab自身所存在的某些缺點限制了它進一步的應(yīng)用。首先,Matlab是一種解釋性語言,實時效率相當(dāng)差,特別是在循環(huán)計算中;Matlab的界面開發(fā)能力較差并且不能脫離其環(huán)境運行;而Matlab程序的源代碼可以被直接看到,因而不利于算法和數(shù)據(jù)的保密。

VB是Windows操作系統(tǒng)下優(yōu)秀的可視化編程語言,在用戶界面設(shè)計和快速開發(fā)等方面具有獨特的優(yōu)勢。從VB5.0版本開始,可以編譯鏈接生成本機代碼的可執(zhí)行文件,能夠脫離VB的集成開發(fā)環(huán)境進行發(fā)布,較好地封裝了用戶的算法,有效地保護了用戶的源代碼。然而,VB只提供了基本的數(shù)學(xué)函數(shù)庫,對于開發(fā)需要進行各種濾波和小波變換[3]的地形變數(shù)據(jù)分析系統(tǒng)來說,遠遠不夠。這種情況下,如果使用基本函數(shù)庫編寫特殊功能的數(shù)學(xué)函數(shù)庫,不僅要求用戶對算法有深入的理解,而且費時,還可能因為在設(shè)計和運行時的錯誤處理機制的欠缺,難以保證每個函數(shù)功能的正確性。

如果能在地形變數(shù)據(jù)處理軟件的開發(fā)中集成VB和 Matlab各自的優(yōu)點,把數(shù)據(jù)分析功能留給Matlab完成,而用VB語言編寫Windows應(yīng)用程序,對計算結(jié)果進行分析和可視化處理,將極大地提高程序的開發(fā)效率。文獻[4]采用ActiveX技術(shù)開發(fā)的基于VB與Matlab前兆資料小波分析程序,該程序需要Matlab在后臺運行,無法脫離Matlab環(huán)境,應(yīng)用推廣有一定的局限。另外,程序中的繪圖操作等都由Matlab來完成,速度比較慢,繪出的圖形其實已經(jīng)是Matlab保存的圖形文件,可操作性受到限制。本文采用基于COM組件的VB與Matlab混合編程思路,提出利用Matlab將輸出數(shù)據(jù)傳輸給VB繪制圖形的設(shè)想,實現(xiàn)數(shù)據(jù)的可視化分析,以提高數(shù)據(jù)分析的效率并實現(xiàn)軟件脫離Matlab環(huán)境運行。

2 VB與MATLAB混合編程

目前,比較成熟的VB和Matlab接口編程方法有如下幾種:

1)ActiveX技術(shù)和動態(tài)數(shù)據(jù)交換(DDE)技術(shù)。這兩種方法最大的缺點是不能脫離Matlab工作環(huán)境。2)可執(zhí)行文件技術(shù),是將Matlab運算模塊做成可執(zhí)行文件,然后在VB中進行調(diào)用。這種方法的缺點是需要單獨開發(fā)可執(zhí)行文件。3)利用Matrix-VB。MatrixVB是MathWorks針對VB提供的一個Matlab庫,提供了一些專門固定函數(shù)。MatrixVB雖然能方便地實現(xiàn)VB和Matlab接口編程,但需要額外安裝MatrixVB,并且提供的函數(shù)有限。4)COM組件技術(shù)。它是利用Matlab工具Matlab COM Builder將M文件轉(zhuǎn)換成dll,然后在VB集成開發(fā)環(huán)境中直接調(diào)用該dll[5-7]。在上述方法中,前兩種方法調(diào)用過程較復(fù)雜,且無法脫離Matlab環(huán)境,這直接影響了所開發(fā)軟件的獨立運行和發(fā)布。第三種方法雖然能夠脫離Matlab環(huán)境,但MatrixVB軟件已停止發(fā)行,而且功能函數(shù)也有限。為解決與其他應(yīng)用程序之間的接口問題,MathWorks公司在其2002年推出的Matlab6.5中新增了Matlab COM Builder模塊,它提供了一個簡單易用的圖形化用戶界面,幫助用戶將Matlab的M函數(shù)文件自動、快速地轉(zhuǎn)換為獨立的進程內(nèi)COM組件,以.dll(ActiveX DLL)形式被裝入到客戶的進程空間中,使軟件的不同部分按照一定的面向?qū)ο蟮男问浇M合成可以交互的過程和一組支持庫,可以在任何支持COM組件的應(yīng)用中使用[8],例如Visual Basic、Excel、C/C++語言等。其優(yōu)點在于外部程序訪問該COM組件時,沒有必要進行環(huán)境切換,因此可獲得最快的運行速度,并且可脫離Matlab環(huán)境運行。

3 在MATLAB中創(chuàng)建COM組件

使用COM Builder創(chuàng)建COM組件之前還需要對Matlab Complier進行必要的配置,方法為:在Matlab命令窗口中鍵入mex-setup,將出現(xiàn)選擇編譯器的提問,列出的計算機中已經(jīng)安裝的各種C/C++編譯器,選擇Microsoft Visual C++6.0,安裝和配置完成之后,就可在Matlab中創(chuàng)建COM組件。先編寫M函數(shù)文件,在M函數(shù)文件中,給出要求Matlab完成的功能,函數(shù)文件能夠接收參數(shù),也允許返回參數(shù),需注意M文件的文件名必須和函數(shù)名一致。接著在Matlab中點擊Start,選擇Matlab/Matlab Builder NE/Deployment Tool,接著選擇File/New Deployment Project,彈出對話框如圖1所示,選擇通用COM組件(Generic COM Componet),并對所建工程命名等。

新建工程后單擊工程中的Add file,添加已經(jīng)編寫好的M文件,另外在編譯之前先對編譯選項進行設(shè)置,單擊Project/Settings,在Package子選項中選擇INCLUDE MCR,這樣就可以脫離Matlab環(huán)境,不過也會引起編譯速度變慢。選擇Build project,無錯誤后單擊Package,得到所需要的COM組件dll文件等。

4 VB調(diào)用COM組件

Matlab生成COM組件后會在目標(biāo)工程目錄生成distrib文件夾,包含了表1所示的幾個文件。至此,用戶編寫的M函數(shù)文件已轉(zhuǎn)換為COM組件對象。

圖1 Matlab創(chuàng)建COM組件Deployment Tool窗口Fig.1 Deployment tool for COM builder in Matlab

表1 應(yīng)用COM Builder生成的文件Tab.1 Files resulted from COM builder

如果VB開發(fā)的軟件是在本機上使用,則只要在VB工程的引用中添加編譯好的dll文件即可,如果要發(fā)布給其他計算機使用,除了在編譯時勾選“Include MCR”外,還要將創(chuàng)建成功的COM組件注冊到使用它的目標(biāo)計算機上。注冊的方法是將上述distrib文件夾拷貝到目標(biāo)計算機上,執(zhí)行自解壓可執(zhí)行程序<componenetname>.exe,通過自解壓程序安裝工程打包好的文件,完成后在VB中引用dll文件即可。如果編譯好的dll文件名稱為componetname_1_0.dll,在VB工程中引用后需按照以下步驟來調(diào)用Matlab文件:

……

Dim MyClassName As componetnameclass

Set MyClassName=New componetnameclass

Call MyClassName.comFunction(n,A,B,……)

……

componetname_1_0.dll文件在默認(rèn)的情況下引用后會出現(xiàn)componetnameclass類,用Dim as來聲明該類,并用New來創(chuàng)建實例。使用Matlab COM組件所包含的函數(shù)時,使用 Call命令,設(shè)函數(shù)名為comFunction,則用指令Call MyClassName.comFunction(n,A,B,…)來調(diào)用目標(biāo)函數(shù),n為函數(shù)輸出變量的個數(shù),為整數(shù)類型,后面A,B等為函數(shù)返回值(函數(shù)運算的輸出)和輸入?yún)?shù),按照M文件中函數(shù)的設(shè)定順序依次輸入,先輸入返回值,再輸入?yún)?shù)。

5 應(yīng)用實例

在地形變數(shù)據(jù)分析中,比較常見的是數(shù)據(jù)去固體潮趨勢。我們采用VB編寫用戶界面并以之實現(xiàn)各種可視化功能,將數(shù)據(jù)分析交由Matlab完成,開發(fā)出可推廣使用的地形變數(shù)據(jù)去趨勢軟件。在Matlab中編寫的去趨勢M函數(shù)文件命名為nakipoly.m,采用的是一般多項式擬合思路,使用Matlab自帶庫函數(shù)polyfit求出多項式擬合系數(shù),polyval求出目標(biāo)多項式,創(chuàng)建函數(shù):function[nakiadata,enkidata]=nakipoly(Tomatdata,ord,datab,datad),其中nakiadata與enkidata為輸出參數(shù),分別是多項式擬合數(shù)據(jù)及與標(biāo)準(zhǔn)值差值數(shù)據(jù),輸入?yún)?shù)中Tomatdata為原始數(shù)據(jù),ord為多項式擬合階數(shù),datab和datad分別代表數(shù)據(jù)的起始值與結(jié)束值,輸入?yún)?shù)都由VB構(gòu)造,可以在軟件界面中實現(xiàn)對目標(biāo)函數(shù)輸出的控制,函數(shù)完整源代碼如下:

由于VB無法識別Matlab生成的數(shù)組,最后幾條指令在Matlab中生成順序文件,VB可以直接讀取:

fid=fopen('C: akitemp.txt','w');%打開文件

fprintf(fid,'%f ',nakiadata);%輸出數(shù)據(jù)到文件fclose(fid);

M文件中的輸入?yún)?shù)Tomatdata由下列步驟給出:

Open<filePath>For Input As#1‘filepath為目標(biāo)數(shù)據(jù)文件對應(yīng)路徑

For I=0 To N-1

Input#1,Matdata(I)

Next

Close#1

程序通過用戶的輸入確定數(shù)據(jù)起始(datab)和數(shù)據(jù)結(jié)束位置(datad)后生成Matlab調(diào)用的數(shù)組Tomatdata:

For I=datab To datad

Tomatdata(I-datab+1)=Matdata(I)

Next

輸入?yún)?shù)都確定之后便可以調(diào)用Matlab函數(shù),在VB中調(diào)用目標(biāo)函數(shù)代碼如下:

繪圖的部分由VB來完成,在VB中使用Open<pathname>For Input As#1代碼可實現(xiàn)VB調(diào)用Matlab生成的數(shù)據(jù),pathname為Matlab函數(shù)中對應(yīng)路徑,這樣可以將數(shù)據(jù)傳輸給VB,方便使用VB的繪圖功能,可提高軟件處理效率并進一步實現(xiàn)更詳細(xì)的圖形操作。下面介紹軟件的實際操作示例。圖2為臺站地形變數(shù)據(jù)處理軟件主界面效果圖。

圖2 臺站地形變處理軟件主界面Fig.2 Main interface of crustal deformation data processing software

在進行數(shù)據(jù)處理之前,需要將從臺站下載過來的固體潮數(shù)據(jù)放在軟件當(dāng)前目錄文件夾“$Data固體潮數(shù)據(jù)”下,并且數(shù)據(jù)文件命名需要形如“63027_玉樹_2322_20090101_20100413CP.txt”格式,63027為臺站編碼,232為鉆孔應(yīng)變儀標(biāo)識,2代表第二分量,20090101_20100413CP代表日期,標(biāo)識碼之間用下劃線隔開。在主界面中選擇目標(biāo)臺站后點擊“確定”,調(diào)出的數(shù)據(jù)分析模塊如圖3所示。

圖3 數(shù)據(jù)處理模塊界面Fig.3 Module interface of data processing

在臺站選擇列表中單擊目標(biāo)臺站名稱,文件列表中可以直觀的看到當(dāng)前臺站所對應(yīng)的所有文件,選擇處理時間方式,繪出原始數(shù)據(jù)波形并進行去趨勢分析,結(jié)果對應(yīng)圖形如圖4。

圖4 固體潮數(shù)據(jù)去趨勢處理結(jié)果Fig.4 Results of detrend tidal data

圖4中,第一個圖為原始數(shù)據(jù)圖,我們選取的是2009-01-01—2009-10-31玉樹臺鉆孔應(yīng)變儀第二分量數(shù)據(jù);第二個圖即為其9階去趨勢圖,階數(shù)的選擇可以在右上角下拉選擇,我們提供了5~9階多項式擬合階數(shù);第三副圖中的-690~690區(qū)間內(nèi)曲線即為原始數(shù)據(jù)與多項式擬合的差值比較值,此區(qū)間外曲線是差值超過樣本標(biāo)準(zhǔn)差的部分。通過誤差標(biāo)記按鈕來控制其顯示與否,點擊異常標(biāo)記可以返回主窗口并在當(dāng)前臺站上標(biāo)記異常,方便工作人員進行分析。以上操作如果采用的是Matlab直接繪圖則相對比較繁瑣。異常標(biāo)記圖如圖5所示。最后通過測試,可以在無Matlab環(huán)境的目標(biāo)計算機上實現(xiàn)本軟件的運行。

圖5 異常標(biāo)記Fig.5 Abnormal marker

6 結(jié)語

介紹了通過COM技術(shù)實現(xiàn)Matlab與VB混合編程技術(shù)。介紹的地形變數(shù)據(jù)作固體潮去趨勢分析模塊,只是一個簡單的示例,但仍能感受到使用COM組件后給VB和Matlab混合編程所帶來的便利。VB與Matlab混合編程是一種快速構(gòu)建系統(tǒng)可靠性與維修性仿真程序的方法,系統(tǒng)功能超越了單一編程語言所能達到的水平,而開發(fā)難度和開發(fā)時間卻大大降低。這種方法實現(xiàn)了VB的可視化界面與Matlab強大函數(shù)庫的有效結(jié)合,可縮短開發(fā)周期,提高軟件性能。

1 牛安福,江在森.我國地形變觀測預(yù)報地震的現(xiàn)狀及對地震預(yù)測問題的思考[J].國際地震動態(tài).2005,(5):174-178.

2 呂永清,蔡亞先,程駿玲.國家數(shù)字地震臺數(shù)據(jù)處理研究[J].大地測量與地球動力學(xué),2006,(3):131-134.

3 張燕,等.小波分析在地殼形變資料處理中的應(yīng)用[J].地震學(xué)報,2004,26(增刊):103-109.

4 張衛(wèi)華,等.基于VB/MATLAB的前兆資料小波分析程序的實現(xiàn)[J].地震地磁觀測與研究,2006,27(2):93-99.

5 徐軍輝.MatrixVB——基于 M atlab與 V B的計算引擎[J].國外電子測量技術(shù),2002,(6):31-33.

6 歐陽明,等.VB與MATLAB混合編程在工程中的應(yīng)用[J].電子技術(shù),2009,(7):7-9.

7 李永松,艾凱,尹健民.基于VB與Matlab的BP神經(jīng)網(wǎng)絡(luò)在地應(yīng)力場分析中的應(yīng)用[J].長江科學(xué)院院報,2009,(6):24-27.

8 蘇金明,劉宏,劉波.MATLAB高級編程[M].北京:電子工業(yè)出版社,2005.

APPLICATION OF MIXED-PROGRAMMING OF VB AND MATLAB IN CRUSTAL DEFORMATION DATA PROCESSING

Hu Jing1,2),Wu Yun1,2)and Zhang Yan1,2)

(1)Institute of Seismology,CEA,Wuhan 430071 2)Wuhan Base of Institute of Crustal Dynamics,CEA,Wuhan430071)

A mixed-programming method with VB and Matlab based on the COM object model is introduced,performing how to use the method in programming for crustal deformation processing software and how to transfer data each other between VB and Matlab.The integrated software not only takes full advantages of VB and Matlab,but also runs independently without Matlab platform.

VB;MATLAB;COM Builder;mixed-program;crustal deformation

1671-5942(2011)Supp.-0122-05

2010-08-18

武漢大學(xué)地球空間環(huán)境與大地測量教育部重點實驗室開放基金(08-01-05)

胡靜,女,1983年生,中國地震局地震研究所碩士研究生,研究領(lǐng)域:地形變軟件開發(fā).E-mail:evangeline1001@sohu.com

P209

A

猜你喜歡
數(shù)據(jù)處理
驗證動量守恒定律實驗數(shù)據(jù)處理初探
認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補與極大似然估計法*
ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
ADS-B數(shù)據(jù)處理中心的設(shè)計與實現(xiàn)
電子測試(2018年4期)2018-05-09 07:28:12
MATLAB在化學(xué)工程與工藝實驗數(shù)據(jù)處理中的應(yīng)用
基于希爾伯特- 黃變換的去噪法在外測數(shù)據(jù)處理中的應(yīng)用
大數(shù)據(jù)處理中基于熱感知的能源冷卻技術(shù)
計算機工程(2015年4期)2015-07-05 08:28:04
Matlab在密立根油滴實驗數(shù)據(jù)處理中的應(yīng)用
數(shù)據(jù)處理能力在求職中起關(guān)鍵作用
我國首個“突發(fā)事件基礎(chǔ)數(shù)據(jù)處理標(biāo)準(zhǔn)”發(fā)布
主站蜘蛛池模板: 亚洲欧美日韩中文字幕在线| 成AV人片一区二区三区久久| 中文字幕欧美成人免费| 99久视频| 99久久国产综合精品2020| 久久久久久久久亚洲精品| 亚洲天堂自拍| 一级黄色欧美| 国内精品自在欧美一区| 欧美日本视频在线观看| 国产精品一区在线麻豆| 日韩123欧美字幕| 国产人人干| 少妇高潮惨叫久久久久久| 久久久久亚洲Av片无码观看| 久久精品女人天堂aaa| 韩日无码在线不卡| 亚洲妓女综合网995久久 | 日韩高清欧美| 亚洲综合欧美在线一区在线播放| 全部毛片免费看| 国产在线自揄拍揄视频网站| 一本久道久综合久久鬼色| 狠狠色香婷婷久久亚洲精品| 免费国产一级 片内射老| 视频一本大道香蕉久在线播放| 日韩视频免费| 国产精品手机视频| 97精品国产高清久久久久蜜芽| 无码高潮喷水专区久久| 国产一级特黄aa级特黄裸毛片| 日韩黄色大片免费看| 97青草最新免费精品视频| 久久精品只有这里有| 中文字幕中文字字幕码一二区| 欧美日韩另类国产| 国产精品自在在线午夜区app| 午夜限制老子影院888| 亚洲综合激情另类专区| 高潮毛片免费观看| 91免费国产在线观看尤物| 一级毛片基地| 国产福利免费在线观看| 久久永久视频| 久久精品人妻中文系列| 亚洲人成网站观看在线观看| 国产精品成人不卡在线观看| 色综合天天娱乐综合网| а∨天堂一区中文字幕| 国产精品私拍在线爆乳| 亚洲精品免费网站| 久久a级片| 欧美亚洲国产精品第一页| 色综合热无码热国产| 波多野结衣一二三| 久久狠狠色噜噜狠狠狠狠97视色| 国产亚洲精品yxsp| 成人免费视频一区| 免费看a毛片| 成人午夜久久| 国产亚洲视频在线观看| 91网址在线播放| 亚洲乱码视频| 永久毛片在线播| 亚洲综合中文字幕国产精品欧美| 色亚洲激情综合精品无码视频 | 亚洲精品成人7777在线观看| 国产精品熟女亚洲AV麻豆| 亚洲成在人线av品善网好看| 午夜三级在线| 亚洲视频a| 久青草网站| 中文字幕在线观| 18禁黄无遮挡网站| 中文字幕第1页在线播| 成年人国产网站| 视频一区视频二区中文精品| 99re66精品视频在线观看| 国产精品福利一区二区久久| 婷婷伊人五月| a免费毛片在线播放| 99性视频|