淺析VC與MATLAB聯合編程(四)

淺析VC與MATLAB聯合編程<四>

作者:鄧科


  在淺析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的功能。

 
發佈了23 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章