六、MATLAB入门—文件操作

文章目录

前言

一、文件的打开与关闭

1.1、文件的打开

1.2、文件的关闭

二、文件的读写操作

2.1、二进制文件的读写操作

2.2、文本文件的读写操作

三、数据文件定位

总结


前言

        经过前面一段时间的学习,相信大家已经能较为熟练的在MATLAB软件中进行简单的程序设计了,那么今天就来学习一下MATLAB文件操作,利用MATLAB程序与文本文件进行功能交互。

        文件操作是一种很重要的输入输出方式,即从数据文件中读取数据或者将计算结果写入数据文件。MATLAB提供了一系列底层输入输出函数,专门用于文件操作。MATLAB文件操作主要有3个步骤,首先是打开文件,然后是对文件进行读或者写操作,最后要关闭文件。


一、文件的打开与关闭

1.1、文件的打开

        在进行文件的读写操作之前,首先要用fopen函数打开文件,并指定允许对该文件进行的操作,也就是打开方式。

fopen函数的调用格式为:

                        fid = fopen(文件名,打开方式)

例如,打开一个名为data.txt的文件,并进行读操作,其命令为:

        fid = fopen('data.txt','r')

        其中fid是用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对给数据文件进行操作。如果句柄值大于0,则说明文件打开成功;若打开文件失败后,fid返回值为-1,此时不能对文件进行任何操作。但是有3个标准代码文件,不需要打开就可以直接使用,句柄值分别为fid = 0,代表标准输入文件,一般指键盘;fid = 1表示标准输出文件,通常为显示器;fid = 2表示错误输出信息文件,一般也为显示器。

        文件名用字符串形式,表示待打开的数据文件。

常见的打开方式有:

① 'r' :表示打开文件读数据,被打开的文件必须存在;

② 'w':表示对打开的文件写数据,若文件不存在,系统会自动建立新文件;

③ 'a' :表示在打开的文件末尾添加数据,若文件不存在,系统会自动建立新文件;

④ 'r+' :表示对打开的文件既可以读数据,又可以写数据,文件必须存在;

⑤ 'w+':表示对打开的文件既可以读数据,又可以写数据,若文件不存在,建立新文件;

⑥ 'a+' :表示对打开的文件既可以读数据,又可以写数据,还可以在文末添加数据,若文件不存在,系统会自动建立新文件。

        注意:文本数据格式有两种形式:二进制文件和文本文件;fopen默认打开的是二进制文件,如果要打开文本文件,就需要在打开方式字符串后面加一个字符t,如'rt‘就表以只读方式打开文本格式的数据文件。

1.2、文件的关闭

        文件在进行完读、写等操作后,应及时关闭。

关闭文件用fclose函数,其调用格式为:

                        sta = fclose(fid)

        该函数关闭fid所表示的文件,sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。

二、文件的读写操作

2.1、二进制文件的读写操作

1、读二进制文件

        fread函数可以读取二进制文件的数据,并将数据存入矩阵。

fread的调用格式为:[A,COUNT] = fread(fid,size,precision)

        其中A用于存放读取的数据,COUNT返回所读取的数据个数,fid为文件句柄,size为可选项,若不选用则读取整个文件内容,若选用则它的值可以为:

        ① N:表示读取N个元素到一个列向量;

        ② Inf:表示读取整个文件;

        ③ [M,N]:表示读取数据到M*N的矩阵中,数据按列存放。

precision代表读写数据的类型,常用的数据类型如下:

标识符

说明

标识符

说明

‘char’

有符号字符

‘int’

32位有符号整数

‘uchar’

无符号字符

‘uint’

32位无符号整数

‘schar’

有符号字符

‘float’

32位浮点数

‘int8’

8位有符号整数

‘float32’

32位浮点数

‘int16’

16位有符号整数

‘float64’

64位浮点数

‘int32’

32位有符号整数

‘long’

32位或64位有符号整数

‘int64’

64位有符号整数

‘ulong’

32位或64位无符号整数

‘uint8’

8位无符号整数

‘short’

16位有符号整数

‘uint16’

16位无符号整数

‘ushort’

16位无符号整数

‘uint32’

32位无符号整数

‘double’

64位双类型数

‘uint64’

64位无符号整数

         以上例子就是以读的方式打开数据文件std.dat,然后按长整型数据格式读取该文件的前100个数据放入向量A,最后关闭文件。

2、写二进制文件

        fwrite函数可以按照指定的数据类型将矩阵中的元素写入到文件中。

fwrite函数的调用格式为:

                COUNT = fwrite(fid,A,precision)

        其中COUNT返回所写的数据元素个数,fid为文件句柄,A用来存放写入文件的数据,precision用于控制所写数据的类型,其形式与fread函数相同。

        以上例子所表述的就是将矩阵X中的数据以浮点数的格式写入data.bin文件。 

2.2、文本文件的读写操作

1、读文本文件

        fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。

fscanf函数的调用格式为:

                [A,COUNT] = fscanf(fid,format,size)

        其中A用以存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用以控制读取的数据个数,由%加上格式符组成,size为可选项。

常见的格式符有:

        ① d :读入整型数据;

        ②  f :读入浮点型数据;

        ③ c :读入字符型数据;

        ④ s :读入字符串;

        在%之后还可以加上数据宽度,例如%3d,它控制读取数据取3位数字。

2、写文本文件

        fprintf函数可以将数据按指定格式写入到文本文件中。

fprintf函数的调用格式为:

        COUNT = fprintf(fid,format,A)

        其中A存放要写入文件的数据,先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件,格式符与fscanf函数相同。

三、数据文件定位

        当打开文件并进行数据的读写时,需要判断和控制文件的读写位置,例如判断文件数据是否读完,或者需要读写指定位置上的数据等。MATLAB提供了与文件定位操作有关的函数fseek和ftell。通过这两个函数用户可以设定或获取文件指针位置。

fseek函数的调用格式为:

                status = fseek(fid,offset,origin)

        其中fid为文件句柄,offest表示位置指针相对移动的字节数,若为正整数表示向文件尾方向移动,若为负整数表示向文件头方向移动,origin表示位置指针移动的参照位置,它的取值有3种可能:

                        ① cof :表示文件的当前位置;

                        ② bof :表示文件的开始位置;

                        ③ eof :表示文件的结束位置;

        若定位成功,status返回值为1,否则返回值为-1。

ftell函数的调用格式为:

                position = ftell(fid)

        返回值为从文件开始到指针当前位置的字节数,若返回值为-1表示获取文件当前位置失败。


总结

        今天学习了数据文件在MATLAB中的操作,包括二进制文件和文本文件的读写操作,以及如何定位数据文件的位置。经过这一部分的学习,我们就可以将MATLAB与文本文件进行联系起来了,就可以做一些任务开发了,比如利用MATLAB分析文本文件中的数据,根据数据来做算法等等!当然这些都是后话啦,现在基础还没牢固,还是先学爬再学走吧,加油!!!

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值