?? 6.htm
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><!-- saved from url=(0054)http://passmatlab.myetang.com/matlab/matlabc1/m_c6.htm --><HTML><HEAD><TITLE>Matlab與C++接口與混合編程討論小結(jié)(六)</TITLE><SCRIPT language=JavaScript src="6.files/pop-up.js"></SCRIPT><META http-equiv=Content-Type content="text/html; charset=gb2312"><META content="MSHTML 5.50.4522.1800" name=GENERATOR></HEAD><BODY text=#000000 bgColor=#ffffff><TABLE width="95%" border=0> <TBODY> <TR> <TD width="5%"> </TD> <TD width="92%"> <DIV align=center><B><FONT size=4>Matlab與C++接口與混合編程討論小結(jié)(六) </FONT></B></DIV></TD> <TD width="3%"> </TD></TR> <TR> <TD width="5%"> </TD> <TD width="92%"> <P> </P> <P> 第二章、 </P> <P> 第五節(jié)、用c編寫mex程序[五] </P> <P> 通過(guò)前面兩部分的介紹,大家對(duì)參數(shù)的輸入和輸出方法應(yīng)該有了基本的了解。具備了這 <BR>些知識(shí),就能夠滿足一般的編程需要了。但這些程序還有些小的缺陷,以前面介紹的re 由于<BR>前面的例程中沒(méi)有對(duì)輸入、輸出參數(shù)的數(shù)目及類型進(jìn)行檢查,導(dǎo)致程序的容錯(cuò)性很 </P> <P> #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], 討論區(qū) [Matlab]<BR>int nrhs, const mxArray *prhs[]) { double *inData; double *outData; int M,N; //異<BR>常處理 //異常處理 </P> <P> if(nrhs!=1) mexErrMsgTxt("USAGE: b=reverse(a)\n"); if(!mxIsDouble(prhs[0]))<BR>mexErrMsgTxt("the Input Matrix must be double!\n"); inData=mxGetPr(prhs[0]); M=m<BR>xGetM(prhs[0]); N=mxGetN(prhs[0]); </P> <P> void mexFunction(int nlhs, mxArray *plhs[], plhs[0]=mxCreateDoubleMatrix(M<BR>,N,mxREAL); outData=mxGetPr(plhs[0]); for(i=0;iM;i++) for(j=0;j</P> <P> 在上面的異常處理中,使用了兩個(gè)新的函數(shù):mexErrMsgTxt和mxIsDouble。MexErrMs<BR>gT xt在給出出錯(cuò)提示的同時(shí)退出當(dāng)前程序的運(yùn)行。MxIsDouble則用于判斷mxArray中的數(shù)據(jù) <BR>是否double類型。當(dāng)然Matlab還提供了許多用于判斷其他數(shù)據(jù)類型的函數(shù),這里不加詳 述。<BR>需要說(shuō)明的是,Matlab提供的API中,函數(shù)前綴有mex-和mx-兩種。帶mx-前綴的大多是對(duì) mx<BR>Array數(shù)據(jù)進(jìn)行操作的函數(shù),如mxIsDouble,mxCreateDoubleMatrix等等。而帶mx前綴 的則大<BR>多是與Matlab環(huán)境進(jìn)行交互的函數(shù),如mexPrintf,mxErrMsgTxt等等。了解了這 一點(diǎn),對(duì)在<BR>Apiref.pdf中查找所需的函數(shù)很有幫助。 至此為止,使用C編寫mex函數(shù)的基本過(guò)程已經(jīng)介紹<BR>完了。下面會(huì)在介紹幾個(gè)非常有用的 函數(shù)調(diào)用。如果有足夠的時(shí)間,也許還會(huì)有一個(gè)更復(fù)雜<BR>一些的例程。 </P> <P></P> <P></P> <P> </P></TD> <TD width="3%"> </TD></TR> <TR> <TD width="5%"> </TD> <TD width="92%"> </TD> <TD width="3%"> </TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -