Matlab教程Ch8.ppt_第1页
Matlab教程Ch8.ppt_第2页
Matlab教程Ch8.ppt_第3页
Matlab教程Ch8.ppt_第4页
Matlab教程Ch8.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1,8章高级编程技术,第2章,了解牙齿章节的目标,MATLAB档案处理方法了解MATLAB应用程序节目接口的原理了解结构和细胞两种茄子复杂数据类型了解面向对象编程的基本概念,第3章主要内容,8.1档案8.2应用程序节目介面,4,8.1档案,文件可分为两类。文本文件由与字符和字符显示格式相关的控制器组成。公共扩展名为“TXT”、“BAT”和“HTM”二进制文件。二进制文件是非文本文件的通用扩展名为“COM”、“EXE”和“BMP”1打开和关闭档案fopen、fclose 2格式读写fprintf、fscanf、fgetl、fgets 3非格式读写fread.)fscanf函数a,count=f

2、scanf (FID,for)过程x=0:0.1:1y=x;Exp(x) : %y有两行数据fid=fopen(my.txt,w)牙齿。Fprintf (FID,% 6.2f.8fn,y);f close(FID);9,示例8-2,从上述示例中生成的档案my.txt读取数据,并将结果输出到屏幕。节目FID=fopen(my.txt,r);a,count=fscanf(fid,%f %f,2 INF);Fprintf(1,%f %fn,a);f close(FID);导出同一示例8-1文件的数据格式。10,8.1.3档案市场定位和档案状态,1feof函数:检测文件是否结束status=feof(

3、fid) 2ferror函数:用于档案查找的输入,输出错误消息msg=ferror(fid) 3frewind函数,11,示例8-3输出文件的大小。节目fid=fopen(my.txt,r);Fseek(fid,0,eof);x=ftell(FID);Fprintf (1,文件大小=% dn,x);frewind(FID);x=ftell(FID);Fprintf (1,档案位置=% dn,x);f close(FID);输出filesize=231 fileposition=0,12,8.1.4逐行读取数据1fgetl函数:逐行读取文件中的数据,但不读取换行符。Line=fgetl(fid)

4、 2fgets函数:用于从文件中读取行,保留换行符,并将行作为字符串返回。(1)line=fgets(FID)(2)line=fgets(FID,nchar),13,范例8-4,案例8-1产生的读取节目建立节目fid=While feof(fid)%文件未结束时逐行读取数据s=fgets(FID);Fprintf(1,%s,s);结束f close(FID);导出同一示例8-1文件的数据格式。14,8.1.5二进制数据文件的读写,fwrite函数:二进制数据count=fwrite(fid,A,precision)用于向文件写入。Fread函数:文件中的二进制数据a,count=fread (

5、FID,size,precision)注意:使用fread()和fwrite()函数读取和写入文件时,必须使用二进制文件节目fid=fopenA=魔术(5);Fwrite(fid,a,long);f close(FID);16,示例8-6,从二进制文件中读取“多维数据集数组”。节目fid=fopen(my.dat,r);a,count=fread(fid,5,inf,long);f close(FID);a,17,8.1.6图像;读取和写入声音文件;1 im read函数:文件中的图像a=im read (filename,fmt) a;map=im read(filed Filename,f

6、mt)a节目x,贴图=im read(c : MATLAB 7 toolboxmatlabdemosstreet 1 . jpg);图像(x):19,示例将图像写入8-8文件;节目x,贴图=im read(c : MATLAB 7 toolboxmatlabdemosstreet 1 . jpg);Imwrite(x,my.bmp) : %将图像另存为真彩色的BMP x,map=imread(my.bmp)。图像(x):20,8.1.6图像;声音档案读取和写入4imfinfo函数:图像档案信息祖怀innfo imflnfo(filename) 5wavread函数:扩展名为.wav 的声音档案

7、y读取Nbits=wavread(file) 6wavwrite函数:具有 wav 扩展名的声音文件的wavwrite (y、fs、Nbits、wave file) 7播放wav(y);Wavplay(y,11025);Wavplay(y,44100);22,8.2应用程序节目介面和MATLAB的外部介面应用程序包括:(1) MATLAB调用现有的C/C语言代码。(2) C/C语言中调用MATLAB的算法;(3)使用COM标准开发客户/服务器模型。例如,Visual Basic程序或从Microsoft Excel调用MATLAB的算法(4)以C/C语言读取和写入MAT数据文件。23,8.2.

8、1 MEX档案,示例8-10简单MEX档案示例mexHelloWorld.c .节目:# include MEX . h void MEX function(intnl hs,MX array * plhs,),24,8.2.2 MATLAB计算引擎,MATLAB的计算引擎应用程序利用MATLAB提供的一组介面函数,通过用户开发的C/C语言应用程序中的通信机制在后台调用MATLAB应用程序以执行复杂的系统任务。25,示例8-11,在C/C语言中,通过调用网格函数设计绘制高斯矩阵曲面的程序。问题解决步骤:26,示例8-11节目:# include # include engine . h voi

9、d main()engine * EP;int status=0;/打开计算引擎EP=eng open(NULL);If(EP=(Engine *)NULL) printf(错误:无法打开MATLAB计算引擎n);结束(-1);/MATLAB命令运行engEvalString(ep,mesh(peaks););getchar();/MATLAB计算引擎关闭状态=eng close(EP);If(状态!=0) printf(无法正常关闭MATLAB计算引擎n);结束(-1);基于27,8.2.3 COM组件的介面编程,牙齿方法的主要特点是(1)应用程序完全脱离了MATLAB工作环境。(2)通过M

10、ATLAB数学库和工具箱中包含的各种函数,减少编写算法的困难。(3)使算法程序成为COM组件,实现了算法的机密性。以28,8.2.4 C/C语言读取和写入MAT数据文件,并支持C/C语言读取和写入MAT文件的库包括:1打开数据文件MAT open MAT file * MAT open(constchar * filename Const char * mode),31,节目代码1,# include engine . h # include void main()engine * EP;double * p;MxArray * equationInt I=0,j=0;int status=0

11、;/打开计算引擎EP=eng open(NULL);If(EP=(Engine *)NULL) printf(错误:无法打开MATLAB计算引擎n);结束(-1);32,程序码2,/执行MATLAB指令engEvalString(ep,A=magic(5););Equation=engGetVariable(ep,A);p=mxGetPr(equation);Printf(nMATLAB计算幻(5)n);for(I=0);i5;I)for(j=0;j5;J) printf(%8.0lf,*(p I j * 5);printf(n);/MATLAB计算引擎关闭状态=eng close(EP);I

12、f(状态!=0) printf(无法正常关闭MATLAB计算引擎n);结束(-1);33,示例8-13,34,节目代码1,# include # include # include engine . h void main()engine * EP;int status=0;Ep=engOpen(空);/运行MATLAB命令double a=2,3,4,-1,1,3,-5,1,b=5,5,9;双*pa、*pb、* pcMxArray *x、*y、* z;35,节目代码2,x=mxcreatedoublematrix (3,3,MX real);Y=mxcreatedoublematrix (3,1,MX real);pa=mxGetPr(x):Pb=mxGetPr(y);Memcpy(pa,A,9 * size of(double);Memcpy(pb,B,3 * size of(doubl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论