在淺析VC與MATLAB聯合編程<一>、淺析VC與MATLAB聯合編程<二>和淺析VC與MATLAB聯合編程<三>中簡單介紹了VC和MATLAB接口的兩種方法,初學者可能會問為什麼要用VC和MATLAB接口,接口的實質又是什麼,本文就通過一個例子來回答這兩個問題。
首先來介紹一下MATLAB。MATLAB名字由MATrix和 LABoratory 兩詞的前三個字母組合而成。那是20世紀七十年代後期的事:時任美國新墨西哥大學計算機科學系主任的Cleve Moler教授出於減輕學生編程負擔的動機,為學生設計了一組調用LINPACK和EISPACK庫程序的“通俗易用”的接口,此即用FORTRAN編寫的萌芽狀態的MATLAB。
經幾年的校際流傳,在Little的推動下,由Little、Moler、Steve Bangert合作,於1984年成立了MathWorks公司,並把MATLAB正式推向市場。從這時起,MATLAB的內核采用C語言編寫,而且除原有的數值計算能力外,還新增了數據圖視功能。
MATLAB以商品形式出現後,僅短短幾年,就以其良好的開放性和運行的可靠性,使原先控制領域裡的封閉式軟件包(如英國的UMIST,瑞典的LUND和SIMNON,德國的KEDDC)紛紛淘汰,而改以MATLAB為平台加以重建。在時間進入20世紀九十年代的時候,MATLAB已經成為國際控制界公認的標准計算軟件。
MATLAB已經成為目前國際上最流行、應用最廣泛的科學工程計算軟件,它廣泛的應用於自動控制、數學運算、信號分析、圖象處理、財務分析等各行各業。由於它具有強大的計算和繪圖功能、大量穩定可靠的算法庫和簡潔高效的編程語言,已成為數學計算工具方面事實上的標准。
在歐美大學裡,諸如應用代數、數理統計、自動控制、數字信號處理、模擬與數字通信、時間序列分析、動態系統仿真等課程的教科書都把MATLAB作為內容。這幾乎成了九十年代教科書與舊版書籍的區別性標志。在那裡,MATLAB是攻讀學位的大學生、碩士生、博士生必須掌握的基本工具。
在國際學術界,MATLAB已經被確認為准確、可靠的科學計算標准軟件。在許多國際一流學術刊物上(尤其是信息科學刊物)都可以看到MATLAB的應用。在設計研究單位和工業部門,MATLAB被認作進行高效研究、開發的首選軟件工具。如美國National Instruments公司信號測量、分析軟件LabVIEW,Cadence公司信號和通信分析設計軟件SPW等,或者直接建築在MATLAB之上,或者以MATLAB為主要支撐。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各種硬卡、儀器等都接受MATLAB的支持。
為了說明問題,我們舉個例子:解下列線形方程組:(如圖1):
圖1
用C語言(VC環境中)編寫的代碼為:(圖2)
圖2
編譯、連接,運行結果為:(圖3):
圖3
而該方程在MATLAB中只需要一個命令“\”就可以解決:
在MATLAB中建立一個新的m文件,在MATLAB菜單中:File->New->M file(如圖4):
圖4
在M文件中輸入代碼,並保存為QJFCZ.m。(如圖5)
圖5
在MATLAB Command命令窗口中輸入以下命令:
>> QJFCZ
然後回車,結果如下:
x =
-0.1429
2.7857
0
>>
可以看出用MATLAB寫出的代碼十分簡單,對於上面的方程,如果矩陣A和b的維數發生變化的話, C代碼還要重新編寫,而用MATLAB書寫的代碼幾乎不用改動,只需改變數據即可。
如果現在我們用VC編寫的一個軟件,其中要求解有5個未知數的線形方程組,如果用C\C++語言來寫程序的話其編程量是很大的,如果在C\C++語言中能用MATLAB那麼簡單的代碼來實現該功能就可以大大減少工作量,VC和MATLAB接口就是做這個工作的。MATLAB中提供了大量用C\C++重新編寫的MATLAB庫函數,包括初等數學函數、線形代數函數、矩陣操作函數、數值計算函數、特殊數學函數、插值函數等等,還可以利用MATLAB的編譯工具將m文件方便的轉化為C\C++語言、可執行程序(exe)、動態連接庫文件(dll)、COM組件等等,並可直接供C\C++語言調用,利用VC和MATLAB接口技術可以在VC中充分發揮MATLAB的數值計算功能,並且可以不依賴MATLAB軟件運行,我們在編寫程序時,可以在VC下做出很漂亮的界面,而把復雜的數值處理交給MATLAB去做(實際上MATLAB也能做界面GUI(Graphic User Interface),而且做出的界面我認為並不比VC遜色,但是需要MATLAB軟件作為後台運行,如果不依賴MATLAB軟件運行的話,可以在VC中調用GUI),然後通過接口技術將MATLAB集成到VC中,這樣可以大大減輕編程的負擔,並減少程序編寫時間。
事實上正是由於MATLAB數值計算功能的強大,MATLAB與許多程序都有接口,例如Fortran、VB、Java、SPSS(一個著名的統計軟件)、Excel、Word等,其實質也是通過接口在程序中調用MATLAB的功能。