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 第一次整理编写
学习时整理,不当之处烦请指正
码字不易,留个赞再走吧