readmessage_mex.c

来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· C语言 代码 · 共 57 行

C
57
字号
#include "readmessage.h"int debug=0;void mexFunction( int nlhs, mxArray *plhs[], 		  int nrhs, const mxArray *prhs[] )     {     	char *InFile;    unsigned short *DumStr;	double *A,*offset;    float *y=NULL;    long m,n,i,eof,j,chLon,NumMes,flag,num;   	MessageStruct Mess;	if (nrhs != 2) { 		mexErrMsgTxt("Two input arguments required.");     } else if (nlhs > 4) {		mexErrMsgTxt("Too many output arguments.");     }         DumStr = (unsigned short *)mxGetPr(prhs[0]);     offset = mxGetPr(prhs[1]);    chLon=mxGetN(prhs[0]);	NumMes=mxGetM(prhs[1]);	InFile=(char *)malloc(sizeof(char)*(chLon+1));	for(i=0;i<chLon;i++) InFile[i]=(char)DumStr[i];		InFile[chLon]='\0';    num=(int)offset[0];	eof=readgrib(InFile,&num,&y,&m,&n,&flag,&Mess);    free(InFile);  	plhs[0] = mxCreateDoubleMatrix(m, n, mxREAL); 	A = mxGetPr(plhs[0]);	for(i=0;i<m;i++)		for(j=0;j<n;j++)			A[i+j*m]=(double)y[i*n+j];	if (nlhs > 1)		plhs[1] = AssignMessToMatlab(Mess);	if (nlhs > 2){		plhs[2] = mxCreateDoubleMatrix(1, 1, mxREAL);		offset=mxGetPr(plhs[2]);		offset[0]=(double)num;	}	if (nlhs > 3){		plhs[3] = mxCreateDoubleMatrix(1, 1, mxREAL);		offset=mxGetPr(plhs[3]);		offset[0]=(double)eof;	}		if(y!=NULL) free(y);	return;    }

⌨️ 快捷键说明

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