Matlab基本用法还需要读.ppt_第1页
Matlab基本用法还需要读.ppt_第2页
Matlab基本用法还需要读.ppt_第3页
Matlab基本用法还需要读.ppt_第4页
Matlab基本用法还需要读.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、1、第8章高级编程技术,2、本章的目标,掌握MATLAB文件的处理方法,了解MATLAB应用程序接口的原理,了解两种复杂数据类型的结构和单元,并了解面向对象编程的基本概念,3、主要内容,8.1文件8.2应用程序接口,4、8.1文件,文件可分为两类:文本文件由字符和与字符显示格式相关的控制符号组成,具有常见的扩展名:“TXT”、“BAT”和“HTM”。二进制文件是具有公共扩展名的非文本文件:“com”、“EXE”、“BMP”和“wav”。5.基本的低级文件输入输出指令。1打开和关闭文件fopen,fclose 2格式读取和写入fprintf,fscanf,fgetl,fgets 3格式读取和写入

2、fread,fwrite 4文件定位和状态feof,fseek,ftell,ferror,frewind,6,8.1.1打开和关闭文件,1fopen函数fidfopen(文件名,权限)FID,消息=fopen(文件名,权限)文件名,权限,机器格式=fopen (FID) FID=fopen(所有)2 fclose函数状态=fclose(所有)命令是fidfopen(my.txt,r),7,8.1.2读写格式化数据,fprintf函数计数=fprintf (FID,format,a.)fscanf函数a,count=fscanf (FID,格式,大小),8,示例8-1,当x=0.1时,计算f(x

3、)=ex的值,并将结果写入文件my。程序x=0:1。y=x;exp(x);%y有两行数据fid=fopen(my.txt,w);fprintf(fid,% 6.2 f .8fn,y);f close(FID);9,示例8-2,从前面示例中生成的my.txt文件中读取数据,并将结果输出到屏幕。程序fid=fopen(my.txt,r);a,计数=f canf(FID,%f %f,2 INF);fprintf(1%,f %fn,a);f close(FID);输出相同示例8-1文件中的数据格式。10,8.1.3文件定位和文件状态,1feof功能:检查文件是否结束。status=feof(fid)

4、2ferror函数:查询文件的输入输出错误信息。函数:使位置指针回到文件的开头。4fseek功能:设置文件位置指针状态=fseek (FID,偏移量,原点)5 ftell功能:用于查询当前文件指针位置=ftell(fid)的位置;11,示例8-3输出文件的大小。程序fid=fopen(my.txt,r);f SEK(FID,0,eof);x=全时当量(FID);fprintf(1,文件大小=%dn,x);frewind(FID);x=全时当量(FID);fprintf(1,文件位置=%dn,x);f close(FID);输出文件大小=231文件位置=0,12,8.1.4逐行读取数据,1fge

5、tl函数:逐行读取文件中的数据,但不读取新的行字符。Line=fgetl(fid) 2fgets函数:用于从文件中读取行,保留换行符,并将行作为字符串返回。(1)行=fgets (FID) (2)行=fgets (FID,nchar),13,示例8-4,编写一个程序来读取示例8-1中生成的数据。程序fid=fopen(my.txt,r);而恐惧(FID)%在文件未完成时逐行读取数据;s=fgets(FID);fprintf(1,%s,s);结束fc lose(FID);输出相同示例8-1文件中的数据格式。14,8.1.5读取和写入二进制数据文件,fwrite函数:用于将二进制数据写入文件计数=

6、fwrite(fid,A,精度)。Fread函数:用于从文件中读取二进制数据a,count=fread (FID,大小,精度)。注意:当使用函数fread()和fwrite()读写文件时,必须以二进制模式打开文件。15,示例8-5,在二进制文件中存储5行5列的魔方数组。程序fid=fopen(my.dat,w);a=魔法(5);fwrite(fid,a,long);f close(FID);16,示例8-6,从二进制文件中读取“魔方阵列”。程序fid=fopen(my.dat,r);a,计数=fread(fid,5,inf,long);f close(FID);A,17,8.1.6图像和声音文

7、件的读取和写入,1读取功能:从文件A读取图像=imread(文件名,fmt) a,map=imread(文件名,fmt) 2图像功能:显示图像(A)3写入功能:将图像写入文件imwrite(A,文件名,fmt) imwrite (a,映射,文件名,fmt),18,示例8-7,显示真彩色(RGB)图像。x,map=imread(c : MATLAB 7 toolboxmatlababdemostree 1 . jpg);图像(x);19,示例8-8,将图像写入文件,程序x,map=imread(c : MATLAB 7 toolboxmatlababdemostree 1 . jpg);imwr

8、ite(x,my . BMP);%将图像保存为真彩色bmp x,map=im read(my . BMP);图像(x);20,8.1.6图像和声音文件的读写,4imfinfo函数:查询图像文件信息innfo imflnfo(filename)5 avread函数:用于读取带扩展名的声音文件。”wav y=wavread(file) y,fs,Nbits=wavread(file) 6wavwrite函数:用于将数据写入扩展名为 wav 的声音文件。WavWrite (y,fs,nbits,wavefile) 7wavplay功能:使用windows音频输出设备播放声音wavplay(y,fs)

9、,21,示例8-9,读取音频数据文件并以不同频率播放。程序:y=wa vread(c : mat lab 7 toolbox Simulink simdemossimgeneraltilet . wav)图(y);wav play(y);wavplay(y,11025);wavplay(y,44100);22,8.2应用程序接口,MATLAB的外部接口应用包括以下内容:(1)调用MATLAB中已有的C/C语言代码;(2)用C/C语言调用MATLAB算法;(3)利用组件标准开发客户/服务器模式;例如,在Visual Basic程序或微软Excel中调用MATLAB算法(4)用C/C语言读写MAT

10、数据文件。23,8.2.1 MEX文件,示例8-10简单MEX文件示例mexHelloWorld.c程序:#包含MEX。h void MEX函数(int nlhs,mxarray * plhs,int nrhs,const mxarray * prhs) MEX printf(你好,MATLAB世界!);24,8.2.2 MATLAB计算引擎,MATLAB计算引擎的应用是利用MATLAB提供的一组接口函数,在后台调用MATLAB应用程序,通过某种通信机制完成用户开发的C/C语言应用程序中复杂的系统任务。25,8-11,设计了一个用C/C语言调用网格函数绘制高斯矩阵曲面的程序。解决问题的步骤:2

11、6,示例8-11程序:#包含#包含引擎。h无效主()引擎* EPint状态=0;/打开计算引擎ep=engOpen(空);如果(ep=(引擎*)空)打印(错误:无法打开MATLAB计算引擎n);出口(-1);/执行MATLAB指令工程字符串、网格(峰值););getchar();/关闭MATLAB计算引擎状态=发动机关闭(EP);如果(状态!=0) printf(不能正常关闭MATLAB计算引擎n);出口(-1);27,8.2.3基于组件的接口编程。该方法的主要特点如下:(1)应用程序与MATLAB工作环境完全分离;(2)MATLAB数学库和工具箱包含多种功能,降低了算法编译的难度;(3)由于

12、算法程序是由组件构成的,所以算法是保密的。28,8.2.4用C/C语言读写MAT数据文件。支持C/C语言读写MAT文件的函数库如下:1打开数据文件MAT打开MAT文件* MAT打开(常量字符*文件名,常量字符*模式)2关闭数据文件MAT close int MAT close(MAT File * mfp)3获取变量MAT getvariable mxarray * MAT getvariable(MAT File * mfp,写数据match variable int match variable(MAT File * mfp,常量字符*名称,常量矩阵* MP),29,扩展读取, 8.3结构

13、数组8.4单元数组8.5面向对象编程,30个应用实例,实例8-12用C/C语言调用MATLAB计算魔方数组,并将结果显示在屏幕上。,31,程序代码1 #,包括发动机h #包括无效主()发动机* ep双* p;mxArray *方程;int i=0,j=0;int状态=0;/打开计算引擎ep=发动机开启(空);如果(ep=(发动机*)为空(打印f(错误:无法打开MATLAB计算引擎n);出口(-1);32,程序代码2,/执行MATLAB指令恩格尔斯特林(ep,A=魔术(5););等式=EnGetVariable(EP,A);p=mxGetPr(方程式);printf(nMATLAB中计算魔法(5

14、)n对于(I=0;i5;I)对于(j=0;j5;j)印刷力(8.0磅力,*(p I j * 5);printf(n);/关闭MATLAB计算引擎状态=发动机关闭(欧洲议会);如果(状态!=0) printf(无法正常关闭MATLAB计算引擎n);出口(-1);33,例8-13,34,程序代码1 、#包括#包括#包括引擎h .无效主()引擎*伊平状态=0;ep=发动机开启(空);/执行MATLAB指令双A=2,3,4,-1,1,-1,3,-5,1,B=5,5,9;双* pa *、Pb *、PCMXArray * x *、y *、z;35,程序代码2,x=mxCreateDoubleMatrix(3,3,MxReal);y=mxCreateDoubleMatrix(3,1,MxReal);pa=mxGetPr(x);Pb=MxGe

温馨提示

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

最新文档

评论

0/150

提交评论