|   | 21 | 以下舉例一個範例。利用Matlab輸入兩個向量作相加。 | 
                  
                          |   | 22 |  | 
                  
                          |   | 23 | 程式碼如下:檔名為add.c | 
                  
                          |   | 24 |  | 
                  
                          |   | 25 | #include "mex.h" | 
                  
                          |   | 26 | void mexFunction(int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[]) | 
                  
                          |   | 27 | { | 
                  
                          |   | 28 |   int i, j, mA, nA, mB, nB, nMatSize; | 
                  
                          |   | 29 |   double *A, *B, *C; | 
                  
                          |   | 30 |   /*input_check */ | 
                  
                          |   | 31 |   if (nrhs != 2) | 
                  
                          |   | 32 |     mexErrMsgTxt("The input must 2"); | 
                  
                          |   | 33 |   if (nlhs != 1) | 
                  
                          |   | 34 |     mexErrMsgTxt("The input must 1"); | 
                  
                          |   | 35 |   mA = mxGetM(prhs[0]); | 
                  
                          |   | 36 |   nA = mxGetN(prhs[0]); | 
                  
                          |   | 37 |   mB = mxGetM(prhs[1]); | 
                  
                          |   | 38 |   nB = mxGetN(prhs[1]); | 
                  
                          |   | 39 |  | 
                  
                          |   | 40 |   printf("mA= %d\n",mA); | 
                  
                          |   | 41 |   if (mA != mB ||nA != nB) | 
                  
                          |   | 42 |     mexErrMsgTxt("The size must identical") ; | 
                  
                          |   | 43 |  | 
                  
                          |   | 44 |   /*output to buffer*/ | 
                  
                          |   | 45 |   plhs[0]=mxCreateDoubleMatrix(mA,nA,mxREAL); | 
                  
                          |   | 46 |   /*get value*/ | 
                  
                          |   | 47 |   A = mxGetPr(prhs[0]); | 
                  
                          |   | 48 |   B = mxGetPr(prhs[1]); | 
                  
                          |   | 49 |   C = mxGetPr(plhs[0]); | 
                  
                          |   | 50 |   /*sum*/ | 
                  
                          |   | 51 |   nMatSize = mA * nA; | 
                  
                          |   | 52 |   for (i=0; i<nMatSize; i++) | 
                  
                          |   | 53 |     { | 
                  
                          |   | 54 |       C[i] = A[i] + B[i]; | 
                  
                          |   | 55 |     } | 
                  
                          |   | 56 |   /*result*/ | 
                  
                          |   | 57 |   mexPrintf("ending"); | 
                  
                          |   | 58 | } | 
                  
                          |   | 59 |  | 
                  
                          |   | 60 | how to compile and run | 
                  
                          |   | 61 | >mex add.c | 
                  
                          |   | 62 | >a = [1 2 3 4]; | 
                  
                          |   | 63 | >b = [1 2 3 4]; | 
                  
                          |   | 64 | >c = add(a,d) | 
                  
                          |   | 65 | mA=1 | 
                  
                          |   | 66 | ending | 
                  
                          |   | 67 | c = | 
                  
                          |   | 68 | 2 4 6 8  | 
                  
                          |   | 69 |  | 
                  
                          |   | 70 |  |