一章文件输入输出

上传人:cl****1 文档编号:568774758 上传时间:2024-07-26 格式:PPT 页数:42 大小:287KB
返回 下载 相关 举报
一章文件输入输出_第1页
第1页 / 共42页
一章文件输入输出_第2页
第2页 / 共42页
一章文件输入输出_第3页
第3页 / 共42页
一章文件输入输出_第4页
第4页 / 共42页
一章文件输入输出_第5页
第5页 / 共42页
点击查看更多>>
资源描述

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

1、第第5章章 文件文件I/Ou高级文件的I/O操作p读写MAT文件或者ASCIIp读写TXT文件p读写EXCEL文件p读写图像文件u低级文件的I/O操作p打开和关闭文件p读写二进制文件p读写格式化的文本文件p控制文件指针位置p几点重要补充酗锅缎啄蛆海歪编祖郎祈颜唉蝇茫墙调糕徊蓝丙融舍羽寞瘟敷羹纵垣润哉一章文件输入输出一章文件输入输出7/26/20241几个概念几个概念l数据输入和输出(数据输入和输出(I/O)输入:从磁盘文件获得数据,加载到工作空间。输入:从磁盘文件获得数据,加载到工作空间。输出:从工作空间变量保存到文件中。输出:从工作空间变量保存到文件中。l高级文件和低级文件高级文件和低级文件

2、I/O操作操作高级:针对不同的数据格式文件,提供不同的高级:针对不同的数据格式文件,提供不同的I/O函数,函数,有现成的函数供使用,仅需少量编程。有现成的函数供使用,仅需少量编程。低级:使用文件标识符可访问任何类型的数据文件,低级:使用文件标识符可访问任何类型的数据文件,更加灵活地完成相对特殊的任务,需要复杂编程更加灵活地完成相对特殊的任务,需要复杂编程l二进制文件和文本文件(二进制文件和文本文件(ASCII文件)文件)菌禹吕宽颈抠返跃顶强焊锤潭腾航劝宝横熄坎矽帧泌虚钨照回猾演捶砷脓一章文件输入输出一章文件输入输出7/26/20242二进制文件和文本文件二进制文件和文本文件l文本文件将文件看作

3、是由字节文本文件将文件看作是由字节(byte)组成的,每个字组成的,每个字节节(bit)的最高位都是的最高位都是0,文本文件使用了一个字节中,文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了中的所有位都用上了l打开方式不同,对于这些打开方式不同,对于这些0和和1的处理也就不同。按照的处理也就不同。按照文本方式打开时会进行转换,将每个字节转换成文本方式打开时会进行转换,将每个字节转换成ASCII码,以二进制方式打开则不会进行任何的转换码,以二进制方式打开则不会进行任何的转换l在记事本中进行文本编辑的时进行编辑的

4、最小单位是在记事本中进行文本编辑的时进行编辑的最小单位是字节;而对二进制文件编辑最小单位则是位字节;而对二进制文件编辑最小单位则是位(bit),不会直接通过手工的方式对二进制文件进行编辑不会直接通过手工的方式对二进制文件进行编辑频飘侄抹饲评韩桐柳堰茎犹萎旬之啤况粱策杏瞅域丙彦樱锈贼萄僵绢磕从一章文件输入输出一章文件输入输出7/26/202431、MAT文件的读写文件的读写 l文件的存储文件的存储 l数据导入数据导入 l文件的打开文件的打开 以彰颂辫唇窍盯领棘国津承拂整积垛瘟拔巴鄙抓欺嫉究手母弹羹律惰魔卯一章文件输入输出一章文件输入输出7/26/20244MAT文件的存储文件的存储 l保存整个工

5、作区保存整个工作区点击点击“File”菜单中的菜单中的“Save Workspace As”选项,或者点击工作区浏览器工具栏中的选项,或者点击工作区浏览器工具栏中的“Save”,可以将工作区中的变量保存为,可以将工作区中的变量保存为 MAT 文文件。件。l保存工作区中的变量保存工作区中的变量在工作区浏览器中,右键单击需要保存的变量名,在工作区浏览器中,右键单击需要保存的变量名,选择选择“Save As”,将该变量保存为,将该变量保存为 MAT 文件。文件。l利用利用 save 命令保存命令保存该命令可以保存工作区,或工作区中任何指定文该命令可以保存工作区,或工作区中任何指定文件。件。掉晚苞项愁

6、只惶更栖讳脉瀑担柏蓟憎粕萌糜间镶方拂獭赋肤舞硕辑庶粘碾一章文件输入输出一章文件输入输出7/26/20245save命令命令lsave命令的调用格式为:命令的调用格式为:save,将工作区中的所有变量保存在当前工作区中的文件中,文件名为,将工作区中的所有变量保存在当前工作区中的文件中,文件名为 matlab.mat,MAT 文件可以通过文件可以通过 load 函数再次导入工作区,函数再次导入工作区,MAT 函函数可以被不同的机器导入,甚至可以通过其他的程序调用;数可以被不同的机器导入,甚至可以通过其他的程序调用;save(filename),将工作区中的所有变量保存为文件,文件名由,将工作区中的

7、所有变量保存为文件,文件名由 filename 指定。如果指定。如果 filename 中包含路径,则将文件保存在相应目录中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径;下,否则默认路径为当前路径;save(filename, var1, var2, .),保存指定的变量在,保存指定的变量在 filename 指定指定的文件中;的文件中;save(filename, -struct, s),保存结构体,保存结构体 s 中全部域作为单独的变量;中全部域作为单独的变量;save(filename, -struct, s, f1, f2, .),保存结构体,保存结构体 s 中的指定变中

8、的指定变量;量;save(-regexp, expr1, expr2, .),通过正则表达式指定待保存的变量,通过正则表达式指定待保存的变量需满足的条件;需满足的条件;save(., format),指定保存文件的格式,格式可以为,指定保存文件的格式,格式可以为 MAT 文件、文件、ASCII 文件等。文件等。预恬蛛盲甲臻秃赖肌揩尝淀胃绰伊县赌堪葛比摊浅婿磨退束星挑遇村谁伏一章文件输入输出一章文件输入输出7/26/20246函数调用格式函数调用格式函数格式说明函数格式说明save将工作空间所有变量保存在当前目录下文件将工作空间所有变量保存在当前目录下文件matlab.mat内内save fn或

9、或save(fn)将工作空间所有变量保存在当前目录下文件将工作空间所有变量保存在当前目录下文件fn.mat内内save fn x1 x2 xn将变量将变量x1 x2xn保存到当前目录下文件保存到当前目录下文件fn.matsave(fn,-struct,s)保存结构体保存结构体 s 中全部域作为单独的变量中全部域作为单独的变量save(fn, v1, v2, .)保存指定的变量在保存指定的变量在 fn 指定的文件中指定的文件中save(fn, -struct, s, f1, f2, .)保存结构体保存结构体 s 中的指定变量中的指定变量save(-regexp, expr1, expr2, .)

10、,通过正则表达式指定待保存的变量需满足的条件通过正则表达式指定待保存的变量需满足的条件save(., format)指定保存文件的格式,格式可以为指定保存文件的格式,格式可以为 MAT 文件、文件、ASCII 文件等。文件等。舒拖峻竞距屋英瓤驾董属困铡镍赛抿杂呛输绑箱握散遇孕蓄神撮歼琶萌逝一章文件输入输出一章文件输入输出7/26/20247MAT数据导入数据导入 MATLAB 中导入数据通常由函数中导入数据通常由函数 load 实现,该函数的用实现,该函数的用法为:法为:load,如果,如果 matlab.mat 文件存在,导入文件存在,导入 matlab.mat 中的所有变中的所有变量,如果

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

12、包含有扩展名,将其,无论输入文件名是否包含有扩展名,将其以以 ascii 格式导入,如果指定的文件不是数字文本,则返回格式导入,如果指定的文件不是数字文本,则返回 error;load -mat filename,无论输入文件名是否包含有扩展名,将其以,无论输入文件名是否包含有扩展名,将其以 mat 格式导入,如果指定的文件不是格式导入,如果指定的文件不是 MAT 文件,则返回文件,则返回 error;下攘曳巴助砾龙纂挺绕损舞诵航途椭鬃刻集肺帘烛拌馒院棕拈机丘事咒娃一章文件输入输出一章文件输入输出7/26/20248Importdata 函数函数lMATLAB 中,另一个导入数据的常用函数为中

13、,另一个导入数据的常用函数为 importdata,该函数的用法为:,该函数的用法为:importdata(filename),将,将 filename 中的数据导入中的数据导入到工作区中;到工作区中;A = importdata(filename),将,将 filename 中的数据导中的数据导入到工作区中,并保存为变量入到工作区中,并保存为变量 A;importdata(filename,delimiter),将,将 filename 中中的数据导入到工作区中,以的数据导入到工作区中,以 delimiter 指定的符号作为指定的符号作为分隔符;分隔符;l与与 load 函数不同,函数不同,

14、importdata 将文件中的数据将文件中的数据以结构体的方式导入到工作区中。以结构体的方式导入到工作区中。葛诸埔咆迎中遇西擦刻浆贝际犹庙腻两石雄灸团湍嘘侧崇卉交缉乡默骚揣一章文件输入输出一章文件输入输出7/26/20249MAT文件的打开文件的打开 lMATLAB 中可以使用中可以使用 open 命令打开各种命令打开各种格式的文件,格式的文件,MATLAB 自动根据文件的扩自动根据文件的扩展名选择相应的编辑器。展名选择相应的编辑器。l读者需要注意的是,读者需要注意的是,open(filename.mat) 和和 load(filename.mat) 的不同,前者将的不同,前者将filena

15、me.mat 以结构体的方式打开在工作以结构体的方式打开在工作区中,后者将文件中的变量导入到工作区区中,后者将文件中的变量导入到工作区中,如果需要访问其中的内容,需要以不中,如果需要访问其中的内容,需要以不同的格式进行。同的格式进行。确沧嘿词帧往窟烙看炬聂刊滓睛锤瓦贿沃涛牢沈士颇汰禁褪寺棋痒氢攻煎一章文件输入输出一章文件输入输出7/26/2024102、文本文件的读写、文本文件的读写 l在上一节中介绍的函数和命令主要用于读写在上一节中介绍的函数和命令主要用于读写 mat 文件,在应用中,需要读写更多格式的文件,如文件,在应用中,需要读写更多格式的文件,如文本文件,文本文件,word 文件,文件

16、,xml 文件,文件,xls 文件及图文件及图像、音视频文件等。本节介绍文本文件(像、音视频文件等。本节介绍文本文件(txt)的)的读写。读写。lMATLAB 中实现文本文件读写的函数如表所示。中实现文本文件读写的函数如表所示。函数功能csvread读入以逗号分隔的数据csvwrite将数据写入文件,数据间以逗号分隔dlmread将以 ASCII 码分隔的数值数据读入到矩阵中dlmwrite将矩阵数据写入到文件中,以 ASCII 分隔textread从文本文件中读入数据,将结果分别保存textscan从文本文件中读入数据,将结果保存为单元数组害输灶氧萧侈恭勤讯摊募著触碗愉官砒蚕听寡叼薯乎瞄箭癣

17、桨庚冲锐搐哀一章文件输入输出一章文件输入输出7/26/202411csvread 函数函数 l M = csvread(filename),将文件,将文件 filename 中的数据读中的数据读入,并且保存为入,并且保存为 M,filename 中只能包含数字,并且数中只能包含数字,并且数字之间以逗号分隔。字之间以逗号分隔。M 是一个数组,行数与是一个数组,行数与 filename 的的行数相同,列数为行数相同,列数为 filename 列的最大值,对于元素不足列的最大值,对于元素不足的行,以的行,以 0 补充。补充。lM = csvread(filename, row, col),读取文件,

18、读取文件 filename 中的数据,起始行为中的数据,起始行为 row,起始列为,起始列为 col,需要注意的是,需要注意的是,此时的行列从此时的行列从 0 开始。开始。lM = csvread(filename, row, col, range),读取文件,读取文件 filename 中的数据,起始行为中的数据,起始行为 row,起始列为,起始列为 col,读取,读取的数据由数组的数据由数组 range 指定,指定,range 的格式为:的格式为:R1 C1 R2 C2,其中,其中 R1、C1 为读取区域左上角的行和列,为读取区域左上角的行和列,R2、C2为读取区域右下角的行和列。为读取区

19、域右下角的行和列。尚淳蔼玉壮稗莎实弃脉叶耗台例磕扩沿疯媳蔚楚艾嫡绝才籍篇非规萨迢蜜一章文件输入输出一章文件输入输出7/26/202412dlmread 函数函数 lM = dlmread(filename)lM = dlmread(filename, delimiter)lM = dlmread(filename, delimiter, R, C)lM = dlmread(filename, delimiter, range)l其中参数其中参数 delimiter 用于指定文件中的分隔符,用于指定文件中的分隔符,其他参数的意义与其他参数的意义与 csvread 函数中参数的意义相函数中参数的意

20、义相同,这里不再赘述。同,这里不再赘述。dlmread 函数与函数与 csvread 函函数的差别在于,数的差别在于,dlmread 函数在读入数据时可以函数在读入数据时可以指定分隔符,不指定时默认分隔符为逗号。指定分隔符,不指定时默认分隔符为逗号。哮肖遵聊犯畜腐巩吞轧埠溺黎钮骑牟钠酱途职主挚痪辅锰付滋埔困傻酒新一章文件输入输出一章文件输入输出7/26/202413dlmwrite 函数函数 ldlmwrite(filename, M),将矩阵,将矩阵 M 的数据写入文件的数据写入文件 filename 中,中,以逗号分隔;以逗号分隔;ldlmwrite(filename, M, D),将矩阵

21、,将矩阵 M 的数据写入文件的数据写入文件 filename 中,采用指定的分隔符分隔数据,如果需要中,采用指定的分隔符分隔数据,如果需要 tab 键,可以用键,可以用“t”指指定;定;ldlmwrite(filename, M, D, R, C),指定写入数据的起始位置;,指定写入数据的起始位置;ldlmwrite(filename, M, attribute1, value1, attribute2, value2, .),指定任意数目的参数,可以指定的参数见下表;,指定任意数目的参数,可以指定的参数见下表;ldlmwrite(filename, M, -append),如果,如果 fil

22、ename 指定的文件存在,指定的文件存在,在文件后面写入数据,不指定时则覆盖原文件;在文件后面写入数据,不指定时则覆盖原文件;ldlmwrite(filename, M, -append, attribute-value list),叙写文件,叙写文件,并指定参数。并指定参数。ldlmwrite 函数的可用参数如表所示。函数的可用参数如表所示。参数名功能delimiter用于指定分隔符newline用于指定换行符,可以选择“pc”或者“unix”roffset行偏差,指定文件第一行的位置,roffset 的基数为 0coffset列偏差,指定文件第一列的位置,coffset 的基数为 0pr

23、ecision指定精确度,可以指定精确维数,或者采用 c 语言的格式,如“%10.5f”哇眷肖壳溺悲疾漏扑奴苫发秧厢随险促寝涨禾搽谭缕付扔树裔淌亮帧逛烷一章文件输入输出一章文件输入输出7/26/202414textread,textscan l当文件的格式已知时,可以利用当文件的格式已知时,可以利用 textread 函数和函数和 textscan 函数读入。函数读入。a, b, c, . = textread(filename, format, n) 例如,假设文件test_input.dat包含下列数据 James Jones O+ 3.51 22 Yes Sally Smith A+ 3

24、.28 23 NO 这些数据用下面的函数读取一系列的数组。 first, last, blood, gpa, age, answer = textread(test_input.dat,%s %s %s %f %d %s) 治便庆动法诧汽扑钦钞丑躺盈关粮噶产狐拘呻垦涕婶犹闲泪勺拴腺惺普贴一章文件输入输出一章文件输入输出7/26/202415低级文件低级文件I/O l本节介绍一些基本的文件操作,这些操作如表所本节介绍一些基本的文件操作,这些操作如表所示示:函数功能fclose关闭打开的文件feof判断是否为文件结尾ferror文件输入输出中的错误查找fgetl读入一行,忽略换行符fgets读入一

25、行,直到换行符fopen打开文件,或者获取打开文件的信息fprintf格式化输入数据到文件fread从文件中读取二进制数据frewind将文件的位置指针移至文件开头位置fscanf格式化读入fseek设置文件位置指针ftell文件位置指针fwrite向文件中写入数据毅乌速畅占沃而晓昏轩延涛翰疯顺割虚曾春喜量瘟循震蓄俄舞淳坠拘谰厘一章文件输入输出一章文件输入输出7/26/202416fprintf 函数函数 lcount = fprintf(fid, format, A, .),该语句将矩,该语句将矩阵阵 A 及后面其他参数中数字的实部以及后面其他参数中数字的实部以 format 指指定的格式写

26、入到定的格式写入到 fid 指定的文件中,返回写入数指定的文件中,返回写入数据的字节数。据的字节数。l上面语句中,参数上面语句中,参数 format 由由 % 开头,共可由四开头,共可由四个部分组成,分别为:个部分组成,分别为:标记(标记(flag),为可选部分;),为可选部分;宽度和精度指示,为可选部分;宽度和精度指示,为可选部分;类型标志符,为可选部分;类型标志符,为可选部分;转换字符,为必需部分。转换字符,为必需部分。谗文膀印棕囊夏虱孤烛鼻播寿诊院汐裕忽菊喧寨循鹤炮鹊亥居踢毅倘预充一章文件输入输出一章文件输入输出7/26/202417标记标记l1标记标记l标记用于控制输出的对齐方式,可以

27、选择的内容标记用于控制输出的对齐方式,可以选择的内容如表所示。如表所示。 函数函数功能功能示例示例负号(号(-)在参数左在参数左侧进行判行判别%-5.2d加号加号(+)在数字前添加符号在数字前添加符号%+5.2d空格空格在数字前插入空格在数字前插入空格% 5.2d0在数字前插入在数字前插入 0%05.2d哑辱寸吾拧泽蛆烯怖羔版湍稼策哑宾搏获珠捏轮拿阮出在咀衅酞识料拴循一章文件输入输出一章文件输入输出7/26/202418宽度和精度指示宽度和精度指示l2宽度和精度指示宽度和精度指示l用户可以通过数字指定输出数字的宽度及用户可以通过数字指定输出数字的宽度及精度,格式为:精度,格式为:%6f,指定数

28、字的宽度;,指定数字的宽度;%6.2f,指定数字的宽度及精度;,指定数字的宽度及精度;%.2f,指定数字的精度。,指定数字的精度。帧刑声醇牙股改蜗女味彼侈啦风健纺团扣摆蝴莽臀泛雍满衷稼逞辕菜兔诸一章文件输入输出一章文件输入输出7/26/202419转换字符转换字符l3转换字符转换字符l转换字符用于指定输出的符号,可以选择的内容转换字符用于指定输出的符号,可以选择的内容如表所示。如表所示。标志符志符意意义%c输出出单个字符个字符%d输出有符号十出有符号十进制数制数%e采用指数格式采用指数格式输出,采用小写字母出,采用小写字母 e,如:,如:3.1415e+00%E采用指数格式采用指数格式输出,采

29、用大写字母出,采用大写字母 E,如:,如:3.1415E+00%f以定点数的格式以定点数的格式输出出%g%e 及及 %f 的更的更紧凑的格式,不凑的格式,不显示数字中无效的示数字中无效的 0%G与与 %g 相同,但是使用大写字母相同,但是使用大写字母 E%i有符号十有符号十进制数制数%o无符号八无符号八进制数制数%s输出字符串出字符串%u无符号十无符号十进制数制数%x十六十六进制数(使用小写字母制数(使用小写字母 af)%X十六十六进制数(使用大写字母制数(使用大写字母 AF)娥田赚闽屿妄腾铆鉴慌避搏俭恬祈腑戴祭匹焕娄室营薪索淀持弦县弄累睛一章文件输入输出一章文件输入输出7/26/202420

30、l例例 11-9 利用利用 fprintf 函数在显示器上输出字符串函数在显示器上输出字符串 fprintf(1,Its Friday.n)Its Friday.l在该例中,利用在该例中,利用 1 表示显示器,并且用两个单引表示显示器,并且用两个单引号显示单引号,使用号显示单引号,使用 n 进行换行。在格式化输出进行换行。在格式化输出中,这类符号称为转义符。中,这类符号称为转义符。MATLAB 中的常用转中的常用转义符如表所示。义符如表所示。转义符符功能功能b退格退格f表格填充表格填充n换行符行符r回回车ttab,反斜,反斜线 或或 ,单引号引号%,百分号,百分号琴译划乒生轧钟钩城奋势庇惦劈谋

31、责腾栈埂耙紧董孰歉纠阿龄坎评氏荣吞一章文件输入输出一章文件输入输出7/26/202421边依绅碾胺彪按抨查央贤俺屈佬勤湍噪辽瀑擅另婴蜘惑优讳勘菊蔬瓦窿盖一章文件输入输出一章文件输入输出7/26/202422fscanf函数 larray = fscanf(fid, format) larray, count = fscanf(fid, format, size) l其中其中fid是所要读取的文件的文件标识(是所要读取的文件的文件标识(fileid),),format是控制如何读取的格式字符串,是控制如何读取的格式字符串,array是接受是接受数据的数组,输出参数数据的数组,输出参数count返

32、回从文件读取的变量返回从文件读取的变量的个数。参数的个数。参数size指定从文件读取数据的数目。这个指定从文件读取数据的数目。这个函数有以下三个类型。函数有以下三个类型。 n 准确地读取准确地读取n个值。执行完相应的语句后,个值。执行完相应的语句后,array将是一将是一个包含有个包含有n个值的列向量个值的列向量 Inf 读取文件中所有值。执行完相应的语句后,读取文件中所有值。执行完相应的语句后,array将是将是一个列向量,包含有从文件所有值。一个列向量,包含有从文件所有值。 n,m 从文件中精确定地读取从文件中精确定地读取nm个值。个值。Array是一个是一个nm的数组。的数组。 棉拥惟柑

33、低烬驱瓜艘瘸饥足硫萧饮账韧沤抚挫讹趋涯粥婪昨俊惩虱硝伎劝一章文件输入输出一章文件输入输出7/26/202423利用界面工具导入数据利用界面工具导入数据 l选择工作区浏览器工具栏中的选择工作区浏览器工具栏中的“Import Data”,选择待导入的文件,这里我们选择,选择待导入的文件,这里我们选择了一个文本文件,其内容为逗号分隔的数了一个文本文件,其内容为逗号分隔的数字,打开窗口如图所示。字,打开窗口如图所示。抱涣曲吱哭魂滚恿讣缺鄂例哥条窖真点池姆是菌入邻洲辆痪子籍式答恭腆一章文件输入输出一章文件输入输出7/26/202424l在该窗口中选择分隔符号,设置导入数据在该窗口中选择分隔符号,设置导入

34、数据的起始行。在左侧窗口中显示的是文件中的起始行。在左侧窗口中显示的是文件中的内容,右侧窗口中是导入数据的预览。的内容,右侧窗口中是导入数据的预览。设置完成后,点击设置完成后,点击 Next,进入下一界面。,进入下一界面。在该界面中可以设置导入方式,预览导入在该界面中可以设置导入方式,预览导入的变量,如图所示。的变量,如图所示。淘梢薪妖沙写慧期笑沥冠妥窥粘错都告搀稚旬陆遂为窑托北柔色笑雕据翼一章文件输入输出一章文件输入输出7/26/2024253、Excel文件的读写文件的读写lxlsfinfo: 检查文件是否包含检查文件是否包含Excel表格表格lxlswrite:lxlsread:敷吐晾首

35、杉靳凋励促矮哆攻领筑奋磕裁鹃灰伦叶防陌伤黑贵涝寡舍哲窟馈一章文件输入输出一章文件输入输出7/26/2024264、图像文件的读写、图像文件的读写函数函数调用格式调用格式函数说明函数说明imreadA=imread(fn,fmt)X,map=imread(fn,fmt)=imread(fn)fn,图像文件名,图像文件名,fmt图像文件图像文件格式,如果缺省,会根据扩展格式,如果缺省,会根据扩展名识别图像格式名识别图像格式imwriteimwrite(A,fn,fmt)imwrite(X,map,fn,fmt)Imwrite(,fn)以格式以格式fmt写图像数据写图像数据A到图到图像文件像文件fn

36、。A可为可为mn3(彩(彩色图像)数组。如色图像)数组。如fmt缺省,缺省,根据根据fn扩展名识别扩展名识别imfinfoInfo=imfinfo(fn,fmt)Info=imfinfo(fn)欲予幂少瞪壶闽殴断驼垦忠叼蒂丘凡斜猎惑仲州忘唤卞颠卖责饶桌容磨缀一章文件输入输出一章文件输入输出7/26/202427图像格式其它情况图像格式其它情况lsaveaslprint(h,format,fn)limshowlimage恭唇摸谆女晴巍癸衅馒烤糊痞气嚎厨伤痛锋函税娟厚叁搓熏铅憎鞋腿隶贝一章文件输入输出一章文件输入输出7/26/202428低级文件低级文件I/O操作操作l1、打开和关闭文件、打开和关

37、闭文件l2、读写二进制文件、读写二进制文件l3、读写格式化的文本文件、读写格式化的文本文件l4、数据文件的定位、数据文件的定位策淳海扫都沟窒弯琳型名阶祈困帮梯诞特图泰电旨嗅志俊煮怪泰揭嗡戎簿一章文件输入输出一章文件输入输出7/26/2024291、文件的打开与关闭、文件的打开与关闭l文件的打开文件的打开fopen函数的调用格式为:函数的调用格式为:fid= fopen(文件名,打开方式文件名,打开方式)打开方式有:打开方式有:r表示对打开的文件读数据,表示对打开的文件读数据,w表示对打开的文件写数据,表示对打开的文件写数据,a表示表示在打开的文件末尾添加数据。在打开的文件末尾添加数据。fid用

38、于存储文件句柄值,句柄值用来标识该用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对该数据文数据文件,其他函数可以利用它对该数据文件进行操作。件进行操作。把籽漆赡附气赠屑歹纶晓视锄出积项馏戏唇娄疫挚翠否癸瓮犯保咽纶孺扯一章文件输入输出一章文件输入输出7/26/202430文件数据格式文件数据格式有两种形式,一是二进制文件,二是文本文有两种形式,一是二进制文件,二是文本文件。在打开文件时需要进一步指定文件格件。在打开文件时需要进一步指定文件格式类型,即指定是二进制文件还是文本文式类型,即指定是二进制文件还是文本文件。件。沛氓蹲峨榔瞳甭烂蔚仕菇刹宴苦羊卢擎夏弓踢墅碴镊拔暴雅槽椎辰钙

39、废终一章文件输入输出一章文件输入输出7/26/202431文件的关闭文件的关闭n文件在进行完读、写等操作后,应及时关文件在进行完读、写等操作后,应及时关闭。关闭文件用闭。关闭文件用fclose函数,调用格式为:函数,调用格式为:sta=fclose(fid)该函数关闭该函数关闭fid所表示的文件。所表示的文件。sta表示关闭表示关闭文件操作的返回代码,若关闭成功,返回文件操作的返回代码,若关闭成功,返回0,否则返回,否则返回1。折偶皮帝摹虾柜索析社皑阐椭圾越帽靶洋夸正斩咬唁锥燃屎殉膨浦毗蔚舜一章文件输入输出一章文件输入输出7/26/2024322、二进制文件的读写操作、二进制文件的读写操作n读

40、二进制文件读二进制文件fread 函数可以读取二进制文件的数据,并函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:将数据存入矩阵。其调用格式为:A,COUNT=fread(fid,size, precision)其中其中A用于存放读取的数据,用于存放读取的数据,COUNT返回返回所读取的数据元素个数,所读取的数据元素个数,fid为文件句柄,为文件句柄,size为可选项,若不选用则读取整个文件内为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值:容,若选用则它的值可以是下列值:内烘办扭总须羹矗扦架蚀巾铸碱而瑰倪哦路鬼污槐挎首裂冷鸳凭核危勉谣一章文件输入输出一章文件输入

41、输出7/26/202433(1) N表示读取表示读取 N个元素到一个列向量。个元素到一个列向量。(2) Inf表示读取整个文件。表示读取整个文件。(3) M,N表示读数据到表示读数据到MN的矩阵中,数的矩阵中,数据按列存放。据按列存放。precision代表读写数据的类型代表读写数据的类型哩河刘评邢窑辕蓝兼巨男兴炊筑鲁溅畏徒卢翟吱匀秆楷痹替酱镍喉赖罩役一章文件输入输出一章文件输入输出7/26/202434写二进制文件写二进制文件fwrite 函数按照指定的数据类型将矩阵中的元函数按照指定的数据类型将矩阵中的元素写入到文件中。其调用格式为:素写入到文件中。其调用格式为:COUNT=fwrite

42、(fid, A, precision)其中其中COUNT返回所写的数据元素个数,返回所写的数据元素个数,fid为文件句柄,为文件句柄,A用来存放写入文件的数据,用来存放写入文件的数据,precision用于控制所写数据的类型,其形式用于控制所写数据的类型,其形式与与fread函数相同。函数相同。鹅秽阔纬阮怂绕官扬主秘驮添鞭迢扰富呵逛眺涎敌抹今祁揩腮嫡插仲勃免一章文件输入输出一章文件输入输出7/26/202435例例4-1 建立一数据文件建立一数据文件magic5.dat,用于存,用于存放放5阶魔方阵。阶魔方阵。程序如下:程序如下:fid=fopen(magic5.dat,w);cnt=fwri

43、te(fid,magic(5),int32);fclose(fid);妇箍碉粳单迭露陛贸丑畔瞎垛叫为裔吧淮选替赂终携仇私大佰跺凝妒民兢一章文件输入输出一章文件输入输出7/26/2024363、格式化文本文件的读写操作、格式化文本文件的读写操作l读文本文件读文本文件fscanf 函数的调用格式为:函数的调用格式为:A,COUNT= fscanf (fid, format, size)其中其中A用以存放读取的数据,用以存放读取的数据,COUNT返回返回所读取的数据元素个数。所读取的数据元素个数。fid为文件句柄。为文件句柄。format用以控制读取的数据格式,由用以控制读取的数据格式,由%加上加上

44、格式符组成,常见的格式符有格式符组成,常见的格式符有d,f,c,s。size为可选项,决定矩阵为可选项,决定矩阵A中数据的排列形中数据的排列形式。式。匪证诊形昧阑亩隆认兴坐势赫笋押冠御韭乏择密苦阁讣暖瑶摈钡险吓尔纱一章文件输入输出一章文件输入输出7/26/202437l写文本文件写文本文件fprintf 函数的调用格式为:函数的调用格式为:COUNT= fprintf(fid, format, A)其中其中A存放要写入文件的数据。先按存放要写入文件的数据。先按format指定的格式将数据矩阵指定的格式将数据矩阵A格式化,然后写入格式化,然后写入到到fid所指定的文件。格式符与所指定的文件。格式

45、符与fscanf函数相函数相同。同。措雷药性曲至渠纺灸结粮汽盈擒谎逃撞迫泌潦交咯肘呻酒遍生务干算谋酣一章文件输入输出一章文件输入输出7/26/2024384、数据文件定位、数据文件定位MATLAB提供了与文件定位操作有关的函提供了与文件定位操作有关的函数数fseek和和ftell。fseek函数用于定位文件函数用于定位文件位置指针,其调用格式为:位置指针,其调用格式为:status=fseek(fid, offset, origin)其中其中fid为文件句柄,为文件句柄,offset表示位置指针表示位置指针相对移动的字节数,相对移动的字节数,origin表示位置指针表示位置指针移动的参照位置。

46、若定位成功,移动的参照位置。若定位成功,status返返回值为回值为0,否则返回值为,否则返回值为1。谷九灵渔蒸蒋椅安年后螟鹰龄伐藻园熬延靖矩没宴融租佬峰耘蔷慕帚邱械一章文件输入输出一章文件输入输出7/26/202439ftell函数返回文件指针的当前位置,其调用函数返回文件指针的当前位置,其调用格式为:格式为:position=ftell (fid)返回值为从文件开始到指针当前位置的字返回值为从文件开始到指针当前位置的字节数。若返回值为节数。若返回值为1表示获取文件当前位表示获取文件当前位置失败。置失败。直翟赏鸦类砍疮另趟热懦痕桃哎晦拜纶鲜滤锄述挤捌该耶撰蛊书砸熏码族一章文件输入输出一章文件

47、输入输出7/26/202440几点重要的补充几点重要的补充1. 连续读取多个文件的数据,并存放在一个矩阵中:连续读取多个文件的数据,并存放在一个矩阵中:(1) 首先是如何读取文件名:首先是如何读取文件名:方法一:方法一: filename=dir(*.jpg);那么第那么第i个文件的文件名就可以表示为个文件的文件名就可以表示为 filename(i).name文件数量为:文件数量为:length(filename)秦稠萎织唁芥驻悟要恕茵勒儡憾藕轮溯潭钱殴表毙过郴昔茄缨洛酚慨渔烧一章文件输入输出一章文件输入输出7/26/202441l科学数据保存格式科学数据保存格式HdfNetcdf(nc)硅绷接汇迫芝絮际劈萝他僳俘饱推考吠何真侄润滞城栈跟弱箕蛹橙读枚职一章文件输入输出一章文件输入输出7/26/202442

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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