MATLAB應(yīng)用程序接口API_第1頁
MATLAB應(yīng)用程序接口API_第2頁
MATLAB應(yīng)用程序接口API_第3頁
MATLAB應(yīng)用程序接口API_第4頁
MATLAB應(yīng)用程序接口API_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 MATLAB中的應(yīng)用程序接口API前面章節(jié)主要敘述MATLAB自身的各種功能和使用方法。作為優(yōu)秀軟件,MATLAB不僅自身功能強(qiáng)大、環(huán)境友善、能十分有效地處理各種科學(xué)和工程問題,而且具有極好的開放性。這開放性表現(xiàn)在兩方面:一,MATLAB適應(yīng)各科學(xué)、專業(yè)研究的需要,提供了各種專業(yè)性的工具包;二,MATLAB為實(shí)現(xiàn)與外部應(yīng)用程序的“無縫”結(jié)合,提供了專門的應(yīng)用程序接口API。遵循本書“淡化專業(yè),面向通用”的宗旨,本章將集中闡述MATLAB的應(yīng)用程序接口。本章分五節(jié),各節(jié)內(nèi)容簡(jiǎn)述如下。第12.1節(jié)集中介紹:如何編寫CMEX源碼程序,也就是如何為現(xiàn)有的C程序編寫接口程序,使之成為MATLAB函數(shù)文

2、件;運(yùn)用這種技術(shù),讀者可以把積累的優(yōu)秀C程序改造成可在MATLAB中方便調(diào)用的指令。第12.2節(jié)用于演示:如何編寫產(chǎn)生MAT數(shù)據(jù)文件的C源碼程序。讀者通過算例入門,就不難借助MAT文件實(shí)現(xiàn)MATLAB與外部應(yīng)用程序的數(shù)據(jù)交換。第12.3節(jié)圍繞MATLAB引擎技術(shù)展開。借助這種技術(shù),前臺(tái)可以是各種外部應(yīng)用程序編寫的界面,而后臺(tái)計(jì)算則可完全交由MATLAB進(jìn)行。第12.4節(jié)用三個(gè)算例來說明如何應(yīng)用ActiveX實(shí)現(xiàn)MATLAB與外部應(yīng)用程序的通信。在第一個(gè)算例中,MATLAB用作為客戶,服務(wù)器是Excel。在后兩個(gè)算例中,服務(wù)器是MATLAB,而客戶是PowerPointo由此產(chǎn)生的PPT文件,可

3、以在放映過程中,實(shí)時(shí)地進(jìn)行MATLAB調(diào)用。第12.5節(jié)的內(nèi)容是:如何借助DDE技術(shù)在MATLAB與其他外部程序間進(jìn)行通信。該節(jié)的一個(gè)算例演示:VB制作的界面如何借助DDE建立的對(duì)話通道調(diào)用服務(wù)器MATLAB進(jìn)行計(jì)算和顯示結(jié)果圖形。而另一個(gè)算例則演示:MATLAB如何以客戶身份與服務(wù)器Excel建立DDE“熱連接”,使MATLAB圖形實(shí)時(shí)地跟隨電子表格數(shù)據(jù)的改變而變化。值得指出:MATLAB6.0,6.1版用于API的(MEX、MAT、及引擎)庫函數(shù)許多已經(jīng)被廢止。本章內(nèi)容是根據(jù)MATLAB6.5編寫的。121C語言MEX文件的編寫12.1.1關(guān)于MEX文件的一般性說明12.1.2MEX文件中

4、的MATLAB數(shù)據(jù)A=abcd1234ABCD12.1.3C語言MEX文件源程序的構(gòu)成【例12.1.3-1】列出具有相同運(yùn)算功能(實(shí)現(xiàn)兩個(gè)雙精度實(shí)數(shù)標(biāo)量加法)的C+源碼程序和C+MEX源碼程序;對(duì)C+MEX源碼程序進(jìn)行編譯鏈接;在MATLAB中調(diào)用生成的DLL文件。通過本例,從感性上認(rèn)識(shí):(A)般C源碼文件如何改寫成具有約定格式的CMEX源碼文件;(B)CMEX源碼文件的基本結(jié)構(gòu);(C)基本的編譯鏈接方法;(D)DLL文件的調(diào)用方法。(1)#includevoidmyplus(doubley,doublex,doublez)y0=x0+z0;return;(2)exm12013_1.cpp#i

5、ncludemex.h/voidmyplus(doubley,doublex,doublez)y0=x0+z0;/voidmexFunction(intnlhs,mxArray*plhs,intnrhs,constmxArray*prhs)/TOC o 1-5 h zdouble*x,*y,*z;/intmrows0,ncols0;/intmrows1,ncols1;/if(nrhs!=2)/mexErrMsgTxt(Twoinputsrequired.);/elseif(nlhs1)/mexErrMsgTxt(Toomanyoutputarguments);/mrows0=mxGetM(pr

6、hs0);/ncols0=mxGetN(prhs0);mrows1=mxGetM(prhs1);ncols1=mxGetN(prhs1);/ncols0=1)ncols1=1)/if(!mxIsDouble(prhs0)|mxIsComplex(prhs0)|!(mrows0=1&/mexErrMsgTxt(Inputsmustbeallnoncomplexscalardouble.);/if(!mxIsDouble(prhs1)|mxIsComplex(prhs1)|!(mrows1=1&/mexErrMsgTxt(Inputsmustbeallnoncomplexscalardouble.

7、);/if(mrows0!=mrows1|ncols0!=ncols1)/mexErrMsgTxt(Inputsmustbesamedimension.);/plhs0=mxCreateDoubleMatrix(mrows0,ncols0,mxREAL);/x=mxGetPr(prhs0);/z=mxGetPr(prhs1);/y=mxGetPr(plhs0);/myplus(y,x,z);(3)exm1213_1.cppexm1213_1.dll(4)c=0.333012.1.4CMEX文件的執(zhí)行流程12.1.5編寫CMEX文件的常用庫函數(shù)和示例12.1.5.1常用的MEX庫函數(shù)(1)#in

8、cludemex.hvoidmexFunction(intnlhs,mxArray*plhs,intnrhs,constmxArray*prhs)/*其他c源碼*/(2)#includemex.hvoidmexErrMsgTxt(constchar*error_msg);voidmexWarnMsgTxt(constchar*warning_msg);(3)#includemex.hintmexCallMATLAB(intnlhs,mxArray*plhs,intnrhs,mxArray*prhs,constchar*command_name);(4)#includemex.hintmexEv

9、alString(constchar*command);(5)#includemex.hmxArray*mexGetVariable(constchar*workspace,constchar*var_name);intmexPutVariable(constchar*workspace,constchar*var_name,mxArray*array_ptr);12.1.5.2常用的MX函數(shù)(1)#includematrix.hmxArray*mxCreateNumericMatrix(intm,intn,mxClassIDclass,mxComplexityComplexFlag);(2)

10、#includematrix.hintmxGetM(constmxArray*array_ptr);intmxGetN(constmxArray*array_ptr);voidmxSetM(mxArray*array_ptr,intm);voidmxSetN(mxArray*array_ptr,intm);(3)#includematrix.hdouble*mxGetPr(constmxArray*array_ptr);double*mxGetPi(constmxArray*array_ptr);voidmxSetPr(mxArray*array_ptr,double*pr);voidmxSe

11、tPi(mxArray*array_ptr,double*pr);(4)#includematrix.h#includevoid*mxCalloc(size_tn,size_tsize);12.1.5.3編程示例【例12.1.5.3-1】創(chuàng)建一個(gè)C語言MEX文件,實(shí)現(xiàn)對(duì)MATLAB兩個(gè)“單行”字符串的合并。本例演示:(A)如何根據(jù)MATLAB約定的規(guī)則編寫CMEX源碼;(B)如何構(gòu)成該文件的調(diào)用指令;(C)如何為MEX文件編寫在線幫助文件。(1)#includemex.h/#includestring.h/voidstringplus(char*input_buf0,char*input_bu

12、f1,char*output_buf)strcat(output_buf,input_buf0);strcat(output_buf,input_buf1);/voidmexFunction(intnlhs,mxArray*plhs,intnrhs,constmxArray*prhs)/char*input_buf0,*input_buf1,*output_buf;intbuflen,buflen0,buflen1,status;if(nrhs!=2)/mexErrMsgTxt(Twoinputsinquired.);/elseif(nlhs1)/mexErrMsgTxt(Toomanyout

13、putarguments.);/if(mxIsChar(prhs0)!=1|mxIsChar(prhs1)!=1)/mexErrMsgTxt(Inputsmustbeastring.);if(mxGetM(prhs0)!=1|mxGetM(prhs1)!=1)/mexErrMsgTxt(Inputsmustbearowvector.);buflen0=(mxGetM(prhs0)*mxGetN(prhs0)+1;/buflen1=(mxGetM(prhs1)*mxGetN(prhs1)+1;/buflen=buflen0+buflen1-1;input_buf0=(char*)mxCalloc

14、(buflen0,sizeof(char);input_buf1=(char*)mxCalloc(buflen1,sizeof(char);output_buf=(char*)mxCalloc(buflen,sizeof(char);/status=mxGetString(prhs0,input_buf0,buflen0);/if(status!=0)mexWarnMsgTxt(Notenoughspace,Stringistruncated.);/status=mxGetString(prhs1,input_buf1,buflen1);/if(status!=0)mexWarnMsgTxt(

15、Notenoughspace,Stringistruncated.);stringplus(input_buf0,input_buf1,output_buf);/plhs0=mxCreateString(output_buf);/return;(3)(4)根據(jù)以上分析,就可以寫出下列exml20153_l.m文件:%exm120153_1.mTwostringsareconcatenatedintoalargerstring.%Cstr=exml20153_l(Astr,Bstr)把字符串Astr和Bstr水平串聯(lián)%Astr被串聯(lián)的“單行”字符串%Bstr被串聯(lián)的“單行”字符串%Cstr由As

16、tr在前,Bstr在后,串聯(lián)而成的字符串。%2002年11月編寫(5)C=1234abcd【例12.1.5.3-2】用C語言編寫MEX源碼文件,在運(yùn)行中實(shí)現(xiàn)對(duì)MATLAB函數(shù)的調(diào)用,畫出了y=1e-0-31COS(21)曲線。本例演示:(A)如何在MEX文件中調(diào)用MATLAB的內(nèi)建指令;(B)如何在MEX文件中調(diào)用用戶的自編M文件。(1)#inCludemex.h#defineMAX1000/voidfill(double*pr,int*pm,int*pn,intmax)inti;*pm=max/2;*pn=1;for(i=0;i(*pm);i+)pri=i*(4*3.14159/max);/

17、voidmexFunCtion(intnlhs,mxArray*plhs,intnrhs,ConstmxArray*prhs)intm,n,max=MAX;mxArray*rhs1,*lhs1;rhs0=mxCreateDoubleMatrix(max,1,mxREAL);fill(mxGetPr(rhs0),&m,&n,MAX);mxSetM(rhs0,m);mxSetN(rhs0,n);mexCallMATLAB(1,lhs,1,rhs,mexzzy);mexCallMATLAB(0,NULL,1,lhs,plot);mxDestroyArray(rhs0);mxDestroyArray(

18、lhs0);return;(2)cdd:myworkmexexm120153_2.cpp(3)exm120153_2圖12.1-2122MAT數(shù)據(jù)文件的應(yīng)用12.2.1數(shù)據(jù)的輸入輸出方法12.2.2創(chuàng)建MAT文件的C源碼程序的編寫【例12.2.2-1】目標(biāo):用C+編寫一個(gè)可創(chuàng)建MAT文件的獨(dú)立應(yīng)用程序exml2022_l.exe。通過該例演示:(A)可創(chuàng)建MAT文件的獨(dú)立應(yīng)用程序的編寫步驟;(B)相應(yīng)C+源程序的基本格式;(C)相應(yīng)mx-函數(shù)和C指令的配合應(yīng)用。matPutArray,(D)MAT庫函數(shù)matClose,matGetArray,matOpen,matPutArrayAsGlob

19、al的使用方法;(1)#include#includemat.h#include#defineBUFSIZE255/intcreate(constchar*file)/MATFile*pmat;mxArray*pa1,*pa2,*pa3;doubledata9=1.0,4.0,7.0,2.0,5.0,8.0,3.0,6.0,9.0;charstrBUFSIZE;printf(Creatingfile%s.nn,file);pmat=matOpen(file,w);if(pmat=NULL)printf(Errorcreatingfile%sn,file);printf(doyouhavewri

20、tepermissioninthisdirectory?)n);return(1);pa1=mxCreateDoubleMatrix(3,3,mxREAL);mxSetClassName(pa1,LocalDouble);pa2=mxCreateDoubleMatrix(3,3,mxREAL);mxSetClassName(pa2,GlobalDouble);memcpy(void*)(mxGetPr(pa2),(void*)data,sizeof(data);pa3=mxCreateString(MATLAB:thelanguageoftechnicalcomputing);mxSetCla

21、ssName(pa3,LocalString);matPutVariable(pmat,LocalDouble,pa1);matPutVariableAsGlobal(pmat,GlobalDouble,pa2);matPutVariable(pmat,LocalString,pa3);memcpy(void*)(mxGetPr(pa1),(void*)data,sizeof(data);matPutVariable(pmat,LocalDouble,pa1);mxDestroyArray(pa1);mxDestroyArray(pa2);mxDestroyArray(pa3);if(matC

22、lose(pmat)!=0)printf(Errorclosingfile%sn,file);return(1);/pmat=matOpen(file,r);if(pmat=NULL)printf(Errorreopeningfile%sn,file);return(1);pa1=matGetVariable(pmat,LocalDouble);/if(pa1=NULL)printf(ErrorreadingexistingmatrixLocalDoublen);return(1);if(mxGetNumberOfDimensions(pa1)!=2)printf(Errorsavingmat

23、rix:resultdoesnothavetwodimensionsn);return(1);pa2=matGetVariable(pmat,GlobalDouble);/if(pa2=NULL)printf(ErrorreadingexistingmatrixGlobalDoublen);return(1);if(!(mxIsFromGlobalWS(pa2)printf(Errorsavingglobalmatrix:resultisnotglobaln);return(1);pa3=matGetVariable(pmat,LocalString);/if(pa3=NULL)printf(

24、ErrorreadingexistingmatrixLocalStringn);return(1);mxGetString(pa3,str,255);if(strcmp(str,MATLAB:thelanguageoftechnicalcomputing)printf(Errorsavingstring:resulthasincorrectcontentsn);return(1);mxDestroyArray(pa1);mxDestroyArray(pa2);mxDestroyArray(pa3);if(matClose(pmat)!=0)printf(Errorclosingfile%sn,

25、file);return(1);printf(Donen);return(0);/主程序intmain()intresult;result=create(mattest.mat);return(result=0)?EXIT_SUCCESS:EXIT_FAILURE;(2)mcc-pexm12022_1.cpp(3)Creatingfilemattest.mat.DoneYourvariablesare:GlobalDoubleLocalDoubleLocalStringGlobalDouble=TOC o 1-5 h z123456789LocalDouble=123456789LocalSt

26、ring=MATLAB:thelanguageoftechnicalcomputing123MATLAB引擎技術(shù)的應(yīng)用12.3.1MATLAB引擎概念和功用12.3.2引擎庫函數(shù)及C源碼應(yīng)用程序的編寫【例12.3.2-1】用C語言編寫調(diào)用MATLAB引擎計(jì)算三次多項(xiàng)式x3-2x+5根的源程序。(1)#include#include#include#includeengine.hintPASCALWinMain(HANDLEhInstance,HANDLEhPrevInstance,LPSTRlpszCmdLine,intnCmdShow) l3Engine*ep;mxArray*P=NULL,

27、*r=NULL;charbuffer301;doublepoly4=1,0,-2,5;if(!(ep=engOpen(NULL)fprintf(stderr,nCantstartMATLABenginen);returnEXIT_FAILURE;P=mxCreateDoubleMatrix(1,4,mxREAL);mxSetClassName(P,p);memcpy(char*)mxGetPr(P),(char*)poly,4*sizeof(double);engPutVariable(ep,P);engOutputBuffer(ep,buffer,300);engEvalString(ep,

28、disp(多項(xiàng)式,poly2str(p,x),的根),r=roots(p);MessageBox(NULL,buffer,exml2032_l展示MATLAB引擎的應(yīng)用”,MB_OK);engClose(ep);mxDestroyArray(P);returnEXIT_SUCCESS;(2)3)圖12.3-1【例12.3.2-2】MATLAB引擎綜合應(yīng)用實(shí)例。本例演示:(A)MATLAB引擎對(duì)用戶自編M函數(shù)文件的調(diào)用;(B)借用DOS界面作為MATLAB的指令輸入和結(jié)果發(fā)布窗。(1)#include#include#include#includeengine.h#defineBUFSIZE51

29、2intmain()Engine*ep;mxArray*Pz=NULL,*result=NULL;charbufferBUFSIZE;doublezeta4=0.2,0.4,0.&1.2;/MATLAB環(huán)境外數(shù)據(jù)示例if(!(ep=engOpen(0)開啟本地MATLAB引擎,如失敗給出警告。fprintf(stderr,nCantstartMATLABenginen);returnEXIT_FAILURE;/程序段1:/Pz=mxCreateDoubleMatrix(1,4,mxREAL);mxSetClassName(Pz,z);memcpy(void*)mxGetPr(Pz),(void

30、*)zeta,sizeof(zeta);engPutVariable(ep,Pz);engEvalString(ep,engzzy(z););/printf(按Enter鍵繼續(xù)!nn);fgetc(stdin);printf(程序段1運(yùn)行已經(jīng)結(jié)束。下面處于程序段2運(yùn)行過程中!n);mxDestroyArray(Pz);engEvalString(ep,close;);/程序段2:/engOutputBuffer(ep,buffer,BUFSIZE);while(result=NULL)charstrBUFSIZE;printf(”注意:n);printf(”此界面上,可輸入任何MATLAB指令

31、。n);printf(”若想退出,請(qǐng)對(duì)Exit變量賦任何數(shù)值。n);printf();fgets(str,BUFSIZE-1,stdin);engEvalString(ep,str);printf(%s,buffer);if(result=engGetArray(ep,Exit)=NULL)printf(”可繼續(xù)運(yùn)行!n);printf(運(yùn)行結(jié)束!n);mxDestroyArray(result);engClose(ep);returnEXIT_SUCCESS;3) #l3圖12.3-2 # l3圖12.3-312.3.3利用VC+6.0集成環(huán)境編寫MATLAB引擎程序【例12.3.3-1】利

32、用VC+6.0集成編程界面編寫綜合運(yùn)用MAT數(shù)據(jù)文件和MATLAB引擎技術(shù)的(求矩陣的奇異值)C+源碼程序。本例演示:(A)如何利用VC+6.0集成編程界面編寫源碼程序;(B)編譯鏈接產(chǎn)生EXE文件所需的間夾文件。(1) #l3 # #l3 # #l3Anemptyproject.!CAsimpleapplication.CAHello,World!application.CAnapplicationthatsupportsMFC. # #l3 # #l3 l3|7Addtoproject:exml20331Location:ActiveServerPage噩BinaryFileBitmapF

33、ileC/C+HeaderFile囲C+SourceFilejqHTMLPage|exm12033_1ResourceScriptResourceTemplate|D:MYW0RKexm11TextFile圖12.3-7(2)#includeengine.h#includemat.h#include#include # l3#include#includevoidmain()double*b,a9=1,4,7,2,5,8,3,6,9;constchar*file=mymat.mat;mxArray*Ain,*Aout,*SV;Engine*ep;MATFile*mat;/mat=matOpen

34、(file,w);Ain=mxCreateDoubleMatrix(3,3,mxREAL);mxSetClassName(Ain,z);memcpy(char*)mxGetPr(Ain),(char*)a,9*sizeof(double);matPutVariable(mat,z,Ain);matClose(mat);mxDestroyArray(Ain);/mat=matOpen(file,r);Aout=matGetVariable(mat,z);if(ep=engOpen(NULL)engPutVariable(ep,Aout);engEvalString(ep,sv=svd(z););

35、SV=engGetVariable(ep,sv);b=mxGetPr(SV);coutvv奇異值為”;coutn;for(inti=0;i3;i+)coutsetw(16)bi;engClose(ep);matClose(mat);mxDestroyArray(Aout);mxDestroyArray(SV); l3elsecoutCantopenmatlab;4)5)圖12.3-9MATLAB中ActiveX技術(shù)的應(yīng)用 l312.4.1關(guān)于ActiveX的一般性說明MATLAB的ActiveX自動(dòng)化MATLABActiveX自動(dòng)化控制器【例12.4.2-1】MATLAB以自動(dòng)化客戶的資格通過

36、M腳本文件把MicrosoftExcel用作自動(dòng)化服務(wù)器。本例演示調(diào)用自動(dòng)化服務(wù)器的基本指令:Excel缺省界面的開啟;增添工作簿(Workbook);改變激活的當(dāng)前頁(Worksheet);MATLAB與Excel之間的數(shù)據(jù)傳遞;Excel的數(shù)據(jù)保存。%exm12042_1.mexcel=actxserver(Excel.Application);%disp(為看清Excel界面及其變化,請(qǐng)把MATLAB界面調(diào)整得遠(yuǎn)小于屏幕!)disp(按任意鍵,將可見到“Excel界面”出現(xiàn)。)pauseset(excel,Visible,1);disp(按任意鍵,可見到Excel界面出現(xiàn)第一張表激活的“

37、空白工作簿”。)pausewkbs=excel.Workbooks;Wbk=invoke(wkbs,Add);disp(按任意鍵,當(dāng)前激活表由第一張變?yōu)橹付ǖ牡诙垺?pauseSh=excel.ActiveWorkBook.Sheets;sh2=get(Sh,Item,2);invoke(sh2,Activate);disp(按任意鍵,把MATLAB空間中的A矩陣送到Excel的指定位置。)pauseActsh=excel.Activesheet;A=1,2;3,4;actshrng=get(Actsh,Range,A1,B2);set(actshrng,Value,A);%disp(按任意

38、鍵,獲取Excel指定區(qū)域上的數(shù)據(jù),)disp(并以MyExcel.xls文件形式保存在D:mywork目錄上。)pauserg=get(Actsh,Range,A1,B2);B=rg.value;B=reshape(B:,size(B);invoke(Wbk,SaveAs,D:myworkmyfile.xls);disp(按任意鍵,關(guān)閉excel句柄代表的Excel。)pauseinvoke(excel,Quit);圖12.4-1MATLABActiveX自動(dòng)化服務(wù)器【例12.4.2.2-1】創(chuàng)建一個(gè)名為exm120422.ppt的演示文稿。它包含一張如圖12.4-2所示的幻燈片。該幻燈片在

39、放映時(shí),若在左上方空白框中輸入任何MATLAB的合法指令,爾后按下計(jì)算按鍵,則在下方空白框中能實(shí)時(shí)地顯示運(yùn)算結(jié)果,如圖12.4-10。圖12.4-2(1) #l3圖12.4-3圖12.4-44) # l34) # #l34) # #l3圖12.4-52)自定爻工具欄迪1命綾選項(xiàng)辺務(wù)果E欄任效.單用式b閱圖規(guī)畫EU菜常格壯審繪常動(dòng)Vi4) # #l34) # #l3-圖片廠陰影設(shè)置廠三錐設(shè)達(dá)4) # #l34) # #l3關(guān)閉圖12.4-64) l3圖12.4-73)圖12.4-84) #l3PrivateSubCommandButton1_Click()EndSub圖12.4-9RemDimh

40、AsStringDimresultAsStringRemDimmatlabAsObjectSetmatlab=CreateObject(Matlab.Application)Remh=TextBox1.ValueRemresult=matlab.Execute(h)RemTextBox2.Value=result(5)3)3)l3clcfrand(TstateTf1)A=rand(33)Cond_A=cond(A);disp(TTheconditionnumberofAT)disp(Cond)A=0.95280+70110.953圖124-10Thecondition0.59820.81070

41、.1128numberof0.83680.51870+0222A【例12.4.2.2-2】本例在上仞建的爲(wèi)120422切上演示文稿中加入一張幻燈片,用于把MATLAB服務(wù)器繪置的圖形嵌入到幻燈片放映窗口中。圖12.4-111)2) l3version6.Uversion6.UCheckEioxComboBoxComni:xTLilEiuttonFr:dJiieMicrosoftMicrosoftMicrosoftMicrosoftMicrosoftMicrosoftMicrosoftMicrosoftFoirniE2.0ImaiMicrosoftForme2.ULabelMicrosoftFo

42、rms2.UListBoxMicrosoftForms2.UMuitiFageDirectAnimationStruetm-edGraphicsDirectAnimationWindowedControlFlatScrollb:xrControl.,FlexGridControl.,Forme2.UForme2.UForme2.UForme2.U圖12.4-124)5)PrivateSubCommandButton1_Click()EndSubRemDimhAsStringDimresultAsStringRemDimmatlabAsObjectSetmatlab=CreateObject(M

43、atlab.Application)RemRemresult=matlab.Execute(set(gcf,visible,off);)h=TextBox1.Valueresult=matlab.Execute(h)result=matlab.Execute(print(gcf,-dtiff,c:a.tif);)result=matlab.Execute(x=imread(c:a.tif);)result=matlab.Execute(imwrite(x,c:a.bmp);)Image1.Picture=LoadPicture(c:a.bmp)SlideShowWindows(1).View.

44、GotoSlide2result=matlab.Execute(deletec:a.tif)result=matlab.Execute(deletec:a.bmp)(510-,a64,2-0-2MATLAB中圖-:_=_50-4030DDE技術(shù)的應(yīng)用12.5.1關(guān)于DDE的一般性說明-.4ij2010DDE中的MATLAB服務(wù)器C0【例12.5.2-1】利中,可以輸入任何J用VisualBasic制作如圖12.5-3所示的圖形用戶界面,在該界面可MATLAB指令,點(diǎn)擊【計(jì)算】按鍵后可輸出相應(yīng)計(jì)算結(jié)果。該 # #l3界面運(yùn)行時(shí),把MATLAB作為DDE的服務(wù)器使用。 #l3圖12.5-31) # #l3 # #l3圖12.5-4JnlxifigF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論