一章文件输入输出知识分享

上传人:yulij****0329 文档编号:137237994 上传时间:2020-07-06 格式:PPT 页数:42 大小:523.50KB
返回 下载 相关 举报
一章文件输入输出知识分享_第1页
第1页 / 共42页
一章文件输入输出知识分享_第2页
第2页 / 共42页
一章文件输入输出知识分享_第3页
第3页 / 共42页
一章文件输入输出知识分享_第4页
第4页 / 共42页
一章文件输入输出知识分享_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《一章文件输入输出知识分享》由会员分享,可在线阅读,更多相关《一章文件输入输出知识分享(42页珍藏版)》请在金锄头文库上搜索。

1、2020/7/6,第1页,第5章 文件I/O,高级文件的I/O操作 读写MAT文件或者ASCII 读写TXT文件 读写EXCEL文件 读写图像文件 低级文件的I/O操作 打开和关闭文件 读写二进制文件 读写格式化的文本文件 控制文件指针位置 几点重要补充,2020/7/6,第2页,几个概念,数据输入和输出(I/O) 输入:从磁盘文件获得数据,加载到工作空间。 输出:从工作空间变量保存到文件中。 高级文件和低级文件I/O操作 高级:针对不同的数据格式文件,提供不同的I/O函数,有现成的函数供使用,仅需少量编程。 低级:使用文件标识符可访问任何类型的数据文件,更加灵活地完成相对特殊的任务,需要复杂

2、编程 二进制文件和文本文件(ASCII文件),2020/7/6,第3页,二进制文件和文本文件,文本文件将文件看作是由字节(byte)组成的,每个字节(bit)的最高位都是0,文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了 打开方式不同,对于这些0和1的处理也就不同。按照文本方式打开时会进行转换,将每个字节转换成ASCII码,以二进制方式打开则不会进行任何的转换 在记事本中进行文本编辑的时进行编辑的最小单位是字节;而对二进制文件编辑最小单位则是位(bit),不会直接通过手工的方式对二进制文件进行编辑,2020/7/6,第4页,1、MAT文件的读写,文件的

3、存储 数据导入 文件的打开,2020/7/6,第6页,save命令,save命令的调用格式为: save,将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT 文件可以通过 load 函数再次导入工作区,MAT 函数可以被不同的机器导入,甚至可以通过其他的程序调用; save(filename),将工作区中的所有变量保存为文件,文件名由 filename 指定。如果 filename 中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径; save(filename, var1, var2, .),保存指定的变量在 filename 指定的文件中; s

4、ave(filename, -struct, s),保存结构体 s 中全部域作为单独的变量; save(filename, -struct, s, f1, f2, .),保存结构体 s 中的指定变量; save(-regexp, expr1, expr2, .),通过正则表达式指定待保存的变量需满足的条件; save(., format),指定保存文件的格式,格式可以为 MAT 文件、ASCII 文件等。,2020/7/6,第7页,2020/7/6,第8页,MAT数据导入,MATLAB 中导入数据通常由函数 load 实现,该函数的用法为: load,如果 matlab.mat 文件存在,导入

5、 matlab.mat 中的所有变量,如果不存在,则返回 error; load filename,将 filename 中的全部变量导入到工作区中; load filename X Y Z .,将 filename 中的变量 X、Y、Z 等导入到工作区中,如果文件为 MAT 文件,在指定变量时可以使用通配符“*”; load filename -regexp expr1 expr2 .,通过正则表达式指定需要导入的变量; load -ascii filename,无论输入文件名是否包含有扩展名,将其以 ascii 格式导入,如果指定的文件不是数字文本,则返回 error; load -mat

6、 filename,无论输入文件名是否包含有扩展名,将其以 mat 格式导入,如果指定的文件不是 MAT 文件,则返回 error;,2020/7/6,第9页,Importdata 函数,MATLAB 中,另一个导入数据的常用函数为 importdata,该函数的用法为: importdata(filename),将 filename 中的数据导入到工作区中; A = importdata(filename),将 filename 中的数据导入到工作区中,并保存为变量 A; importdata(filename,delimiter),将 filename 中的数据导入到工作区中,以 deli

7、miter 指定的符号作为分隔符; 与 load 函数不同,importdata 将文件中的数据以结构体的方式导入到工作区中。,2020/7/6,第10页,MAT文件的打开,MATLAB 中可以使用 open 命令打开各种格式的文件,MATLAB 自动根据文件的扩展名选择相应的编辑器。 读者需要注意的是,open(filename.mat) 和 load(filename.mat) 的不同,前者将filename.mat 以结构体的方式打开在工作区中,后者将文件中的变量导入到工作区中,如果需要访问其中的内容,需要以不同的格式进行。,2020/7/6,第11页,2、文本文件的读写,在上一节中介绍

8、的函数和命令主要用于读写 mat 文件,在应用中,需要读写更多格式的文件,如文本文件,word 文件,xml 文件,xls 文件及图像、音视频文件等。本节介绍文本文件(txt)的读写。 MATLAB 中实现文本文件读写的函数如表所示。,2020/7/6,第12页,csvread 函数,M = csvread(filename),将文件 filename 中的数据读入,并且保存为 M,filename 中只能包含数字,并且数字之间以逗号分隔。M 是一个数组,行数与 filename 的行数相同,列数为 filename 列的最大值,对于元素不足的行,以 0 补充。 M = csvread(fil

9、ename, row, col),读取文件 filename 中的数据,起始行为 row,起始列为 col,需要注意的是,此时的行列从 0 开始。 M = csvread(filename, row, col, range),读取文件 filename 中的数据,起始行为 row,起始列为 col,读取的数据由数组 range 指定,range 的格式为:R1 C1 R2 C2,其中 R1、C1 为读取区域左上角的行和列,R2、C2为读取区域右下角的行和列。,2020/7/6,第13页,dlmread 函数,M = dlmread(filename) M = dlmread(filename,

10、 delimiter) M = dlmread(filename, delimiter, R, C) M = dlmread(filename, delimiter, range) 其中参数 delimiter 用于指定文件中的分隔符,其他参数的意义与 csvread 函数中参数的意义相同,这里不再赘述。dlmread 函数与 csvread 函数的差别在于,dlmread 函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。,2020/7/6,第14页,dlmwrite 函数,dlmwrite(filename, M),将矩阵 M 的数据写入文件 filename 中,以逗号分隔; d

11、lmwrite(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(file

12、name, M, -append, attribute-value list),叙写文件,并指定参数。 dlmwrite 函数的可用参数如表所示。,2020/7/6,第15页,textread,textscan,当文件的格式已知时,可以利用 textread 函数和 textscan 函数读入。 a, b, c, . = textread(filename, format, n) 例如,假设文件test_input.dat包含下列数据 James Jones O+ 3.51 22 Yes Sally Smith A+ 3.28 23 NO 这些数据用下面的函数读取一系列的数组。 first,

13、last, blood, gpa, age, answer = textread(test_input.dat,%s %s %s %f %d %s),2020/7/6,第16页,低级文件I/O,本节介绍一些基本的文件操作,这些操作如表所示:,2020/7/6,第17页,fprintf 函数,count = fprintf(fid, format, A, .),该语句将矩阵 A 及后面其他参数中数字的实部以 format 指定的格式写入到 fid 指定的文件中,返回写入数据的字节数。 上面语句中,参数 format 由 % 开头,共可由四个部分组成,分别为: 标记(flag),为可选部分; 宽度

14、和精度指示,为可选部分; 类型标志符,为可选部分; 转换字符,为必需部分。,2020/7/6,第18页,标记,1标记 标记用于控制输出的对齐方式,可以选择的内容如表所示。,2020/7/6,第19页,宽度和精度指示,2宽度和精度指示 用户可以通过数字指定输出数字的宽度及精度,格式为: %6f,指定数字的宽度; %6.2f,指定数字的宽度及精度; %.2f,指定数字的精度。,2020/7/6,第20页,转换字符,3转换字符 转换字符用于指定输出的符号,可以选择的内容如表所示。,2020/7/6,第21页,例 11-9 利用 fprintf 函数在显示器上输出字符串 fprintf(1,Its F

15、riday.n) Its Friday. 在该例中,利用 1 表示显示器,并且用两个单引号显示单引号,使用 n 进行换行。在格式化输出中,这类符号称为转义符。MATLAB 中的常用转义符如表所示。,2020/7/6,第22页,2020/7/6,第23页,fscanf函数,array = fscanf(fid, format) array, count = fscanf(fid, format, size) 其中fid是所要读取的文件的文件标识(fileid),format是控制如何读取的格式字符串,array是接受数据的数组,输出参数count返回从文件读取的变量的个数。参数size指定从文件

16、读取数据的数目。这个函数有以下三个类型。 n 准确地读取n个值。执行完相应的语句后,array将是一个包含有n个值的列向量 Inf 读取文件中所有值。执行完相应的语句后,array将是一个列向量,包含有从文件所有值。 n,m 从文件中精确定地读取nm个值。Array是一个nm的数组。,2020/7/6,第24页,利用界面工具导入数据,选择工作区浏览器工具栏中的“Import Data”,选择待导入的文件,这里我们选择了一个文本文件,其内容为逗号分隔的数字,打开窗口如图所示。,2020/7/6,第25页,在该窗口中选择分隔符号,设置导入数据的起始行。在左侧窗口中显示的是文件中的内容,右侧窗口中是导入数据的预览。设置完成后,点击 Next,进入下一界面。在该界面中可以设置导入方式,预览导入的变量,如图所示。,2020/7/6,第26页,3、Excel文件的读写,xlsfinfo: 检查文件是否包含Excel表格 xlswrite: xlsread:,2020/7/6,第27页,4、图像文件的读写,2020/7/6,第28页,图像格式其它情况,savea

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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