www.pudn.com > matlab7.x.rar > tstfhdl.c
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
int i, j, m, n;
double *data1, *data2;
/* 输入变量为2,一个是函数句柄,另一个是参数*/
if (nrhs != 2)
mexErrMsgTxt("The number of input must be two!");
/*输出变量数目可以为0或者1*/
if (nlhs > 1)
mexErrMsgTxt("The number of output must be zero or one!");
/* 第一个输入必须是函数句柄 */
if ( !mxIsClass(prhs[0], "function_handle") )
{
mxErrMsgTxt("The first input must be a function handle!");
}
/* 得到输入矩阵的大小 */
m = mxGetM(prhs[1]);
n = mxGetN(prhs[1]);
/* 创建输出变量所对应的mxArray */
plhs[0] = mxCreateDoubleMatrix(m, n, mxREAL);
/* 使用函数句柄的第一种方法:调用mexEvalString */
mxArray *funHandle = prhs[0];
mxArray *xx = prhs[1];
mexPutVariable("base", "xx", xx);
mexPutVariable("base", "funHandle", funHandle);
mexEvalString("yy = feval(funHandle, xx);");
plhs[0] = mexGetVariable("base", "yy");
/* 使用函数句柄的第二种方法:调用mexCallMATLAB */
/*
mexCallMATLAB(1, &plhs[0], 2, prhs, "feval");
*/
}