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

基于COM組件的VB與MATLAB混合編程技術在地形變數據分析中的應用*

2011-11-23 06:26:18
大地測量與地球動力學 2011年6期
關鍵詞:數據處理

胡 靜 吳 云 張 燕

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

基于COM組件的VB與MATLAB混合編程技術在地形變數據分析中的應用*

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

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

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

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

1 引言

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

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

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

2 VB與MATLAB混合編程

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

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

3 在MATLAB中創建COM組件

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

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

4 VB調用COM組件

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

圖1 Matlab創建COM組件Deployment Tool窗口Fig.1 Deployment tool for COM builder in Matlab

表1 應用COM Builder生成的文件Tab.1 Files resulted from COM builder

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

……

Dim MyClassName As componetnameclass

Set MyClassName=New componetnameclass

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

……

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

5 應用實例

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

由于VB無法識別Matlab生成的數組,最后幾條指令在Matlab中生成順序文件,VB可以直接讀?。?/p>

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

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

M文件中的輸入參數Tomatdata由下列步驟給出:

Open<filePath>For Input As#1‘filepath為目標數據文件對應路徑

For I=0 To N-1

Input#1,Matdata(I)

Next

Close#1

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

For I=datab To datad

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

Next

輸入參數都確定之后便可以調用Matlab函數,在VB中調用目標函數代碼如下:

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

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

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

圖3 數據處理模塊界面Fig.3 Module interface of data processing

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

圖4 固體潮數據去趨勢處理結果Fig.4 Results of detrend tidal data

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

圖5 異常標記Fig.5 Abnormal marker

6 結語

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

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

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

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

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

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

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

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

8 蘇金明,劉宏,劉波.MATLAB高級編程[M].北京:電子工業出版社,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

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

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

P209

A

猜你喜歡
數據處理
驗證動量守恒定律實驗數據處理初探
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
心理學報(2022年4期)2022-04-12 07:38:02
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
水泵技術(2021年3期)2021-08-14 02:09:20
ADS-B數據處理中心的設計與實現
電子測試(2018年4期)2018-05-09 07:28:12
MATLAB在化學工程與工藝實驗數據處理中的應用
基于希爾伯特- 黃變換的去噪法在外測數據處理中的應用
大數據處理中基于熱感知的能源冷卻技術
計算機工程(2015年4期)2015-07-05 08:28:04
Matlab在密立根油滴實驗數據處理中的應用
數據處理能力在求職中起關鍵作用
我國首個“突發事件基礎數據處理標準”發布
主站蜘蛛池模板: 青青青国产免费线在| 国产精品美人久久久久久AV| 亚洲国产欧美国产综合久久 | 试看120秒男女啪啪免费| 国产精品手机在线播放| 人妻精品久久无码区| 思思热精品在线8| 五月六月伊人狠狠丁香网| 免费啪啪网址| 浮力影院国产第一页| 在线免费观看a视频| 欧美在线观看不卡| 亚洲黄色视频在线观看一区| 国产综合网站| 日韩大片免费观看视频播放| 国产日韩久久久久无码精品| 国产精品自在自线免费观看| 午夜a级毛片| 亚洲天堂色色人体| 国产伦精品一区二区三区视频优播| 亚洲第一成年人网站| 国产极品嫩模在线观看91| 精品自窥自偷在线看| 亚洲欧洲日产国产无码AV| 久久精品国产免费观看频道| 国产午夜一级毛片| 一本色道久久88| 欧美在线精品怡红院 | 亚洲另类国产欧美一区二区| 伊人成人在线| 国产乱人激情H在线观看| 欧美曰批视频免费播放免费| 1024你懂的国产精品| 精品国产自在在线在线观看| 免费看美女自慰的网站| 青青草原国产免费av观看| 欧美福利在线观看| 国产一在线| 青青草91视频| 一级爆乳无码av| 99久久国产综合精品2023| 国产日韩久久久久无码精品| 伊大人香蕉久久网欧美| 日韩毛片基地| 欧美一区二区三区国产精品| 欧美五月婷婷| 日韩免费中文字幕| 97人人做人人爽香蕉精品| 亚洲国产中文精品va在线播放| 99视频精品在线观看| 中文字幕首页系列人妻| 日本国产精品一区久久久| 99热这里只有精品2| 亚洲无码四虎黄色网站| 亚洲天堂免费观看| 午夜毛片免费观看视频 | 激情亚洲天堂| 国产成人超碰无码| 一本色道久久88亚洲综合| 精品欧美一区二区三区久久久| 亚洲AV电影不卡在线观看| 成人免费黄色小视频| 午夜视频在线观看免费网站| 国产第四页| 色综合五月婷婷| 国产精品尹人在线观看| 久久国语对白| 在线国产三级| 男女男免费视频网站国产| 精品91在线| 毛片在线播放网址| 成人亚洲天堂| 久久国语对白| 欧美一级视频免费| 在线观看国产网址你懂的| 欧美三级日韩三级| 久久久久亚洲AV成人网站软件| 国产情侣一区二区三区| 天天综合网色| 啪啪国产视频| 四虎在线观看视频高清无码 | 欧美一级一级做性视频|