mexfeval.c

来自「matlab下面仿真802.3协议以太网mac层10、100M的网络接口模型。包」· C语言 代码 · 共 50 行

C
50
字号
#include "mex.h"

/*
 * mexfeval.c : Example MEX-file code emulating the functionality of the
 *              MATLAB command FEVAL
 *
 *              
 * Copyright 1984-2000 The MathWorks, Inc.
 * $Revision: 1.8 $
 */


void
mexFunction( int nlhs, mxArray *plhs[],
	     int nrhs, const mxArray *prhs[] )
{
  if(nrhs==0)
    mexErrMsgTxt("Not enough input arguments.\n");

  if(!mxIsChar(prhs[0]))
    mexErrMsgTxt("Variable must contain a string.\n");
  
  else {
    /*
     * overloaded functions could be a problem
     */
    mxArray **in;
    
    char *fcn;
    int   buflen=mxGetN(prhs[0])+1;
    int   status, i;

    fcn=(char *)mxCalloc(buflen,sizeof(char));
    status=mxGetString(prhs[0],fcn,buflen);

    in=(mxArray **)mxCalloc(nrhs-1,sizeof(mxArray *));
    
    for(i=0;i<nrhs-1;i++) 
      in[i]=mxDuplicateArray(prhs[i+1]);

    status=mexCallMATLAB(nlhs,plhs,nrhs-1,in,fcn);
   
    mxFree(fcn);
    for(i=0;i<nrhs-1;i++) 
      mxDestroyArray(in[i]);
    mxFree(in);
    
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?