資源描述:
《VC++與MATLAB混合編程及其應用》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、Matlab是由MathWorks公司于1984年推出的數值計算及圖形處理軟件,可以實現數值分析、優(yōu)化、統(tǒng)計、偏微分方程數值解、自動控制、信號處理、圖像處理等若干領域的計算和圖形顯示功能。其中,控制系統(tǒng)工具箱的集成為設計和分析各種復雜的控制系統(tǒng)提供了有效的方法和途徑。???但是,由于Matlab開發(fā)平臺的局限性,在其上面開發(fā)的程序不能脫離Matlab運行環(huán)境,因而在處理一些實際應用問題時顯得靈活性不足,而VC++則在一定程度上能夠彌補這一漏洞,因此,現將二者結合共用,各獻其長,可以為科研工作和工程開發(fā)提供了更為強大的技術支持。1、Matlab與VC混合編程的實現方法Matlab作為控制系
2、統(tǒng)設計的一種通用工具,它可以和VC方便的進行連接。一般而言,Matlab與VC混合編程的實現方法主要有以下三種方法:(1)通過引擎(Engine),采用客戶機服務器的計算模式,通過Window的ActiveX通道和Matlab進行連接。具體應用時,往往在VC中設計程序框架,以編譯的程序作為前端客戶機;通過調用Matlab引擎在后臺實現與服務器的連接,實現動態(tài)通信(2)應用Matlab數學函數庫,Matlab中包含了內容豐富的函數庫,而且還提供了與VC的數學函數接口,用戶可以方便的在VC的IDE(集成開發(fā)環(huán)境)中調用。(3)通過DLL實現VC與Matlab的混合編程。DLL是一個可執(zhí)行的二
3、進制文件。把很多通用的功能放在DLL中,可以供多個應用程序調用,這樣可以很好的減少外部存儲空間的占有量,并實現代碼的共享[2]。在上述三種方法中,第一種方法對調用Matlab的工具箱很實用,所有在進行控制系統(tǒng)的設計和分析時,一般都是通過調用Matlab引擎(Engine)來實現的。本文主要介紹采用通過引擎(Engine)來實現VC與Matlab的混合編程。2、MATLAB引擎簡介Matlab引擎是Matlab提供的一系列程序的結合,它允許用戶在自己的應用程序中對Matlab進行調用,將Matlab作為一個操作引擎使用,使其在后臺運行。一般Matlab引擎采用客戶機/服務器(Client/
4、Sever)計算方式,就是一種把應用處理負載分布到客戶機和服務器上的一種計算模式,客戶機和服務器既可以是存在于同一臺計算機,也可以通過網絡來實現信息共享。一般情況下,客戶機是運行前端軟件的PC機,并且知道如何與服務器通信,服務器與此相對應,是接收請求信息,并采取相應行的機器。由于客戶機和服務器共同承擔處理負載,使系統(tǒng)總體性能大為提高。在實際應用過程中,把VC的C語言或C++語言的程序作為前端客戶機程序,它從Matlab引擎接收數據信息,并與引擎?zhèn)鬟f命令的數據信息。表1是幾種常用的Matlab引擎調用函數。?表1:Matlab引擎常用調用函數??通過Matlab引擎用戶可以完成以下任務:首
5、先,可以將Matlab作為一個功能強大的和可編程的數學函數庫,調用Matlab中的大量的數學計算函數,完成復雜的計算任務;其次,可以為一個特定的任務構建一個完整的系統(tǒng),前臺的用戶界面用高級語言編寫,后臺的計算任務由Matlab引擎來完成;最后,用戶不但可以在本地計算機上調用Matlab引擎,而且還可以通過網絡調用其它計算機上的Matlab引擎,這樣可以很好的實現資源的共享和作業(yè)的分工合作。3、Matlab引擎實現VC和Matlab混合編程的步驟要想在VC集成環(huán)境下利用Matlab引擎實現VC和Matlab的混合編程,一般需要經過以下幾個必要的步驟:???(1)VisualC++6.0編譯
6、環(huán)境的設置:通過菜單Tools/Options,打開VisualC++6.0設置屬性頁,進入Directorie頁面,在ShowDirectoriesfor下拉列表中選擇IncludeFiles,添加路徑:D:Matlab6p5externinclude(在Matlab的安裝路徑下);再選擇下拉列表中的LibraryFiles,添加路徑:D:Matlab6p5externlibwin32Microsoftmsvc60(在Matlab的安裝路徑下)。編譯環(huán)境只需設置一次。(2)添加庫文件:通過菜單Projects
7、settings,進入Link頁面,在Object/Lib
8、raryModules框中,添加庫文件名:libmx.lib、libmat.lib、libeng.lib。每個新的工程文件都要單獨添加庫文件。(3)在使用engine函數的程序頭文件中包含如下兩個頭文件:#include"engine.h"#include(4)在應用程序中添加調用Matlab引擎的程序代碼:?{Engine*ep;if(!(ep=engOpen("