2010-06-05 回答
那你可以用C写一个mex文件,然后MATLAB就可以调用了。注意门关子程序的声明;举例如下,做一个用C写的加法程序,用matlab来调用:#include"mex.h"
void add(double*result,double* input1,double* input2){*result=*input1+*input2;}
void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[] ) { double* in1,*in2,*res; if (nrhs != 2) { mexErrMsgTxt("Two input arguments required."); } else if (nlhs > 1) { mexErrMsgTxt("Too many output arguments."); } plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL); //ÉêÇëÊä³ö²ÎÊý¿Õ¼ä//½«ÊäÈëÊä³ö²ÎÊý¿Õ¼äµÄÀàÐÍ×öһϱ任 res = mxGetPr(plhs[0]); in1 = mxGetPr(prhs[0]); in2 = mxGetPr(prhs[1]);add(res,in1,in2);}
追问:
怎么有个乱码???
追答:
#include"mex.h"void add(double*result,double* input1,double* input2){ *result=*input1+*input2;}void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[] )
{ double* in1,*in2,*res; if (nrhs != 2)
{ mexErrMsgTxt("Two input arguments required."); }
else if (nlhs > 1) { mexErrMsgTxt("Too many output arguments."); } plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
res = mxGetPr(plhs[0]); in1 = mxGetPr(prhs[0]); in2 = mxGetPr(prhs[1]); add(res,in1,in2);}
追问:
有2个函数在C语言里面不可以直接调用很麻烦的啊,就是
这2个函数貌似用C不好做
追答:
你的问题是要MATLAB调用C程序,还是C程序调用MATLAB程序?