matlab中调用c语言

时间:2025-03-21 12:22:08

下面是matlab使用mex调用c语言的例子。

m-code: xbinary_create.m

x = 1:5;
fid = fopen('','w');
fwrite(fid, x, 'double');
fclose(fid);

C-mex code: xbinary_read.c

#include ""
#include <>
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
  FILE *fp;
  char *fname;
  double d;
  int i, n;
    if( nrhs == 2 && mxIsChar(prhs[0]) && mxIsNumeric(prhs[1]) ) {
        fname = mxArrayToString(prhs[0]);
        fp = fopen(fname,"r");
        mxFree(fname);
        if( fp != NULL ) {
            n = mxGetScalar(prhs[1]);
            for( i=0; i<n; i++ ) {
                fread( &d, sizeof(d), 1, fp );
                mexPrintf("%g\n",d);
            }
            fclose (fp);
        } else {
            mexErrMsgTxt("Unable to open file");
        }
    }
  }

Sample run:

>> mex xbinary_read.c
>> xbinary_create
>> xbinary_read('',5)
1
2
3
4
5

以上就是matlab使用c语言。