文件输入输出资料讲解_第1页
文件输入输出资料讲解_第2页
文件输入输出资料讲解_第3页
文件输入输出资料讲解_第4页
文件输入输出资料讲解_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

文件输入输出一、概述二、高层I/O函数三、数据导入向导四、底层I/O函数一、概述

1、输入输出(I/O)数据输入和输出(I/O)输入:从磁盘文件获得数据,加载到工作空间。输出:从工作空间变量保存到文件中。高层文件和底层文件I/O操作高层:针对不同的数据格式文件,提供不同的I/O函数,有现成的函数供使用,仅需少量编程。底层:使用文件标识符可访问任何类型的数据文件,更加灵活地完成相对特殊的任务,需要复杂编程数据导入向导:数据导入用的图形界面,用于导入已知格式的文件和有一定规则的ASCII文本文件2、二进制文件和文本文件文本文件将文件看作是由字节(byte)组成的,每个字节(bit)的最高位都是0,文本文件使用了一个字节中的七位来表示所有的信息。二进制文件将字节中的所有位都用上了。按照文本方式打开文件时会进行转换,将每个字节转换成ASCII码。以二进制方式打开文件时不会进行任何的转换。进行文本编辑时,编辑的最小单位是字节。二进制文件编辑最小单位则是位(bit)。MATLAB提供一种特殊的数据文件格式——MAT文件,这种文件是一种二进制格式文件,扩展名为.mat,它为MATLAB提供了跨平台的数据交互能力。这些*.mat文件之所以能够独立于各种平台的原因是在文件头带有设备的签名,MATLAB在载入文件时将检查这个签名,如果发现文件来源不同于当前的系统,则进行必要的转换。3、mat数据文件格式save将当前工作空间所有变量保存在当前目录下文件matlab.mat内savefilename将当前工作空间中所有的变量保存到指定的文件中savefilename

var1

var2......将当前工作空间中的变量var1、var2等保存到指定文件中savefilenamedata*(功能同上)其中*为通配符save......option按照option的不同取值保存数据save('filename',......)save指令的函数格式用法save将当前工作空间中的变量保存到指定的数据文件中,其基本语法为:

其中,option可以有如下几种可能:-mat 保存为二进制的MAT文件格式(默认)-append在已有的数据文件尾部追加数据-ascii 保存为ASCII文本格式,数据按照八位精度保存-ascii-double 保存为ASCII文本格式,数据按照十六位精度保存-ascii–tabs保存为ASCII文本格式,数据之间使用制表符作为间隔load将数据文件的数据导入到MATLAB的工作空间,其基本的语法为:注意:使用load指令加载数据文件时,数据文件只要保存在MATLAB的搜索路径上即可,同时若不指明数据文件的扩展名,则数据文件默认按照二进制的MAT文件格式加载,否则都按照文本格式文件加载。load 将matlab.mat文件中所有的变量加载到当前的工作空间loadfilename将指定文件中所有的变量加载到当前的工作空间loadfilenamevar1var2......将指定文件中的指定变量加载到当前工作空间loadfilename-ascii将数据文件按照文本格式加载loadfilename-mat将数据文件按照MAT文件格式加载S=load(......)load指令的函数格式用法例:save和load指令示例。clearallx1=2;x2=3;x3=4;y1=0;savexdatax1x2savexdata2.datx*-asciiclearallloadxdata执行load命令后,请查看内存中是否有相应的变量执行load命令后,请查看当前工作目录,确认是否生成了相应的文件。2、文本文件的读写csvread读取以逗号作为间隔符的文本文件csvwrite保存数据到文本文件,逗号作为间隔符dlmread按照指定的间隔符读取文本文件的数据dlmwrite按照指定间隔符将数据写入文本文件textread按照指定的格式从文本文件中读取数据strread按照指定的格式从字符串中读取数据textscan按照指定的格式从文本文件、字符串中读取数据(1)csvreadM=csvread('filename')将文件filename中的数据读入,并且保存为M,filename中只能包含数字,并且数字之间以逗号分隔。M是一个数组,行数与filename的行数相同,列数为filename列的最大值,对于元素不足的行,以0补充。M=csvread('filename',row,col)读取文件filename中的数据,起始行为row,起始列为col,需要注意的是,此时的行列从0开始。M=csvread('filename',row,col,range)读取文件filename中的数据,起始行为row,起始列为col,读取的数据由数组range指定,range的格式为:[R1C1R2C2],其中R1、C1为读取区域左上角的行和列,R2、C2为读取区域右下角的行和列(2)dlmread

M=dlmread('filename')M=dlmread('filename',delimiter)M=dlmread('filename',delimiter,R,C)M=dlmread('filename',delimiter,range)其中参数delimiter用于指定文件中的分隔符,其他参数的意义与csvread函数中参数的意义相同。dlmread函数与csvread函数的差别在于,dlmread函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。(3)dlmwritedlmwrite('filename',M),将矩阵M的数据写入文件filename中,以逗号分隔;dlmwrite('filename',M,'D'),将矩阵M的数据写入文件filename中,采用指定的分隔符分隔数据,如果需要tab键,可以用“\t”指定;dlmwrite('filename',M,'D',R,C),指定写入数据的起始位置;dlmwrite('filename',M,attribute1,value1,attribute2,value2,...),指定任意数目的参数,可以指定的参数见下表;dlmwrite('filename',M,'-append'),如果filename指定的文件存在,在文件后面写入数据,不指定时则覆盖原文件;dlmwrite('filename',M,'-append',attribute-valuelist),叙写文件,并指定参数。参数名功能delimiter用于指定分隔符newline用于指定换行符,可以选择“pc”或者“unix”roffset行偏差,指定文件第一行的位置,roffset的基数为0coffset列偏差,指定文件第一列的位置,coffset的基数为0precision指定精确度,可以指定精确维数,或者采用c语言的格式,如“%10.5f”例:有一个text_test.txt文件(可从课程网页下载),包含60000行数据,每行两个数据以空格分隔,前面的为x,后面的为y(要注意的是,y的后面也有一个空格)。请绘制出这些数据在直角坐标系中的图形。A=dlmread('text_test.txt','');plot(A(:,1),A(:,2))3、Excel文件的读写(.xls)xlsfinfo获取文件类型等基本信息xlsread读取Excel电子表格文件的数据xlswrite写入Excel电子表格文件的数据练习:1、查阅matlab的帮助系统,了解上面这些函数的基本用法。2、新建一excel工作簿,输入一些数据并存盘,关闭excel。3、利用xlsread将excel工作簿中的数据导入到matlab中。4、检查数据导入是否正确,然后对数据进行一些修改,并将修改后的数据利用xlswrite函数写入原先的excel工作簿文件。6、用excel打开工作簿文件,查看数据是否被修改。4、图像文件的读写函数函数说明imformats显示matlab支持的图形格式列表及相关信息imfinfo获取图形文件信息imread读取图形文件imwrite写入图形文件imshow显示图片image显示图片对象以image_test.jpg为例(可从课程网页下载)%读取并显示图片Img=imread('image_test.jpg');imshow(Img);%修改图片、显示、存盘Img(:,:,3)=0;imshow(Img)imwrite(Img,'image_new.jpg')5、其他格式文件的读写除了前面讲述的几种数据文件类型以外,MATLAB还能够加载其他很多不同类型的数据文件,例如声音、视频等二进制数据文件。可以键入docfileformats命令来获取MATLAB能够读入的二进制文件类型以及相应的加载函数信息。三、数据导入向导MATLAB为了便于用户导入数据还提供了导入数据向导,导入数据向导是一个图形用户界面,能够帮助用户导入各种类型的数据,这样,就不必通过编写程序就可以把数据导入到MATLAB的工作空间。启动导入数据向导有可以使用不同的方法:(1)在MATLAB命令行中,键入指令uiimport。或:(2)通过菜单命令,执行“File”菜单下的“ImportData”命令。(3)执行MATLAB的“Start”菜单中“MATLAB”子菜单下的“ImportWizard”命令。uiimport命令启动数据导入向导的初始画面单击“Browse”按钮,在弹出的对话框中选择需要加载的数据文件选择需要加载的数据文件用鼠标选择需要打开的文件,然后单击“打开”按钮之后,数据导入向导尝试分析并加载数据文件,并且将能够加载的数据显示在图形界面中。

加载了数据的数据导入对话框可以通过“data”、“textdata”和“colheaders”标签页察看导入的数据,若导入正确无误后,单击“Next”按钮选择合适的数据分隔符,之后单击“Next”按钮接下来选择数据变量,之后就可以单击“Finish”按钮完成整个数据导入的过程,这时在MATLAB的工作空间中,将出现导入的变量。还可以点击变量名,修改变量名称练习:使用数据导入向导,把text_test.txt文件中的数据导入matlab。四、底层I/O函数1、打开、关闭文件2、读写数据3、文件位置指针r打开的文件进行读操作。w打开的文件进行写操作,若文件不存在则创建新的文件。a打开的文件进行追加数据操作,若文件不存在则创建新的文件。r+打开的文件既可以进行写操作,也可以进行读操作。w+打开的文件既可以进行写操作,也可以进行读操作,若文件不存在则创建新的文件。a+打开的文件既可以进行写操作、读操作,也可以进行数据追加操作,若文件不存在则创建新的文件。fopen

打开文件fid=fopen('filename','flag');flag为控制文件读写的标识符,它的取值可以为若能够成功地打开文件,则返回值fid为非负整数,否则为-11、打开、关闭文件fclose

关闭已经打开的文件status=fclose(fid)关闭文件之后,fid变量依然存在于工作空间中,但是对fid再进行文件I/O操作是错误的。若函数运行成功,则status为0,否则为-1。

2、读写数据函数说明输出fscanf从文件中读取格式化的输入数据矩阵fprintf向文件写入格式化的输出写入数据文件的数据个数fgetl读取文本文件的一行数据,不包含文本的结束符字符串fgets读取文本文件的一行数据,包含文本的结束符字符串fread读取文件的二进制数据数据矩阵和读入的数据个数fwrite写入文件的二进制数据写入的字节数打开文件之后就要进行文件内容的读写了,MATLAB提供了两大类低级文件I/O函数进行文件内容的读写——二进制文件读写函数和文本文件读写函数。fprintf:格式化输出

count=fprintf(fid,format,A,...)该语句将矩阵A及后面其他参数中数字的实部以format指定的格式写入到fid指定的文件中,返回写入数据的字节数。参数format由%开头,如下所示:(1)标记(flag),为可选部分;(2)宽度和精度指示,为可选部分;(3)转换字符,为必需部分。(1)标记:用于控制输出的对齐方式,可以选择:-(负号)在参数左侧进行判别%-5.2d+(正号)在数字前添加符号%+5.2d空格在数字前插入空格%5.2d0在数字前插入0%05.2d(2)宽度和精度指示:可以通过数字指定输出数字的宽度及精度,格式为:%6f 指定数字的宽度;%6.2f 指定数字的宽度及精度;%.2f 指定数字的精度。转换字符意义%c输出单个字符%d输出有符号十进制数%e采用指数格式输出,采用小写字母e,如:3.1415e+00%E采用指数格式输出,采用大写字母E,如:3.1415E+00%f以定点数的格式输出%g%e及%f的更紧凑的格式,不显示数字中无效的0%G与%g相同,但是使用大写字母E%i有符号十进制数%o无符号八进制数%s输出字符串%u无符号十进制数%x十六进制数(使用小写字母a-f)%X十六进制数(使用大写字母A-F)(3)转换字符(4)转义符:转换字符用于指定输出的符号,可以选择的内容如表所示。转义符功能\b退格\f表格填充\n换行符\r回车\ttab\\\,反斜线\''或''',单引号%%%,百分号例:用fprintf函数在显示器上输出字符串。fid取1表示显示器(若不提供fid,也默认为1)用两个单引号显示单引号使用\n进行换行。>>fprintf(1,'It''sFriday.\n')It'sFriday.fprintf练习:a=[1:10;11:20]fprintf('%d\n',a)fprintf('%2d\n',a)fprintf('%02d\n',a)fprintf('%+2d',a)fprintf('%02d%02d\n',a)fprintf('%02d%02d%02d%02d\n',a)先想一想各条fprintf语句在屏幕上的输出是什么?然后再看matlab的输出结果,与你想的一样吗?fid=fopen('test.txt','wt')fprintf(fid,'%02d%02d%02d%02d%02d\n',a)fclose(fid)这条语句是输出到当前工作目录下的test.txt文件中fscanf:格式化输入

array=fscanf(fid,format)

[array,count]=f

温馨提示

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

评论

0/150

提交评论