资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
技技术凝聚凝聚实力力专业创新出版新出版第18章 MATLAB 文件I/O操作lMATLAB程序可以看作数据处理器,该处理器从外部源(文件、网络、磁盘等)读入数据,并将处理结果输出到指定设备(文件、网络、磁盘等),即I/O操作,如图所示。MATLAB的I/O操作在实际中经常被用到,例如将MATLAB处理结果数据存储到文件中以备查看或其他程序做进一步处理,或输出中间结果到文件以备调试等。l本章主要介绍MATLAB与文件的数据交换操作,即文件I/O操作,在MATLAB中提供了许多读取和写入文件的函数,通过这些函数可以控制I/O操作更多的细节。技技术凝聚凝聚实力力专业创新出版新出版18.1 MATLAB可读取文件格式l在MATLAB中许多文件格式都是可以读取的,可在MATLAB help 里搜索Supported File Formats得到如图所示的列表,显示了MATLAB可读取文件的格式、文件内容、文件的扩展名以及MATLAB提供的函数。技技术凝聚凝聚实力力专业创新出版新出版18.2 高级文件I/O程序l高级文件程序包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。例如,如果用户有一个包含数值和字母的文本文件(text file)想导入MATLAB,用户可以调用一些低级文件程序自己写一个函数,或者是直接用TEXTREAD函数。使用高级文件程序的关键是:文件必须是相似的(homogeneous),也就是说,文件必须有一致的格式。下面将结合实例来说明高级文件I/O程序,这些程序语法都相对简单,本节中将不过多的阐述,主要通过实例进行说明。技技术凝聚凝聚实力力专业创新出版新出版18.2.1 LOAD/SAVE函数lLOAD和SAVE函数是主要的高级文件I/O程序。LOAD可以读取MAT文件或者用空格间隔的格式相似的ASCII 文件。SAVE可以将MATLAB变量写入MAT格式文件或者空格间隔的ASCII文件。SAVE函数的调用格式为:save filename list of variables options。l说明:如果只有save,那么当前工作区内的所有数据存储在一个名为的文件中。如果后面有一个文件名,那么这些数据将会存储在“”的文件中。如果后面还包括一系列的变量,那么就只存储这些特殊的变量。技技术凝聚凝聚实力力专业创新出版新出版18.2.2 UIGETFILE/UIPUTFILE函数lUIGETFILE/UIPUTFILE是基于图形用户界面(GUI)的。UIGETFILE函数让用户选择一个文件来写(类似与Windows 菜单栏中的另存为选项);UIPUTFILE函数既可以选择已存在的文件改写,也可以输入新的文件名。技技术凝聚凝聚实力力专业创新出版新出版18.2.3 UIIMPORT/IMPORTDATA函数lUIIMPORT是基于GUI的功能强大的高级文件程序,用于读取复杂的数据文件。IMPORTDATA具有UIIMPORT功能,但不打开GUI。技技术凝聚凝聚实力力专业创新出版新出版18.2.4 TEXTREAD/STRREAD函数lTEXTREAD是一个强大的动态高级文件I/O程序,主要用来读取ASCII格式的文本或数值数据文件。除了从字符串读取外,在读取文件时STRREAD类似于TEXTREAD。两个函数可以用诸多参数来改变其具体的工作方式,它们返回用户指定输出的数据。技技术凝聚凝聚实力力专业创新出版新出版18.3 低级文件I/O程序lMATLAB提供了基于C语言实现的低级文件I/O函数。用这些低级文件I/O函数,MATLAB可以读写你所知道的任意文件格式。MATLAT中的这种基本的低级文件I/O命令如表所示。低级文件I/OMATLAB低级文件I/O函数fclose关闭文件Feof测试文件结束ferror查询文件I/O的错误状态fgetl读文件的行,忽略回行符fgets读文件的行,包括回行符fopen打开文件fprintf把格式化数据写到文件或屏幕上fread从文件中读二进制数据frewind返回到文件开始fscanf从文件中读格式化数据fseek设置文件位置指示符ftell获取文件位置指示符fwrite把二进制数据写到文件里技技术凝聚凝聚实力力专业创新出版新出版18.3.1 FOPEN函数lfopen函数打开一个文件并返回这个文件的文件句柄值。它的基本调用形式如下:lfid = fopen(filename, permission) l说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名filename用字符串形式,表示待打开的数据文件。Permission表示打开方式,常见的打开方式如表所示。FOPEN函数打开方式打开方式描 述r只读方式打开文件(默认的打开方式),该文件必须已存在r+读写方式打开文件,打开后先读后写,该文件必须已存在w打开后写入数据。若该文件存在则更新;不存在则创建w+读写方式打开文件,先读后写。若该文件存在则更新;不存在则创建a在打开的文件末端添加数据。若文件不存在则创建a+打开文件后,先读入数据再添加数据。文件不存在则创建技技术凝聚凝聚实力力专业创新出版新出版18.3.2 FCLOSE函数lfclose函数用来关闭打开的文件并返回文件操作码。文件在进行读、写等操作后,应及时关闭,以免数据丢失。fclose的调用格式为:lstatus = fclose(fid)l说明:该函数关闭fid所表示的文件。status为关闭文件操作的返回代码,若关闭文件成功,返回0,否则返回-1。若要关闭所有已打开的文件使用fclose(all)。技技术凝聚凝聚实力力专业创新出版新出版18.3.3 FWRITE函数lfwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:lcount = fwrite(fid, A, precision)l说明:其中count返回所写的数据元素个数,fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度如表所示。默认的数据精度为uint8。MATLAB中的数据精度表MATLAB描 述schar 8位有符号整数uchar 8位无符号整数int88位整数int1616位整数int3232位整数int6464位整数uint88位无符号整数uint16 16位无符号整数uint32 32位无符号整数uint64 64位无符号整数float3232位浮点float6464位浮点double64位浮点技技术凝聚凝聚实力力专业创新出版新出版18.3.4 FREAD函数lfread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:lA, count = fread(fid, count, precision)l说明:其中A是用于存放读取数据的矩阵、count是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用,则它的值可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、M,N(读数据到MN的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。技技术凝聚凝聚实力力专业创新出版新出版18.3.5 FSCANF函数lfscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:lA,count = fscanf(fid, format, size)l说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如%12f。size为可选项,决定矩阵A中数据的大小,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、M,N(读数据到MN的矩阵中,数据按列存放)。技技术凝聚凝聚实力力专业创新出版新出版18.3.6 FPRINTF函数lfprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:lcount = fprintf(fid, format, A, .)l说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。技技术凝聚凝聚实力力专业创新出版新出版18.4 小结l本章主要向读者介绍MATLAB文件I/O操作的相关函数,其主要内容如下:lMATLAB可读取文件格式;l高级文件I/O程序;l低级文件I/O程序。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号