刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序

上传人:E**** 文档编号:100442053 上传时间:2019-09-23 格式:DOC 页数:5 大小:86KB
返回 下载 相关 举报
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序_第1页
第1页 / 共5页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序_第2页
第2页 / 共5页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序_第3页
第3页 / 共5页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序_第4页
第4页 / 共5页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序》由会员分享,可在线阅读,更多相关《刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术源程序(5页珍藏版)》请在金锄头文库上搜索。

1、第13章 MATLAB外部程序接口技术例13-1 计算当x=0.0,0.1,0.2,1.0时,f(x)=ex的值,并将结果写入文件demo1.txt。程序如下:x=0:0.1:1;Y=x;exp(x);fid=fopen(demo1.txt,w);fprintf(fid,%6.2f %12.8fn,Y);fclose(fid);例13-2 读出例13-1生成的文件demo1.txt中的数据。 程序如下:fid=fopen(demo1.txt,r); while 1 line=fgetl(fid); if line cnt例13-6 下列程序执行后,变量four、position和three的值

2、是多少?a=1:5;fid=fopen(fdat.bin,w); %以写方式打开文件fdat.binfwrite(fid,a,int16); %将a的元素以双字节整型写入文件fdat.binfclose(fid);fid=fopen(fdat.bin,r); %以读数据方式打开文件fdat.binstatus=fseek(fid,6,bof); %将文件指针从开始位置向尾部移动6个字节four=fread(fid,1,int16); %读取第4个数据,并移动指针到下一个数据position=ftell(fid); %ftell的返回值为8 status=fseek(fid,-4,cof); %

3、将文件指针从当前位置往前移动4个字节three=fread(fid,1,int16); %读取第3个数据status=fclose(fid);例13-7 创建对MAT文件进行操作的C程序。程序如下:#include #include /* 定义EXIT_FAILURE,EXIT_SUCCESS */#include int main() MATFile *pmat; /* 定义MAT文件指针*/ mxArray *pa1,*pa2,*pa3; double data9=1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9; const char *file=c_matfile

4、.mat; int status; /* 打开一个MAT文件,如果不存在则创建一个MAT文件,如果打开失败,则返回到系统环境 */ pmat=matOpen(file,w); if (pmat=NULL) printf(创建失败n); return(EXIT_FAILURE); /* 创建3个mxArray对象 */ pa1=mxCreateDoubleScalar(1.234); if (pa1=NULL) printf(创建失败n); return(EXIT_FAILURE); pa2=mxCreateDoubleMatrix(3,3,mxREAL); if (pa2=NULL) prin

5、tf(创建失败n); return(EXIT_FAILURE); memcpy(void *)(mxGetPr(pa2),(void *)data,sizeof(data); pa3=mxCreateString(MAT文件示例); if (pa3=NULL) printf(创建失败n); return(EXIT_FAILURE); /* 向MAT文件中写数据,失败则返回到系统环境 */ status=matPutVariable(pmat,LocalDouble,pa1); if (status!=0) printf(赋值失败n); return(EXIT_FAILURE); status=

6、matPutVariableAsGlobal(pmat,GlobalDouble,pa2); if (status!=0) printf(赋值失败n); return(EXIT_FAILURE); status=matPutVariable(pmat,LocalString,pa3); if (status!=0) printf(赋值失败n); return(EXIT_FAILURE); /* 清除矩阵 */ mxDestroyArray(pa1); mxDestroyArray(pa2); mxDestroyArray(pa3); /* 关闭MAT文件 */ if (matClose(pma

7、t)!=0) printf(关闭失败n); return(EXIT_FAILURE); printf(完成n); return(EXIT_SUCCESS);例13-8 编写求两个数的最小公倍数的C语言MEX文件。程序如下:#include /* 求最小公倍数子程序 */void com_multi(double *z,double *x,double *y) int a,b,c; a=*x; b=*y; c=max(a,b); while(c%a!=0|c%b!=0) c=c+1; *z=c;/* 入口程序 */void mexFunction(int nlhs,mxArray *plhs,i

8、nt nrhs,const mxArray *prhs) double *x,*y,*z; int m,n,i; /* 检查参数数目是否正确 */ if (nrhs!=2) mexErrMsgTxt(Two inputs required.); if (nlhs!=1) mexErrMsgTxt(One output required.); /* 检查输入变量是否为单个的双精度数 */ for(i=0;i2;i+) m=mxGetM(prhsi); n=mxGetN(prhsi); if (!mxIsDouble(prhsi)|mxIsComplex(prhsi)|!(m=1&n=1) mex

9、ErrMsgTxt(Input must be a noncomplex scalar double.); /* 读入输入数据 */ x=mxGetPr(prhs0); y=mxGetPr(prhs1); /* 准备输出空间 */ plhs0=mxCreateDoubleMatrix(m,n,mxREAL); z=mxGetPr(plhs0); /* 计算 */ com_multi(z,x,y);例13-9 创建一个矩阵,然后将其送到MATLAB引擎的工作区中,绘制出结果图。程序如下:#include #include #include #include int main() Engine *

10、ep; /* 定义MATLAB引擎变量 */ mxArray *T=NULL,*result=NULL; double time11=-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1.0; /* 启动MATLAB引擎。如果在本地启动,那么函数所带的参数字符串为空 */ /* 如果在网络中启动,则需要提供服务器名,即engOpen(服务器名) */ if (!(ep=engOpen(0) printf(不能启动MATLAB引擎n); return EXIT_FAILURE; /* 向新启动的MATLAB工作区放置数据 */ T=mxCreateDoubleMatrix(1,11,mxREAL); memcpy(void *)mxGetPr(T),(void *)time,sizeof(time); engPutVariable(ep,T,T); /* 执行MATLAB命令 */

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号