第18章 matlabMATLAB 文件IO操作_第1页
第18章 matlabMATLAB 文件IO操作_第2页
第18章 matlabMATLAB 文件IO操作_第3页
第18章 matlabMATLAB 文件IO操作_第4页
第18章 matlabMATLAB 文件IO操作_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、技术凝聚实力技术凝聚实力专业创新出版专业创新出版第18章 MATLAB 文件I/O操作lMATLAB程序可以看作数据处理器,该处理器从外部源(文件、网络、磁盘等)读入数据,并将处理结果输出到指定设备(文件、网络、磁盘等),即I/O操作,如图所示。MATLAB的I/O操作在实际中经常被用到,例如将MATLAB处理结果数据存储到文件中以备查看或其他程序做进一步处理,或输出中间结果到文件以备调试等。l本章主要介绍MATLAB与文件的数据交换操作,即文件I/O操作,在MATLAB中提供了许多读取和写入文件的函数,通过这些函数可以控制I/O操作更多的细节。技术凝聚实力技术凝聚实力专业创新出版专业创新出版

2、18.1 MATLAB可读取文件格式l在MATLAB中许多文件格式都是可以读取的,可在MATLAB help 里搜索Supported File Formats得到如图所示的列表,显示了MATLAB可读取文件的格式、文件内容、文件的扩展名以及MATLAB提供的函数。技术凝聚实力技术凝聚实力专业创新出版专业创新出版18.2 高级文件I/O程序l高级文件程序包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。例如,如果用户有一个包含数值和字母的文本文件(text file)想导入MATLAB,用户可以调用一些低级文件程序自己写一个函数,或者是直接用TEXTREAD函数。使用高级文件程

3、序的关键是:文件必须是相似的(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说明:如果只

4、有save,那么当前工作区内的所有数据存储在一个名为matlab.mat的文件中。如果后面有一个文件名,那么这些数据将会存储在“filename.mat”的文件中。如果后面还包括一系列的变量,那么就只存储这些特殊的变量。技术凝聚实力技术凝聚实力专业创新出版专业创新出版18.2.2 UIGETFILE/UIPUTFILE函数lUIGETFILE/UIPUTFILE是基于图形用户界面(GUI)的。UIGETFILE函数让用户选择一个文件来写(类似与Windows 菜单栏中的另存为选项);UIPUTFILE函数既可以选择已存在的文件改写,也可以输入新的文件名。技术凝聚实力技术凝聚实力专业创新出版专业

5、创新出版18.2.3 UIIMPORT/IMPORTDATA函数lUIIMPORT是基于GUI的功能强大的高级文件程序,用于读取复杂的数据文件。IMPORTDATA具有UIIMPORT功能,但不打开GUI。技术凝聚实力技术凝聚实力专业创新出版专业创新出版18.2.4 TEXTREAD/STRREAD函数lTEXTREAD是一个强大的动态高级文件I/O程序,主要用来读取ASCII格式的文本或数值数据文件。除了从字符串读取外,在读取文件时STRREAD类似于TEXTREAD。两个函数可以用诸多参数来改变其具体的工作方式,它们返回用户指定输出的数据。技术凝聚实力技术凝聚实力专业创新出版专业创新出版1

6、8.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获取文件位置指示符fw

7、rite把二进制数据写到文件里技术凝聚实力技术凝聚实力专业创新出版专业创新出版18.3.1 FOPEN函数lfopen函数打开一个文件并返回这个文件的文件句柄值。它的基本调用形式如下:lfid = fopen(filename, permission) l说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名filename用字符串形式,表示待打开的数据文件。Permission表示打开方式,常见的打开方式如表所示。FOPEN函数打开方式打开方式描 述r只读方式打开文件(默认的打开方式),该文件必须已存在r+读写方式打开文件,打开后先读后写,该文件必须已存在w打

8、开后写入数据。若该文件存在则更新;不存在则创建w+读写方式打开文件,先读后写。若该文件存在则更新;不存在则创建a在打开的文件末端添加数据。若文件不存在则创建a+打开文件后,先读入数据再添加数据。文件不存在则创建技术凝聚实力技术凝聚实力专业创新出版专业创新出版18.3.2 FCLOSE函数lfclose函数用来关闭打开的文件并返回文件操作码。文件在进行读、写等操作后,应及时关闭,以免数据丢失。fclose的调用格式为:lstatus = fclose(fid)l说明:该函数关闭fid所表示的文件。status为关闭文件操作的返回代码,若关闭文件成功,返回0,否则返回-1。若要关闭所有已打开的文件

9、使用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位整数u

10、int88位无符号整数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个元素

11、到一个列向量)、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, form

温馨提示

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

评论

0/150

提交评论