<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

VB與MATLAB接口技術的分析與應用

2022-09-12

Visual Basic是Microsoft公司推出的一種可視化, 面向對象和采用事件驅動方式的結構化高級程序設計語言, 可用于開發Windows環境下的各類應用程序。它簡單易學, 效率高, 功能強大, 可與Windows的專用開發工具SDK相媲美, 而且程序開發人員不必具有C/C++編程基礎, 避開了C++編程過分繁瑣和抽象的缺點。但是VB在運行復雜運算和圖形圖像處理時, 計算繁瑣運算速度慢, 使其在一些專業領域方面不能得到充分利用[3]。

Matlab語言是MathWorks公司推出的計算機軟件, 它起源于矩陣運算, 經過多年的逐步發展與不斷完善, 現已成為國際公認的最優秀的科學計算與數學應用軟件之一。Matlab語言具有語法結構簡單, 數值計算高效, 圖形圖像功能完備等特點, 因此Matlab語言已成為科學計算, 系統仿真, 信號和圖像處理的主流軟件[1]。

工業生產中經常遇到復雜的數據信息處理問題, 需要大運算量的矩陣計算及對分析結果進行實時、直觀的圖形圖像化顯示。Matlab是集數值分析、矩陣運算、信號處理和圖形圖像顯示于一體的高性能數學軟件, 將其強大的計算功能與VB在可視化用戶界面開發方面的優勢結合起來, 實現應用系統的無縫鏈接, 對于有效縮短開發周期、優化系統性能是十分有意義的。

1 分析VB與MATLA接口技術

1.1 DDE技術

動態數據交換DDE (Dynamic Data Exchange) 是允許Windows各應用程序間交換數據的通信機制。應用程序間實現彼此通信應先建立一個DDE對話, 請求建立對話的應用程序成為客戶 (Client) , 而響應對話請求的應用程序成為服務器 (Server) 。

在VB中調用Matlab時, 則VB為客戶Matlab為服務器, 客戶應用程序 (VB) 是通過DDE函數與MatlabDDE服務器模塊進行通信, 客戶DDE函數可以由客戶應用程序提供, 也可由Matlab引擎庫提供。當客戶應用程序創建DDE對話時, 必須識別被叫服務器的兩個DDE參數:服務器名 (Service name) , 即被請求對話的應用程序名;話題 (Topic) , 即對話主題。DDE的對話內容由一組預先規定的參數名稱構成。

1.2 ActiveX技術

ActiveX技術是一種非常有價值且有前途的技術, 借助ActiveX, 開發商和終端用戶就能把來自不同開發商ActiveX組件無縫地集成在自己的應用程序當中從而完成特定的目的, 不僅能縮短開發時間, 而且有效地低水平的重復開發。

Matlab提供了ActiveX自動化服務支持, 在VB中通過ActiveX自動化接口可將Matlab作為VB語言的一個ActiveX部件來調用。Mtalab ActiveX自動化服務器的功能包括:在Matlab空間中執行指令;與Matlab空間交換數據。下面就Matlab ActiveX所提供的3種方法作如下說明。

BSTR Execute ([in]BSTR Command) 。

BSTR表示寬字符串類型, 它與VB存儲字符串所采用的數據格式相同。該方法接收字符串命令并在Matlab中執行, 將結果以字符串形式返回。

void GetFullMatrix ([in]BSTR Name, [i n]B S T R W o r k s p a c e, [i n, o u t]S A F E A R R A Y (d o u b l e) *p r, [i n, o u t]SAFEARRAY (double) *pi) ;

該方法從指定的工作空間檢索一個完整的一維或二維的實型或虛mxArray, 其實部和虛部被分別存放到兩個單獨的Double型數組中。

void PutFullMatrix ([in]BSTR Name, [in]BSTR Workspace, [in]SAFEARRAY (double) pr, [in]SAFEARRAY (double) pi) ;

該方法將一個mxArray放入指定的工作空間。各參數的含義及調用方法與GetFu llMatrix方法類似。

ActiveX技術的應用有些像DDE鏈接, 但比DDE鏈接更強大。DDE Matlab服務器能夠工作的前提條件是Matlab本身已經開啟, 否則, DDE對話無法建立。這是DDE Matlab服務器與Mtalab ActiveX自動化服務器的主要不同表現之一。

2 應用

智能型異性纖維檢測裝置的研究是陜西省自然科學基金項目, 在這個項目中需要對采集來的大量數據進行矩陣運算和圖像的顯示, 這些均可用Matlab簡單的完成。但是由于本項目的數據采集軟件系統均采用VB6.0開發而成, 為了保證最終裝置的界面統一, 就涉及到一個如何在VB中調用Matlab的問題。前面就此問題的理論筆者已經闡述了四種方法, 因此在本項目中筆者采用的是在計算機領域如日中天的ActiveX技術來解決此問題。下面就以本項目中的一個細節—顯示采集數據的直方圖作為例子來闡述應用ActiveX技術, 實現了在VB中調用Matlab函數。主要的代碼及運行結果如下。

D i m m a t l a b A s O b j e c t'聲明一個Mtalab類型的對象

Private Sub Command1_Click ()

Dim result As String'生命變量

···

Set matlab=CreateObject ("Matlab.Application") 'VB通過ActiveX啟動Matlab自動化服務器,

'Matlab.Application是Matlab的ActiveX對象在注冊表中的名字

···

C a l l m a t l a b.P u t F u l l M a t r i x ("b", "b ase", wa, ha) '將在VB中采集的數據wa和ha以數組的形式送到Matlab中的一個矩陣變量b中

result=matlab.execute ("imhist (b) ;") '調用Matlab函數繪制采集數據的直方圖[4]

r e s u l t=m a t l a b.e x e c u t e ("p r i n tdbitmap") '將Matlab產生的圖形以bitmap文件格式存入剪切板中

Image1.Picture=clpboard.GetData () '將圖形從剪切板中讀出

···

Call matlab.quit'結束退出Matlab

End Sub

3 結語

基于ActiveX技術, 實現了在VB開發系統界面中利用Matlab進行矩陣運算和圖形圖像的繪制及顯示, 不僅能縮短開發時間而且提高了軟件的性能。利用本文介紹的幾種方法就可以方便地在用戶自己開發的應用軟件中嵌入如:VB、VC、JAVA等軟件的功能, 從而大大簡化軟件的開發過程的同時提供給使用者更為專業、可靠的軟件界面。

摘要:本文詳細介紹了VB與Matlab兩者間的接口技術, 并應用Axtibvex技術實現了在VB中調用和操作Matlab。通過兩者的混合編程實現了VB的可視化界面與Matlab強大的數值分析和圖形圖像處理能力的結合。

關鍵詞:ActiveX,無縫鏈接,DDE,MatrixVB

參考文獻

[1] 張志勇, 等.精通MATLAB6.5版[M].北京:北京航空航天大學出版社, 2003:559~576.

[2] 王穎, 等.ActiveX:從VB6.0調MATLAB的實現方法[J].機電工程, 1999 (5) :172~174.

[3] Evangelos Petroutsos.VB6.0從入門到精通[M].北京:電子工業出版社, 1999.

本文來自 99學術網(www.gaojutz.com),轉載請保留網址和出處

上一篇:語文素養之花在課堂悄然綻放下一篇:雙黃連顆粒治療小兒上呼吸道感染合并糖尿病效果的臨床研究

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火