文件输入输出资料讲解

上传人:yuzo****123 文档编号:137604062 上传时间:2020-07-10 格式:PPT 页数:36 大小:486.50KB
返回 下载 相关 举报
文件输入输出资料讲解_第1页
第1页 / 共36页
文件输入输出资料讲解_第2页
第2页 / 共36页
文件输入输出资料讲解_第3页
第3页 / 共36页
文件输入输出资料讲解_第4页
第4页 / 共36页
文件输入输出资料讲解_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《文件输入输出资料讲解》由会员分享,可在线阅读,更多相关《文件输入输出资料讲解(36页珍藏版)》请在金锄头文库上搜索。

1、文件输入输出,一、概述 二、高层I/O函数 三、数据导入向导 四、底层I/O函数,一、概述,1、输入输出(I/O),数据输入和输出(I/O) 输入:从磁盘文件获得数据,加载到工作空间。 输出:从工作空间变量保存到文件中。 高层文件和底层文件I/O操作 高层:针对不同的数据格式文件,提供不同的I/O函数,有现成的函数供使用,仅需少量编程。 底层:使用文件标识符可访问任何类型的数据文件,更加灵活地完成相对特殊的任务,需要复杂编程 数据导入向导:数据导入用的图形界面,用于导入已知格式的文件和有一定规则的ASCII文本文件,2、二进制文件和文本文件,文本文件将文件看作是由字节(byte)组成的,每个字

2、节(bit)的最高位都是0,文本文件使用了一个字节中的七位来表示所有的信息。 二进制文件将字节中的所有位都用上了。 按照文本方式打开文件时会进行转换,将每个字节转换成ASCII码。 以二进制方式打开文件时不会进行任何的转换。 进行文本编辑时,编辑的最小单位是字节。 二进制文件编辑最小单位则是位(bit)。,MATLAB提供一种特殊的数据文件格式MAT文件,这种文件是一种二进制格式文件,扩展名为 .mat,它为MATLAB提供了跨平台的数据交互能力。这些 *.mat 文件之所以能够独立于各种平台的原因是在文件头带有设备的签名,MATLAB 在载入文件时将检查这个签名,如果发现文件来源不同于当前的

3、系统,则进行必要的转换。,3、mat数据文件格式,save 将当前工作空间中的变量保存到指定的数据文件中,其基本语法为:,其中,option可以有如下几种可能: -mat保存为二进制的MAT文件格式(默认) -append 在已有的数据文件尾部追加数据 -ascii保存为ASCII文本格式,数据按照八位精度保存 -ascii -double保存为ASCII文本格式,数据按照十六位精度保存 -ascii tabs保存为ASCII文本格式,数据之间使用制表符作为间隔,load 将数据文件的数据导入到MATLAB的工作空间,其基本的语法为:,注意:使用load指令加载数据文件时,数据文件只要保存在M

4、ATLAB的搜索路径上即可,同时若不指明数据文件的扩展名,则数据文件默认按照二进制的MAT文件格式加载,否则都按照文本格式文件加载。,例: save和load指令示例。,clear all x1 = 2; x2 = 3; x3 = 4; y1=0; save xdata x1 x2 save xdata2.dat x* -ascii,clear all load xdata,执行load 命令后,请查看内存中是否有相应的变量,执行load 命令后,请查看当前工作目录,确认是否生成了相应的文件。,2、文本文件的读写,(1) csvread,(2)dlmread,M = dlmread(filen

5、ame) M = dlmread(filename, delimiter) M = dlmread(filename, delimiter, R, C) M = dlmread(filename, delimiter, range),其中参数 delimiter 用于指定文件中的分隔符,其他参数的意义与 csvread 函数中参数的意义相同。dlmread 函数与 csvread 函数的差别在于,dlmread 函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。,(3)dlmwrite,dlmwrite(filename, M),将矩阵 M 的数据写入文件 filename 中,以逗号

6、分隔; 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

7、(filename, M, -append, attribute-value list),叙写文件,并指定参数。,例:有一个text_test.txt文件(可从课程网页下载),包含60000行数据,每行两个数据以空格分隔,前面的为x,后面的为y(要注意的是,y的后面也有一个空格)。请绘制出这些数据在直角坐标系中的图形。,A = dlmread(text_test.txt, ); plot(A(:,1),A(:,2),3、Excel文件的读写( .xls),练习: 1、查阅matlab的帮助系统,了解上面这些函数的基本用法。 2、新建一excel工作簿,输入一些数据并存盘,关闭excel。 3、

8、利用xlsread将excel工作簿中的数据导入到matlab中。 4、检查数据导入是否正确,然后对数据进行一些修改,并将修改后的数据利用xlswrite函数写入原先的excel工作簿文件。 6、用excel打开工作簿文件,查看数据是否被修改。,4、图像文件的读写,以image_test.jpg为例(可从课程网页下载),%读取并显示图片 Img = imread(image_test.jpg); imshow(Img);,%修改图片、显示、存盘 Img(:,:,3)=0; imshow(Img) imwrite(Img,image_new.jpg),5、其他格式文件的读写,除了前面讲述的几种数

9、据文件类型以外,MATLAB还能够加载其他很多不同类型的数据文件,例如声音、视频等二进制数据文件。 可以键入doc fileformats 命令来获取MATLAB能够读入的二进制文件类型以及相应的加载函数信息。,三、数据导入向导,MATLAB为了便于用户导入数据还提供了导入数据向导,导入数据向导是一个图形用户界面,能够帮助用户导入各种类型的数据,这样,就不必通过编写程序就可以把数据导入到MATLAB的工作空间。,启动导入数据向导有可以使用不同的方法: (1) 在MATLAB命令行中,键入指令uiimport。 或: (2) 通过菜单命令,执行“File”菜单下的“Import Data”命令。

10、 (3) 执行MATLAB的“Start”菜单中“MATLAB”子菜单下的“Import Wizard”命令。,uiimport 命令启动数据导入向导的初始画面,单击“Browse”按钮,在弹出的对话框中选择需要加载的数据文件,选择需要加载的数据文件,用鼠标选择需要打开的文件,然后单击“打开”按钮之后,数据导入向导尝试分析并加载数据文件,并且将能够加载的数据显示在图形界面中。,加载了数据的数据导入对话框,可以通过“data”、“textdata”和“colheaders”标签页察看导入的数据,若导入正确无误后,单击“Next”按钮,选择合适的数据分隔符,之后单击“Next”按钮,接下来选择数据

11、变量,之后就可以单击“Finish”按钮完成整个数据导入的过程,这时在MATLAB的工作空间中,将出现导入的变量。,还可以点击变量名,修改变量名称,练习: 使用数据导入向导,把text_test.txt文件中的数据导入matlab。,四、底层I/O函数,1、打开、关闭文件 2、读写数据 3、文件位置指针,fopen打开文件,fid = fopen(filename, flag);,flag为控制文件读写的标识符,它的取值可以为,若能够成功地打开文件,则返回值fid为非负整数,否则为-1,1、 打开、关闭文件,fclose关闭已经打开的文件,status = fclose(fid),关闭文件之后

12、,fid变量依然存在于工作空间中,但是对fid再进行文件I/O操作是错误的。若函数运行成功,则status为0,否则为-1。,2、 读写数据,打开文件之后就要进行文件内容的读写了,MATLAB提供了两大类低级文件I/O函数进行文件内容的读写二进制文件读写函数和文本文件读写函数。,fprintf :格式化输出,count = fprintf( fid, format, A, . ),该语句将矩阵 A 及后面其他参数中数字的实部以 format 指定的格式写入到 fid 指定的文件中,返回写入数据的字节数。 参数 format 由 % 开头,如下所示:,(1)标记(flag),为可选部分; (2)

13、宽度和精度指示,为可选部分; (3)转换字符,为必需部分。,(1)标记:用于控制输出的对齐方式,可以选择:,(2)宽度和精度指示:可以通过数字指定输出数字的宽度及精度,格式为:,%6f指定数字的宽度; %6.2f指定数字的宽度及精度; %.2f指定数字的精度。,(3)转换字符,(4)转义符:转换字符用于指定输出的符号,可以选择的内容如表所示。,例:用 fprintf 函数在显示器上输出字符串。,fid取1 表示显示器(若不提供fid,也默认为1) 用两个单引号显示单引号 使用 n 进行换行。, fprintf(1,Its Friday.n) Its Friday.,fprintf 练习:,a

14、= 1:10;11:20 fprintf(%dn,a) fprintf(%2dn,a) fprintf(%02dn,a) fprintf(%+2d,a) fprintf(%02d %02dn,a) fprintf(%02d %02d %02d %02dn,a),先想一想各条fprintf语句在屏幕上的输出是什么? 然后再看matlab的输出结果,与你想的一样吗?,fid = fopen(test.txt,wt) fprintf(fid,%02d %02d %02d %02d %02dn,a) fclose(fid),这条语句是输出到当前工作目录下的test.txt文件中,fscanf:格式化输

15、入,array = fscanf(fid, format) array, count = fscanf(fid, format, size),fid: 所要读取的文件的文件标识 format:控制如何读取的格式字符串, array:接受数据的数组, count:返回从文件读取的变量的个数。 size:指定从文件读取数据的数目,可取: n 准确地读取n个值。执行完相应的语句后,array将是一个包含有n个值的列向量 Inf 读取文件中所有值。执行完相应的语句后,array将是一个列向量,包含有从文件所有值。 m,n 从文件中精确定地读取mn个值,array是一个mn的数组。,fscanf 举例:

16、,在前面fprintf函数的练习中,在当前工作目录下生成了一个test.txt文件,可以使用文本编辑器,如记事本查看其具体内容。 现使用fscanf函数将该文件中的数据读取到matlab中。,fid = fopen(test.txt,rt) A = fscanf(fid,%d,3,4) fclose(fid),执行完这三条语句,数组A的内容是什么?,3、文件位置指针,当正确地打开文件并进行数据的读写时,MATLAB自动创建一个文件位置指针来管理和维护文件读写数据的起始位置。所以,在进行数据文件的读写时,需要通过某种手段来控制和判断当前文件位置指针,例如判断当前文件位置指针是否已经到达文件尾部,将文件位置指针移动到指定的位置,获取当前文件位置指针在文件中的位置以及将文件位置指针重置在文件的头部等。,fid:指已经打开的数据文件。 offset:是指移动文件指针的偏移量,若数值为正,则向文件尾部的方向移动文件位置指针,若数值为0则不移动文件位置指针,若数值为负则向文件头部的方面移动文件位置指针,offset的单位为字节数。 origin:为字符串,代表文件指

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号