資源描述:
《通過(guò)vc++調(diào)用》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、通過(guò)VC++調(diào)用摘要:MATLAB語(yǔ)言是當(dāng)今國(guó)際上最流行的科學(xué)與工程計(jì)算編程語(yǔ)言,它起源于矩陣運(yùn)算,并已發(fā)展成一種高度集成的計(jì)算機(jī)語(yǔ)言。本文簡(jiǎn)單闡述了Matlab的基本功能和應(yīng)用,引入了有限元的基本概念及有限元分析的一般步驟。通過(guò)matlab與其它高級(jí)語(yǔ)言相比較,指出其在有限元分析應(yīng)用中的優(yōu)勢(shì)以及不足。在此基礎(chǔ)上,提出了Vc++與matlab混合編程。最后用一個(gè)例子演示vc++與matlab混合編程在有限元分析的過(guò)程。關(guān)鍵詞:MATLAB有限元混合編程一、引言matlab是美國(guó)Mathatlab遠(yuǎn)遠(yuǎn)優(yōu)于其它的高級(jí)編程語(yǔ)言,而且編程易學(xué)、直觀(guān),代碼非
2、常符合人們的思維習(xí)慣。另外matlab為用戶(hù)提供了豐富的atlab已在許多工業(yè)部門(mén),設(shè)計(jì)單位和科研機(jī)構(gòu)特別是高校得到廣泛的應(yīng)用。它主要應(yīng)用于自動(dòng)控制系統(tǒng)、數(shù)字信號(hào)處理,時(shí)間系列分析等方面,在工程有限元數(shù)值分析方面應(yīng)用甚少,也鮮見(jiàn)報(bào)道。有限元方法是利用計(jì)算機(jī)求解數(shù)學(xué)物理或工程實(shí)際中的微分方程問(wèn)題,主要是偏微分方程問(wèn)題的一種系統(tǒng)化的數(shù)值計(jì)算方法。有限元法是將物體劃分成有限個(gè)單元,這些單元之間通過(guò)有限個(gè)節(jié)點(diǎn)相互連接,單元看作是不可變得剛體,單元之間的力通過(guò)節(jié)點(diǎn)傳遞,然后利用能量原理建立各單元矩陣,最后組成總剛矩陣,求解線(xiàn)性方正組。二、Matlab在有限元
3、分析中的優(yōu)勢(shì)與不足進(jìn)行有限元分析,若用其他高級(jí)語(yǔ)言開(kāi)發(fā),如c,c++,frotran等,編程的工作量十分浩大,開(kāi)發(fā)周期很長(zhǎng),而利用matlab進(jìn)行有限元設(shè)計(jì)有以下優(yōu)點(diǎn):(1)語(yǔ)言簡(jiǎn)潔緊湊、使用方便靈活、庫(kù)函數(shù)及其豐富,幾乎包括有限元編程中的所有基礎(chǔ)程序。(2)可視化及強(qiáng)大的圖形功能。(3)程序代碼公開(kāi)(4)程序可移植性好。Matlab幾乎可以在各種機(jī)型和操作系統(tǒng)上運(yùn)行,所以在可移植性和可擴(kuò)充性上,matlab遠(yuǎn)優(yōu)越于其他的高級(jí)編程語(yǔ)言。Matlab語(yǔ)言具有強(qiáng)大的數(shù)值計(jì)算能力和視圖能力,其偏微分方程工具箱(PDEToolbox)提供了有限元求解的一個(gè)
4、強(qiáng)大而靈活的環(huán)境,并且有限元X格可做精細(xì)劃分以滿(mǎn)足要求。但是,和其他的高級(jí)語(yǔ)言相比,matlab程序的執(zhí)行速度較慢。VC++是當(dāng)前atlab與VC++進(jìn)行有效的混合編程,不僅能更好地發(fā)揮Matlab強(qiáng)大的功能,還能快速地進(jìn)行軟件開(kāi)發(fā),尤其是當(dāng)軟件開(kāi)發(fā)中需要實(shí)現(xiàn)復(fù)雜的數(shù)學(xué)算法、圖形處理時(shí),更加高效。(1)將Matlab程序編譯成C/C++源文件并嵌入VC++;(2)在C/C++程序中利用Matlabengine調(diào)用Matlab函數(shù);(3)在C/C++程序中直接使用MatlabC/C++MathLibrary;(4)將.m文件編譯成*.dll文件嵌入到
5、VC++的程序中。其中matlab引擎是一組函數(shù),通過(guò)這組函數(shù),用戶(hù)可以在應(yīng)用程序中實(shí)現(xiàn)對(duì)matlab的控制。采用matlab引擎,可以在非matlab為主的應(yīng)用程序中使用matlab功能。Matlab采用mcc命令可以將大部分.m程序編譯成動(dòng)態(tài)連接庫(kù)供matlab調(diào)用;通過(guò)mex命令,可以將C語(yǔ)言程序編寫(xiě)成MATLAB可執(zhí)行程序。這兩種方式中,前一種方式是在vc應(yīng)用程序中調(diào)用matlab,后一種方式是在matlab程序中調(diào)用vc編寫(xiě)的程序。這兩種方式都不能脫離matlab環(huán)境,所有操作都是基于matlab實(shí)現(xiàn)的。與matlab引擎應(yīng)用程序和mat
6、lab可執(zhí)行程序相比,vc調(diào)用matlab數(shù)學(xué)庫(kù)和圖形函數(shù)執(zhí)行速度快,內(nèi)存需求少,可以發(fā)布給沒(méi)有matlab的用戶(hù)使用。但也有其不可避免的缺點(diǎn):(1)用戶(hù)不能夠在基于matlab數(shù)學(xué)庫(kù)和圖形庫(kù)的應(yīng)用程序中使用matlab的函數(shù)eval()和input();(2)不能調(diào)用圖形句柄系統(tǒng)的函數(shù);(3)Matlab中的一些方法在c/c++中得不到支持,如“;”,”[]”.四、通過(guò)在vc++環(huán)境中調(diào)用matlab引擎實(shí)現(xiàn)有限元分析本文采用matlab引擎的工作方式,在vc++6.0開(kāi)發(fā)環(huán)境下,調(diào)用MATLAB引擎函數(shù),繪制求解區(qū)域,進(jìn)行有限元分析,得出結(jié)果的
7、工作,并將結(jié)果保存到MAT文件中。1.準(zhǔn)備工作(1)vc++環(huán)境編譯文件設(shè)置。通過(guò)菜單Tools/Options,進(jìn)入Directorie頁(yè)面。為IncludeFiles和LibraryFiles添加以下路徑D:Matlab6p5externinclude(在Matlab的安裝路徑下)D:Matlab6p5externlibsvc60(在Matlab的安裝路徑下)(2)添加庫(kù)文件:通過(guò)菜單Projects
8、settings,進(jìn)入Link頁(yè)面,添加文件名libmx.lib、libmat.lib、libeng.lib(3)在使用engin
9、e函數(shù)的程序頭文件中包含如下兩個(gè)頭文件:#include"engine.h"#include2.在應(yīng)用程序中添加調(diào)用Mat