资源描述:
《Matlab教程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8章高级编程技术1本章目标掌握MATLAB文件处理方法理解MATLAB应用程序接口的原理了解结构和元胞这两种复杂数据类型了解面向对象编程的基本概念2主要内容8.1文件8.2应用程序接口38.1文件文件可分为两类:文本文件由字符和与字符的显示格式有关的控制符构成常见扩展名:“TXT”、“BAT”、“HTM”二进制文件二进制文件为非文本文件常见扩展名:“COM”、“EXE”、“BMP”、“WAV”4MATLAB中基本的低级文件I/O指令:1.打开和关闭文件fopen、fclose2.格式读写fprintf、fscanf、fgetl、fgets3.非格式读写fread、fwr
2、ite4.文件定位和状态feof、fseek、ftell、ferror、frewind58.1.1文件的打开与关闭1.fopen函数fid=fopen(filename,permission)[fid,message]=fopen(filename,permssion)[filename,permission,machineformat]=fopen(fid)fid=fopen('all')2.fclose函数status=fclose(fid)status=fclose('all')例:打开一个名为std.dat的数据文件并进行读操作,命令为:fid=fopen('my
3、.txt','r')68.1.2格式化数据的读写fprintf函数count=fprintf(fid,format,A...)fscanf函数[A,count]=fscanf(fid,format,size)7例8-1计算当x=[01]时f(x)=ex的值,并将结果写入到文件my.txt中。程序x=0:0.1:1;y=[x;exp(x)];%y有两行数据fid=fopen('my.txt','w');fprintf(fid,'%6.2f%12.8f',y);fclose(fid);8例8-2从上例中生成的文件my.txt中读取数据,并将结果输出到屏幕。程序fid=fo
4、pen('my.txt','r');[a,count]=fscanf(fid,'%f%f',[2inf]);fprintf(1,'%f%f',a);fclose(fid);输出同例8-1文件中的数据格式。98.1.3文件定位和文件状态1.feof函数:检测文件是否已经结束status=feof(fid)2.ferror函数:用于查询文件的输入、输出错误信息msg=ferror(fid)3.frewind函数:使位置指针重新返回文件的开头frewind(fid)4.fseek函数:设置文件的位置指针status=fseek(fid,offset,origin)5.fte
5、ll函数:用于查询当前文件指针的位置position=ftell(fid);10例8-3输出文件的大小。程序fid=fopen('my.txt','r');fseek(fid,0,'eof');x=ftell(fid);fprintf(1,'FileSize=%d',x);frewind(fid);x=ftell(fid);fprintf(1,'FilePosition=%d',x);fclose(fid);输出FileSize=231FilePosition=0118.1.4按行读取数据1.fgetl函数:按行从文件中读取数据,但不读取换行符。line=fget
6、l(fid)2.fgets函数:用于从文件中读取行、保留换行符并把行作为字符串返回。(1)line=fgets(fid)(2)line=fgets(fid,nchar)12例8-4编写一个程序,用于读取例8-1生成的数据。程序fid=fopen('my.txt','r');while~feof(fid)%在文件没有结束时按行读取数据s=fgets(fid);fprintf(1,'%s',s);endfclose(fid);输出同例8-1文件中的数据格式。138.1.5二进制数据文件的读写fwrite函数:用于向一个文件写入二进制数据count=fwrite(fid,A,p
7、recision)。fread函数:用于从文件中读二进制数据[A,count]=fread(fid,size,precision)注意:使用函数fread()和fwrite()读写文件时,必须以二进制方式打开文件14例8-5将5行5列“魔方阵”存入二进制文件中。程序fid=fopen('my.dat','w');a=magic(5);fwrite(fid,a,'long');fclose(fid);15例8-6从二进制文件中读取“魔方阵”。程序fid=fopen('my.dat','r');[A,count]=fread(fi