您好,欢迎访问三七文档
第三讲文件操作Matlab环境下的文件与其它系统一样,也有二类文件组成,一是文件,又称M文件,另一类是数据文件。系统除提供了文件的一般管理功能外,还提供了对数据文件进行操作的特殊功能函数。3.1基本命令1.help帮助命令格式:help命令名例如:helpplothelpmatlab\general2.what显示目录内容命令格式:what[目录名]例如::whatmatlab显示matlab目录下的所有M-文件。3.1基本命令3.type显示文件内容命令格式:type文件名显示M-文件的内容。4.寻找命令格式:lookfor命令或字符串寻找命令或字符串是否存在。例如:lookforcos3.1基本命令5.which寻找函数命令格式:which函数名显示函数所在的文件位置,给出路径。例如:whichpinv6.path路径控制命令格式:path[路径]显示或改变搜索路径。例如:path(path,‘d:\test\aaa’)3.1基本命令7.who,whos显示变量命令显示当前变量。whos命令更详细。8.load,save取出与保存结果命令从磁盘上读出或保存计算结果。例如:savetest将变量存入test.mat文件中。例如:savetestxy仅保存x,y变量。3.1基本命令9.clear清除变量命令格式:[变量名]例如:clearxy10.disp显示文本或变量内容命令例如:x=[123]disp(x)y=‘aaaaaaa’disp(y)3.1基本命令11.cd改变目录命令与DOS类似。12.dir显示目录内容命令显示目录里的文件。例如:dir\matlab\notebook3.1基本命令13.delete删除文件或对象命令格式:delete文件名不能用通配符delete(对象)例如:H=PLOT(X,X)delete(H)删除图形对象H3.1基本命令14.!执行系统命令在Windows下运行。“!”用于执行DOS命令。例如:!dir*.exe显示当前目录里的EXE文件。3.2文件的打开与关闭Matlab提供了对数据文件建立、打开、读、写以及关闭等一系列函数,数据文件一般存放在磁盘等介质上,用文件名标识,系统对文件名没有特殊要求。文件数据格式有二种形式,一是二进制格式文件,二是ASCII文本文件,系统对这两类文件提供了不同的读写功能函数。3.2文件的打开与关闭1fopen打开文件在读写文件之前,必须先用fopen命令打开一个文件,并指定允许对该文件进行的操作。文件操作结束后,应及时关闭文件,以免数据的丢失或误修改。fopen函数格式为:Fid=fopen(filename,permission)3.2文件的打开与关闭其中filename为文件名,permission为文件格式,可以是下列格式之一:•‘r’打开文件,读数据,文件必须存在。•‘w’打开文件,写数据,若文件不存在,系统会自动建立。•‘a’打开文件,在文件末尾添加数据。•‘r+’打开文件,可以读和写数据,文件必须存在。•‘w+’打开文件,供读与写数据用。•‘a+’打开文件,供读与添加数据用。•‘W’打开文件供写数据用,无自动刷新功能。•‘A’打开文件供添加数据用,无自动刷新功能。3.2文件的打开与关闭例如:打开一个名为std.dat的数据文件并进行读操作,其命令格式为:Fid=fopen(‘std.dat’,’r’)上述打开格式均为二进制格式,如果想用ASCII文本格式,则必须在格式字符串中加上字符t,例如用’rt’表示以ASCII格式打开供读操作的数据文件。3.2文件的打开与关闭2fclose关闭文件文件在进行完读、写等操作后,应及时关闭,以保证文件的安全可靠。关闭文件命令格式为:Sta=fclose(Fid)关闭Fid所表示的文件Sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回–1。3.3文件的读写操作1二进制数据文件fread读二进制数据文件。格式为:[A,COUNT]=fread(Fid,size,precision)其中A为数据矩阵,COUNT返回所读取的数据元素个数。size为可选项,若不选用则读取整个文件内容,若选用它的值可以是下列值:3.3文件的读写操作N读取N个元素到一个列向量。inf读取整个文件。[M,N]读数据到M×N的矩阵中,数据按列存放。3.3文件的读写操作precision用于控制所读数据的精度格式。缺省格式为uchar,即无符号字符格式。例如:Fid=fopen(‘std.dat’,‘r’);A=fread(Fid,100,’long’);Sta=fclose(fid);以读数据方式打开数据文件std.dat,并按长整型数据格式读取文件的前100个数据放入向量A,然后关闭文件。3.3文件的读写操作fwrite函数以二进制格式向数据文件写数据,其格式为:COUNT=fwrite(Fid,A,precision)例如:Fid=fopen(‘magic5.bin’,‘wb’);fwrite(Fid,magic,’int32’);上述语句将矩阵magic中的数据写入文件magic5.bin中,数据格式为32位整型二进制格式。3.3文件的读写操作【例1】建立一数据文件test.dat,用于存放矩阵A的数据。已知A=[-0.6515-0.2727-0.4354-0.3190-0.9047-0.7534-0.4567-0.3212-0.4132-0.3583-0.9264-0.8173-0.7823-0.3265-0.0631-0.1735-0.7373-0.0972-0.3267-0.6298-0.4768-0.6773-0.6574-0.1923-0.4389]3.3文件的读写操作Fid=fopen(‘test.dat’,‘w’)cnt=fwrite(Fid,A,‘float’)fclose(Fid)程序段将矩阵A的数据以二进制浮点数格式写入文件test.dat中。Fid=fopen(‘test.dat’,‘r’)[B,cnt]=fread(Fid,[5,inf],‘float’)fclose(Fid)读取文件test.dat的内容。3.3文件的读写操作2文本文件fscanf读ASCII文本文件[A,COUNT]=fscanf(Fid,format,size)其中A为数据矩阵,用以存放读取的数据,COUNT返回所读取的数据元素个数。format用以控制读取的数据格式,由%加上格式符组成,格式符为:d,i,o,u,x,e,f,g,s,c与[...]3.3文件的读写操作例如:s=fscanf(fid,‘%s’)读取一个字符串a=fscanf(fid,‘%5d’)读取5位数的整数b=fscanf(fid,‘%6.2d’)读取浮点数3.3文件的读写操作fprintf写ASCII数据文件,其格式为:COUNT=fprintf(Fid,format,A,…)其中A为要写入文件的数据矩阵,先按format格式化数据矩阵A,后写入到Fid所指定的文件。例如:x=0:0.1:1;y=[x;exp(x)];Fid=fopen('exp.txt','w');fprintf(Fid,'%6.2f%12.8f\n',y);fclose(Fid);3.4数据文件定位写操作1.fseek函数定位文件位置指针,格式为:status=fseek(Fid,offset,origin)其中Fid为文件句柄,offset表示位置指针相对移动的字节数,若为正整数表示向文件尾方向移动,若为负整数表示向文件头方向移动,origin表示位置指针移动的参照位置,它的取值有三种可能:’cof’表示文件的当前位置,’bof’表示文件的开始位置,’eof’表示文件的结束位置。若定位成功status返回值为0,否则返回值为–1。3.4数据文件定位写操作2.ftell函数返回文件指针的当前位置。其格式为:position=ftell(Fid)返回值为从文件开始到指针当前位置的字节数。若返回值为–1表示获取文件当前位置失败。3.4数据文件定位写操作【例2】下述程序段说明了函数fseek和ftell的使用。a=[1:5];Fid=fopen(‘fdat.bin’,‘w’);以写方式打开文件fdat.binfwrite(Fid,a,‘int16’);将a中的5个数据元素分别以双字节整型格式写入status=fclose(Fid);文件fdat.binFid=fopen(‘fdat.bin’,‘r’);以读数据方式打开文件3.4数据文件定位写操作status=fseek(Fid,6,‘bof’);将文件数据指针从开始位置向尾部移动6个字节four=fread(Fid,1,‘int16’);读取当前数据,即第4个数据,并移动指针到下一个数据position=ftell(Fid);eight=fread(Fid,1,‘int16’);读取第8个数据status=fclose(Fid);习题1.已知文件句柄为Fid,请写出完成下列操作的命令或命令序列a以读和写方式打开二进制格式数据文件b将浮点数F添加到文件尾部c将文件内容以浮雕点数格式读入数据向量B习题2.建立数据文件test.dat,要求该文件可以读、写。文件内容如下:NAMESCORELiuqi84.0Zhangbin87.5Liping90.0Wangwei78.0Wujian92.5……
本文标题:第三讲-文件操作
链接地址:https://www.777doc.com/doc-2123112 .html