预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言工程中调用matlab程序 Editbywaloga,QQ:84974467,欢迎交流 1.在项目设置中,包含matlab目录 2.在连接器中包含库文件的目录 3.加入相应的静态库 4.将matlab路径加入到系统环境变量path中 如,我的matlab安装在c盘, matlab的路径为C:\ProgramFiles(x86)\MATLAB\R2013a\bin\win32\ 在”我的电脑”中,高级,系统环境变量设置,找到path,path的值包含非常多的目录, 其他的不管,只需要 将matlab的路径加个分号“;”,添加在path最后,其他的千万不要动。 5.engdemo.c是matlab提供的文件,将它做成win32的控制台程序, 完成以上步骤的设置,便可以直接运行了。 仔细阅读程序不难发现, 其只要的函数是 engOpen:打开matlab的engine mxCreateDoubleMatrix:定义matlab的矩阵 engPutVariable:将变量放到matlab的engine中 engEvalString:执行matlab的语句 mxDestroyArray:释放变量 engClose:关闭matlab的engine 附件,engdemo.c的详细代码 /*$Revision:1.8.4.4$*/ /* *engdemo.c * *AsimpleprogramtoillustratehowtocallMATLAB *EnginefunctionsfromaCprogram. * *Copyright1984-2011TheMathWorks,Inc. *Allrightsreserved */ #include<stdlib.h> #include<stdio.h> #include<string.h> #include"engine.h" #defineBUFSIZE256 intmain() { Engine*ep; mxArray*T=NULL,*result=NULL; charbuffer[BUFSIZE+1]; doubletime[10]={0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}; /* *CallengOpenwithaNULLstring.ThisstartsaMATLABprocess *onthecurrenthostusingthecommand"matlab". */ if(!(ep=engOpen(NULL))){ fprintf(stderr,"\nCan'tstartMATLABengine\n"); returnEXIT_FAILURE; } /* *PARTI * *Forthefirsthalfofthisdemonstration,senddata *toMATLAB,analyzethedata,andplottheresult. */ /* *Createavariableforthedata */ T=mxCreateDoubleMatrix(1,10,mxREAL); memcpy((void*)mxGetPr(T),(void*)time,sizeof(time)); /* *PlacethevariableTintotheMATLABworkspace */ engPutVariable(ep,"T",T); /* *Evaluateafunctionoftime,distance=(1/2)g.*t.^2 *(gistheaccelerationduetogravity) */ engEvalString(ep,"D=.5.*(-9.8).*T.^2;"); /* *Plottheresult */ engEvalString(ep,"plot(T,D);"); engEvalString(ep,"title('Positionvs.Timeforafallingobject');"); engEvalString(ep,"xlabel('Time(seconds)');"); engEvalString(ep,"ylabel('Position(meters)');"); /* *usefgetc()topauselongenoughtobe *abletoseetheplot */ printf("Hitreturntocontinue\n\n"); fgetc(stdin); /* *We'redoneforPartI!Freememory,closeMATLABfigure. */ printf("DoneforPartI.\n");