matlab代码整理1——fopen和fscanf

matlab代码整理1——fopen和fscanf

fopen 打开数据文件文件

1.fileID = fopen(filename)  
2.fileID = fopen(filename,permission)

1.fileID = fopen(filename)
打开文件filename以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。MATLAB 保留文件标识符 0、1 和 2 分别用于标准输入、标准输出(屏幕)和标准错误。
如果 fopen 无法打开文件,则 fileID 为 -1。

2.fileID = fopen(filename,permission)
将打开由permission指定访问类型的文件.

permission解释
“rt”只读打开一个文本文件,只允许读数据
“wt”只写打开或建立一个文本文件,只允许写数据
“at”追加打开一个文本文件,并在文件末尾写数据
“rb”只读打开一个二进制文件,只允许读数据
“wb”只写打开或建立一个二进制文件,只允许写数据
“ab”追加打开一个二进制文件,并在文件末尾写数据
“rt+”读写打开一个文本文件,允许读和写
“wt+”读写打开或建立一个文本文件,允许读写
“at+”读写打开一个文本文件,允许读,或在文件末追加数据
“rb+”读写打开一个二进制文件,允许读和写
“wb+”读写打开或建立一个二进制文件,允许读和写
“ab+”读写打开一个二进制文件,允许读,或在文件末追加数据

fscanf读取文本文件中的数据

1.A = fscanf(fid,format)
2.A = fscanf(fid,format,size)

1.A = fscanf(fid,format)
将打开的文本文件中的数据读取到列向量 A 中,并根据 format 指定的格式解释文件中的值。fscanf 函数在整个文件中重新应用该格式,并将文件指针定位在文件结尾标记处。

如果 fscanf 无法将 formatSpec 与数据相匹配,将只读取匹配的部分并停止处理。该文本文件由文件标识符 fileID 指示。使用 fopen 打开文件,指定字符编码,以及获取 fileID 值。读取文件后,请调用 fclose(fileID) 来关闭文件。

format解释
“%d”整数
“%f”小数
“%g”科学计数和小数两者都有,会自动判断哪一个更适合

2.A = fscanf(fid,format,size) 将文件数据读取到维度为 size 的数组 A 中,并将文件指针定位到最后读取的值之后。fscanf 按顺序填充 A。size 必须为正整数或采用 [m n] 的形式,其中 m 和 n 为正整数。

举例说明

clear all;
close all;
fid = fopen( 'data.txt' , 'rt' );
data = fscanf(fid,'%d',[2,inf]); %inf表示无穷大
                                       %A = fscanf(fid,format,size);
                                       %fomat为读入数据的格式,size是数组的大小
%%注意单引号,格式控制符%f之间没有逗号,%f也可用自动识别控制符%g代替。
fclose(fid);

fid = fopen( ‘data.txt’ , ‘rt’ );这一语句打开文件data.txt (此文件在matlab文件目录下可直接打开,否则要说明路径如fid = fopen( ‘d:\data.txt’ , ‘rt’ ))

data = fscanf(fid,‘%d’,[2,inf])这一语句表示以整数读取data文件的数据,且存放至两行无穷列的数组中。
注意存放至数组时是按列存放

1、说明数组大小的取用

1.若data文件内容为:
1 2 3 4 5 6 7
运行后data变量结果如图:
在这里插入图片描述
2.若改变取用数组的大小为2*3,即改成data = fscanf(fid,‘%d’,[2,3])
data数组结果为:
在这里插入图片描述
同理可改变数组行列的大小,数据不足会补零。

2.说明数据格式的取用

1.将data文件的数据改成
775.279 641.892 727.592 689.579 662.450 707.034
将语句改成data = fscanf(fid,‘%f’,[2,inf])
运行结果为:
在这里插入图片描述
此时data文件中是小数,若是data = fscanf(fid,‘%d’,[2,inf])则只能取出一个整数部分775

2.将语句改成 dataf=scanf(fid,‘%d %f’,[2,inf]) 会怎么样呢?
运行结果为:
在这里插入图片描述
结果是将整数和小数交替取出
3.2.将语句改成 data = fscanf(fid,‘%d %f %f’,[2,inf]) 会怎么样呢?
运行结果为:
在这里插入图片描述
也就是说会依存按照指定的数据格式 (整数-小数-小数) 取用数据。

总结

fid = fopen( 'data.txt' , 'rt' );
data = fscanf(fid,'%d',[2,inf]);
fclose(fid);

这三个语句常常配合使用,打开数据文件-读取数据文件-关闭数据文件。
目的是将.txt或.dat文件中的数据读取至matlab中的数组,指定存放的数据格式、存储顺序以及数组大小。便于之后对数据进行相关处理。


于 2023-02-13 第一次整理编写

学习时整理,不当之处烦请指正
码字不易,留个赞再走吧

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值