本書主要介紹如何運用Matlab與C/C進行混合程序設計。本書全面詳細介紹了MatlabC數學庫、MatlabC數學庫、Matcom、MatlabCOMBuilder、MatlabEngine及編譯Matlab獨立可執(zhí)行程序等Matlab混合程序設計的內容。本書共分為7章,主要內容包括:Matlab編程的基礎知識、MatlabC語言接口、如何生成可獨立運行的Matlab程序、在VisualC中調用Matlab程序、Matcom、MatlabCOMBuilder與VisualC混編程以及在VisualC中調用MatlabC數學庫。本書各章都包含大量的實例程序,可供尋求將Matlab程序脫離Matlab環(huán)境的Matlab程序設計人員、尋求高效算法庫的C/C開發(fā)人員學習和參考。本書采用的開發(fā)和運行環(huán)境為:VisualC6.0與Matlab6.5。[前言]最早接觸Matlab是在大學期間參加“大學生數學建模競賽”的時候,那時候惟一的感覺就是“相見恨晚”。接著在讀研究生做課題的時候,開始使用Matcom編譯Matlab程序以期獲得更快的處理速度,使用Matcom的C矩陣庫以期在享受高效率矩陣運算庫的同時,實現和VisualC6.0開發(fā)環(huán)境的無縫連接。后來,MathWorks公司將Matcom收購并將其功能整合到Matlab中。直到Matlab6.5的推出,Matlab與C/C混合編程增加了MatlabC語言接口、MatlabC數學庫、MatlabCOMBuilder和Matcom等諸多內容,由此Matlab與C/C進行混合程序設計的方法也派生出諸多“門派”。MatlabC語言接口即Matlab提供的一組C語言API函數以供用戶調用。這組C語言API函數是Matlab和用戶C代碼之間的橋梁。用戶可以在Matlab的MEX文件中調用C語言API函數,也可以在純C/C開發(fā)環(huán)境中調用C語言API函數。MatlabC數學庫是Matlab提供的一組封裝好的矩陣運算數學庫,其使用方法和Matlab環(huán)境中的編寫方法非常相似,如果用戶用VC(為了書寫方便,書中出現的VC是VisualC的簡寫)實現用戶界面,而又希望尋找一組高效的矩陣運算數學庫的話,MatlabC數學庫是一個不錯的選擇。MatlabCOMBuilder可以將Matlab的用*.m文件表達的函數編譯為COM組件。這也是MathWorks公司推薦的一種進行Matlab混合編程的方法。很多用Matlab編譯器編譯有錯誤的文件用MatlabCOMBuilder卻能很好地解決。只是具體操作起來,在VC中調用COM組件比調用C數學庫和C語言API函數略微復雜。Matcom是第一個可以將Matlab的*.m文件編譯為C/C代碼的工具?,F在,MathWorks公司已經將其集成到Matlab中,沒有必要再使用Matcom來編譯*.m文件了。但是Matcom的C矩陣庫仍然有使用的價值,相對于MatlabC數學庫來說,其使用起來更為簡單和方便??梢钥闯?,上述各種Matlab與C/C混合程序設計的方法各有千秋,具體使用時還要結合開發(fā)者的具體情況。但無論使用哪種方法,Matlab的數據結構與C/C的數據結構之間的相互訪問和轉換都是關鍵,這也是本書的重點所在,希望讀者在讀本書的過程中注意。本書的所有源代碼都可以在附帶的光盤中找到。另外,為了與書中程序對應及保證全文體例上的統(tǒng)一,本書中的符號全部采用正體書寫。由于作者的水平有限,如果讀者對本書的內容有疑問或者發(fā)現書中有錯誤的地方,請發(fā)送郵件到matlab_vc_program@yahoo.com.cn與作者討論或批評指正,謝謝!在本書的編寫過程中得到了很多同志的支持與幫助。特別感謝李璐、李群、路瑞強、伍煒、周志勇、王國房六位同志,由于本書涉及VisualC6.0與Matlab程序設計的諸多方面,很多關鍵問題都是在與六位同志的討論中解決的。不僅如此,他們還為本書提供了很多的寶貴資料。感謝齊春溪女士不辭辛勞地完成了本書所有章節(jié)的初步排版工作,并且找出了本書初稿中的諸多錯誤。最后感謝所有對本書的完成提供過幫助的人們,沒有他們的幫助和付出,本書也不可能完成。