数据读取的常见函数以及区别(fopen、open、textscan、fwrite、fread函数)

1、fopen函数

语法1:fileID = fopen(filename)

打开文件 filename, 返回等于或大于 3 的整数文件标识符,以便以二进制读取形式进行访问。
0、1 和 2 分别用于标准输入、标准输出(屏幕)和标准错误。如果 fopen 无法打开文件,则 fileID 为 -1。
!!!经常与textscan、fread、fwrite函数结合使用
fopen也可以写入文件,对新写入的文件输出fileID。(具体看fwrite函数的案例)

语法2:filename = fopen(fileID)
输入fileID,可以返回指定文件ID所使用的文件名。

案例:

在这里插入图片描述

2、open函数

语法1:open filename
主要用于打开一些脚本文件

语法2:open 路径/filename
若文件不在工作路径,手动输入路径也可打开文件。(注意!!当路径中有空格时,用单引号引起来

案例1:直接输入文件名称,编辑器中自动加载该程序代码。
在这里插入图片描述
案例2:加上文件路径,打开不在路径下的文件。
在这里插入图片描述

3、textscan函数

将数据以一定格式读取到元胞数组

语法1:C = textscan(fileID,formatSpec)

先使用 fopen 可打开文件并获取文件标识符 fileID 值,文件读取后,textscan 尝试将fileID对应文件中的数据与 formatSpec 中的转换设定符匹配,最后调用 fclose(fileID) 来关闭文件。
textscan 函数在整个文件中按 formatSpec 重复扫描数据,直至 formatSpec 找不到匹配的数据时才停止

语法2:C = textscan(chr,formatSpec)

将字符向量 chr 中的文本读取到元胞数组 C 中,textscan 尝试将字符向量 chr 中的数据与 formatSpec 中指定的格式匹配。从字符向量读取文本时,对 textscan 的每一次重复调用都会从开头位置重新开始扫描。要从上次位置重新开始扫描,需要指定 position 输出参数。

案例1:先查看filename的内容,共9列,用textscan设置这9列参数的输出格式分别为%s,%s,%f32,…,再用fclose关掉这个fileID,可以看到下面得到的C元胞数组,以及每个元胞存放的数据类型不同。
在这里插入图片描述
案例2:对这个chr变量读取,重新设置了输出格式位双精度浮点型,得到C元胞数组如下:
在这里插入图片描述

4、fwrite函数

写数据到二进制文件,返回的结果是写入数据的个数。

语法1:fwrite(fileID,A)
将数组 A 的元素按列顺序以 8 位无符号整数的形式写入一个二进制文件。该二进制文件由文件标识符 fileID 指示。

语法2:

案例:
写二进制文件:(1)打开point文件,在对 fopen 的调用中使用 ‘w’ 指定写入访问权限。(2)将 1 到 9 的整数以 8 位无符号整数(uint8,范围0~255)的形式写入。(注意!![1:9]本来是一个行向量,但写入是以列写入,因此写进来为列向量)(3)关掉这个fileID
读二进制文件:(1)用fopen打开该二进制文件,返回为一个ID号码(2)fread函数读这个ID。即可读到这个二进制文件。

特别注意!!每次fopen之后,都要fclose,否则写入的数据读不到fclose类似于保存并退出的操作。(可以试一下fopen、fwrite后直接fread返回结果为空)
在这里插入图片描述
若要在写好的二进制文件中添加新的数据,则需要重新fopen,fwrite,案例如下:
(1)用选项‘a’在二进制文件附加数据
在这里插入图片描述
K矩阵如下:
在这里插入图片描述

(2)读数据
在这里插入图片描述

可以发现,结果为一个列向量。
fread的时候,可以选择想要读的数据,输出的行列号,数据类型。
案例:(1)在写入数据的时候指定数据类型
在这里插入图片描述
(2)仅读前六个值(共9个值),读取输出到一个 3×2 数组中,指定源数据为 uint16 类。
在这里插入图片描述

5、fread函数

语法1:A = fread(fileID) 将打开的二进制文件中的数据读取到列向量 A 中。
语法2:A = fread(fileID,sizeA,precision) , precision 指的是读取数据的类型(整型、浮点型,复数…)sizeA指的是A的行列号。

fread函数的案例结合fwrite函数看,这里不写。

6、imread函数

主要用于读取图像文件,也可对读取到的图像设置一定格式,具体看help文件,比较简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值