Matlab学习与实验教程-第12章MATLAB外部接口技术.docx

上传人:太** 文档编号:62300564 上传时间:2022-11-22 格式:DOCX 页数:4 大小:15.69KB
返回 下载 相关 举报
Matlab学习与实验教程-第12章MATLAB外部接口技术.docx_第1页
第1页 / 共4页
Matlab学习与实验教程-第12章MATLAB外部接口技术.docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《Matlab学习与实验教程-第12章MATLAB外部接口技术.docx》由会员分享,可在线阅读,更多相关《Matlab学习与实验教程-第12章MATLAB外部接口技术.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第12章MATLAB外部接口技术例123%输入文本文件名qname=input(1 Enter file containing questions:1f 1s1);ip=fopen (qnamez * rt1) ;% 翻开该文本文件if ip0error(1 could not open input file 1;end;op=fopen ( 1 qq. log 1 , 1 wt1 ) ;% 翻开输出文件if op0error(1 could not open output file *);end;%依次向用户提问q=fgetl(ip);while ischar(q)fprintf(1%sn1

2、,q);a=input(* Answer T (rue) or F(alse) :, s);while (a=,T,)&(a=,F,)a=inputAnswer T (rue) or F (alse) : 1 , 1 s 1 );end;fprintf(op,%snAnswer: %sn,q,a);q=fgetl(ip);end;fclose (ip);fclose (op);设文本文件q.txt的内容为:Are you a student?Do you like tea?Are you going to UTC?Are you from China?例 12-4fid=fopen(magic

3、5.dat,w);cnt=fwrite(fidz magic(5),int32);fclose(fid);fid=fopen(magic5.dat,r);B,ent=fread(fid, 5,inf,int32)fclose(fid);例 12-5a=l:5;fid=fopen ( fdat .bin , w);3以写方式翻开文件 fdat .binfwrite(fid,a, ntlG*);%将a的元素以双字节整型写入文件fdat.binstatus=fclose(fid);fid=fopen ( * fdat.bin 1 , 1 r 1 ) ;%以读数据方式翻开文件 fdat.binstat

4、us=fseek (fid, 6Z ,bof 1 ) ;%将文件指针从开始位置向尾部移动6个字节four=fread(fid, 1,;缸卖取第4个数据,并移动指针到下一个数据position=ftell (fid) ;%ftell 的返回值为 8status=fseek (fid, -4Z 1 cof 1 ) ;%将文件指针从当前位置往前移动4个字节three=fread (fid, 1, 1 intl6 1 ) ; 用读取第 3 个数据 status=fclose (fid);例126#include include / For strcmp() /include /* For EXIT_F

5、AILURE,EXIT_SUCCESS */#include nmat.h#define BUFSIZE 256 int main() (MATFile *pmat; /夫 定义MAT文件指针*/ mxArray *palz *pa2, *pa3;double data9=1,1,4.2,7.3,2.4,5.5,8,6,3.7,6.8,9.9;const char *file=nmattest.matn; char strBUFSIZE; int status;/大翻开一个MAT文件,如果不存在那么创立一个MAT文件,如果翻开失败,那么返回*/ printf (Creating file %s

6、nn”,file);pmat=matOpen(file,”w”); if (pmat=NULL) printf (nError creating file %snn,file);printf(n(Do you have write permission in this directory?)nn); return(EXIT_FAILURE); )/*创立3个mxArray结构体对象,pal、pa2分别为3x3、2x2的双精度实型矩阵,*/大pa3为字符串类型,如果创立失败那么返回*/pal=mxCreateDoubleMatrix(3,3Z mxREAL); if (pal=NULL) pri

7、ntf (n%s : Out of memory on line %dn”,FILE,LINE);printf(Unable to create mxArray.nn);return(EX工T_FA工LURE); memcpy(void *)(mxGetPr(pal)A (void *)data,sizeof(data); pa2=mxCreateDoubleMatrix(2,2,mxREAL);if (pa2=NULL) printf (n%s : Out of memory on line %dn”,FILE,LINE); printf(nUnable to create mxArray.

8、nn);return(EX工T_FA工LURE); pa3=mxCreateString(nMATLAB: the language of technical computing”); if (pa3=NULL) printf (n%s : Out of memory on line %dnn, FILE , LINE );printf (Unable to create string mxArray.nn); return(EXIT_FAILURE); /*向MAT文件中写窥据,失败那么返回*/status=matPutVariable(pmat,nLDn,pal); if (status!

9、=0) printf(n%s : Error using matPutVariable on line %dn,& _FILE_, LINE);return(EX工T_FA工LURE); status=matPutVariableAsGlobal(pmat,GD,pa2); if (status!=0) printf (Error using matPutVariableAsGlobalnn);return(EXIT_FAILURE); status=matPutVariable(pmat,nLSn,pa3); if (status!=0) printf(n%s : Error using m

10、atPutVariable on line %dn”,& _FILE_,_LINE_);return(EXIT_FAILURE); /*清除矩阵*/ -mxDestroyArray(pal);mxDestroyArray(pa2);mxDestroyArray(pa3);/*关闭MAT文件*/if (matClose(pmat)!=0) printf(Error closing file %snn,file);return(EXIT_FAILURE) ; printf(nDonenn );return(EXIT_SUCCESS); )例 12-7#include /*求最小公倍数子程序*/ v

11、oid com_multi(double double *xz double *y) (int a,b,c; a=*x;b=*y;c=max(a,b);while(c%a!=0|c%b!=0) c=c+l;*z=c;)/*入口程序*/void mexFunction(int nlhs,mxArray *plhs, int nrhs,const mxArray *prhs)double *x,*y,*z;int m,n,i;/*检查参数数目是否正确*/if (nrhs!=2)mexErrMsgTxt(Two inputs required.n);if (nlhs!=l) mexErrMsgTxt

12、(One output required.n);/*检查输入变量是否为单个的双精度数*/for(i=0;i2;i+)(m=inxGetM (prhs i );n=mxGetN(prhsi);if (imxIsDouble(prhsi)|mxIsComplex(prhsi)|!(m=l&n=l) mexErrMsgTxt(Input must be a noncomplex scalar double.n);/*读入输入数据*/x=mxGetPr(prhs0);y=mxGetPr(prhs1);/*准备输出空间*/plhs0=mxCreateDoubleMatrix(m,nz mxREAL);

13、z=mxGetPr(plhs0);/*计算*/com multi(z,x,y);例 12-8#include include #include include #define BUFSIZE 256 int main() Engine *ep; /* 定义 MATLAB 弓|擎变量 */ mxArray *T=NULL,*result=NULL;double ti 100; int i;for(i=l;i=100;i+) tii=i/30.0;/*启动MATLAB引擎。如果在本地启动,那么函数所带的参数字符串为空*/ /*如果在网络中启动,那么需要提供服务器名,即ngOpen (”服务器名”)

14、*/ if (! (ep=engOpen (n0n)printf (不能启动 MATLAB 弓I擎n”);return EXIT_FAILURE;)/*向新启动的MATLAB工作区放置数据*/T=mxCreateDoubleMatrix(1,100,mxREAL);memcpy(void *)mxGetPr(T)t (void *)tiz sizeof (ti);engPutVariable(ep,T,T);/*执行MATLAB命令*/engEvalString(ep,” D=exp(-T) .*sin (T)n);engEvalString(ep,plot(T,D);n);engEvalString(ep,ntitle(1 Position vs. Time for a falling object *););engEvalString(ep,xlabel(1 Time(seconds)engEvalString(ep,ylabel(1 Position(meters) );”);/*从MATLAB工作区获取计算结果*/result=engGetVariable(ep,”D”);printf (按回车继续n);fgetc(stdin);/*释放内存空间,关闭引擎*/mxDestroyArray (T);engClose(ep);return EXIT_SUCCESS;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁