06.08.2013 Views

内容简介作者简介 - 科学与工程计算系

内容简介作者简介 - 科学与工程计算系

内容简介作者简介 - 科学与工程计算系

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

void mxSetPr(mxArray *array_ptr, double *pr);<br />

void mxSetPi(mxArray *array_ptr, double *pr);<br />

(4)<br />

#include "matrix.h"<br />

#include <br />

void *mxCalloc(size_t n, size_t size);<br />

12.1.5.3 编程示例<br />

【例 12.1.5.3-1】创建一个 C 语言 MEX 文件,实现对 MATLAB 两个“单行”字符串的合<br />

并。本例演示:(A)如何根据 MATLAB 约定的规则编写 C MEX 源码;(B)如何构成<br />

该文件的调用指令;(C)如何为 MEX 文件编写在线帮助文件。<br />

(1)<br />

#include "mex.h" //<br />

#include "string.h" //<br />

//------------------------------------------------void<br />

stringplus(char *input_buf0,char *input_buf1,char *output_buf)<br />

{<br />

strcat(output_buf,input_buf0);<br />

strcat(output_buf,input_buf1);<br />

}<br />

//------------------------------------------------void<br />

mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])<br />

{<br />

char *input_buf0,*input_buf1,*output_buf;<br />

int buflen,buflen0,buflen1,status;<br />

//<br />

if (nrhs!=2) //<br />

mexErrMsgTxt("Two inputs inquired."); //<br />

else if (nlhs>1) //<br />

mexErrMsgTxt("Too many output arguments."); //<br />

if (mxIsChar(prhs[0])!=1||mxIsChar(prhs[1])!=1)<br />

mexErrMsgTxt("Inputs must be a string.");<br />

//<br />

if (mxGetM(prhs[0])!=1||mxGetM(prhs[1])!=1)<br />

mexErrMsgTxt("Inputs must be a row vector.");<br />

//<br />

buflen0=(mxGetM(prhs[0])*mxGetN(prhs[0]))+1; //<br />

buflen1=(mxGetM(prhs[1])*mxGetN(prhs[1]))+1;<br />

buflen=buflen0+buflen1-1;<br />

//<br />

5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!