《VC和Matlab混合編程總結(jié)》由會(huì)員分享,可在線閱讀,更多相關(guān)《VC和Matlab混合編程總結(jié)(22頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,VC和Matlab混合編,程,總結(jié),同山,2007.10.14.C+,Matlab,ACIS,引言,Visual C+,基本的編程實(shí)現(xiàn)平臺(tái),(&OpenGL),編譯語言,代碼運(yùn)行速度快,可脫離開發(fā)平臺(tái)運(yùn)行,易于工程中使用,代碼編制復(fù)雜,不適合算法設(shè)計(jì)初期使用,缺少通用的常用數(shù)值運(yùn)算功能,(,矩陣,),引言,Matlab,解釋語言,易于實(shí)現(xiàn),適用于算法設(shè)計(jì),具有常用的數(shù)值運(yùn)算功能,代碼運(yùn)行速度慢,不能脫離,Matlab,開發(fā)平臺(tái)運(yùn)行,對(duì)比,在,VC,中實(shí)現(xiàn)二維矩陣的存儲(chǔ)和輸出,:,矩陣相加,相乘,求逆,稀疏矩
2、陣,double matrix33=1,2,3,4,5,6,7,8,9;,for(int i=0;i3;i+),for(int j=0;j3;j+),coutmatrixij;,coutn;,對(duì)比,在,Matlab,中實(shí)現(xiàn)二維矩陣的相關(guān)操作,但是,Matlab,運(yùn)行速度要比,VC,慢幾百倍,a=1 2 3;4 5 6;7 8 9;,b=2*a,c=a*b,inv(a),sparse(a),矩陣初始化賦初值,矩陣與標(biāo)量的相乘,矩陣乘法,矩陣求逆,稀疏矩陣的實(shí)現(xiàn),能否結(jié)合,VC,和,Matlab,的優(yōu)點(diǎn),?,VC,和,Matlab,混合編程,!,VC,和,Matlab,的混合編程,有多種方法可以進(jìn)
3、行,VC,和,Matlab,的混合編程,:,VC,調(diào)用,Matlab,引擎,matlab,程序編譯為,dll,c+,程序編譯為,mex,VC,調(diào)用,Matlab,c Math Library,VC,調(diào)用,Matlab,c+Math Library,COM,在,VC,中調(diào)用,Matlab,C+Math Library,實(shí)現(xiàn)二維矩陣的操作,:,編程方便,有數(shù)值運(yùn)算庫,;,速度快,mwArray a,b,c;,a=ones(10,10);,b=randon(10,10);,c=a*b,;,c=inv(c);,c=sparse(c),矩陣變量定義,矩陣初始化,矩陣初始化,矩陣乘法,矩陣求逆,稀疏矩陣的
4、實(shí)現(xiàn),I,Matlab,C+Math Library!,Step by Step,下面考慮將,C+,的數(shù)組轉(zhuǎn)換為,Matlab,C+Math Library,的,mwArray,結(jié)構(gòu),可以方便地利用,mwArray,結(jié)構(gòu),建立,頂點(diǎn)相關(guān)邊長權(quán)稀疏矩陣,進(jìn)行三角網(wǎng)格數(shù)據(jù)的相關(guān)操作,我們還可以不安裝,Matlab,的開發(fā)環(huán)境,就能使用它的數(shù)學(xué)庫函數(shù),首先看看具體開發(fā)工具的設(shè)置,:,1,將,Matlab,externinclude,下所有的頭文件打包為,include.rar,解壓縮到用戶目錄,/test,下,2,將,mglinstaller.exe,文件復(fù)制到用戶目錄,/test,下,并運(yùn)行解壓縮
5、出動(dòng)態(tài)庫,3,在,VC,的,Tools-Options,中將上述的頭文件和庫文件目錄加入到,Directory,下,4,新建工程,按照下面的圖片依次設(shè)置,5,在程序中,#include,現(xiàn)在可以使用,Matlab,C+Math Library,了,!,int,Faces43=1,2,3,2,4,3,3,4,6,4,5,6;,double Vertexs63=0,0,0,1,1,0,1,-1,0,2,-0.2,0,3,-0.8,0,2.8,1,0;,/,將網(wǎng)格頂點(diǎn)數(shù)據(jù)附為mwArray類型變量,mwArray,mVertexes,=zeros(6,3);,for(i=1;i=6;i+),for(
6、j=1;j=3;j+),mVertexes,(i,j,),=Vertexsi-1j-1;,/,將網(wǎng)格頂點(diǎn)數(shù)據(jù)附為mwArray類型變量,mwArray,mFaces,=zeros(4,3);,for(i=1;i=4;i+),for(j=1;j=3;j+),mFaces,(i,j,),=Facesi-1j-1;,/,獲得頂點(diǎn)相關(guān)邊長權(quán)稀疏矩陣,mwArray,v2v=sparse(zeros(6,6);,for(i=1;i=4;i+),/,對(duì)面遍歷,mwArray,v1=mFaces(i,1);,/,面上的,一個(gè)頂點(diǎn)序號(hào),mwArray,v2=mFaces(i,2);,mwArray,v3=mF
7、aces(i,3);,mwArray,v1xyz=mVertexes(v1,colon();,/,面的三個(gè)頂點(diǎn)的三維坐標(biāo)向量,mwArray,v2xyz=mVertexes(v2,colon();,mwArray,v3xyz=mVertexes(v3,colon();,v2v(v1,v2)=norm(v1xyz-v2xyz);,/,用對(duì)應(yīng)的邊長向頂點(diǎn)相關(guān)系數(shù)矩陣賦值,v2v(v1,v3)=norm(v1xyz-v3xyz);,v2v(v2,v3)=norm(v2xyz-v3xyz);,/,矩陣運(yùn)算,mwArray,mVertexes,2,=2*,mVertexes,;,/,矩陣求逆,inv,/,集合交并補(bǔ),intersect,/,排序,sort,/.,/,獲得mwArray數(shù)據(jù)的值,for(i=1;i=6;i+),for(j=1;j=3;j+),mwArray,vxyz,=,mVertexes(i,j,);,Vertexsi-1j-1=vxyz.ExtractScalar(1);,參考資料,:,MATLAB C+Math Library 2.1 Reference.,pdf,MATLAB C+Math Library 2.1 Users,Guide.pdf,