Matlab学习:文本(以.txt为例)
文件、二进制文件数据、图像(以BMP、TIF、GIF、JPEG等图像为例)
文件、其他文件(以RAW、.dat为例)
的读取
1、读取 .txt 文件数据
情况A. 一个txt文件里全是数字数据
的读取
例如sj.txt
文件内容为:
1 21 31 41
2 52 62 74
3 33 35 37
4 81 82 83
5 55 66 77
方法1.maltab自带工具
首先先将数据导入至matlab自带的工具中
导入后会出现导入后的各个参数,
分隔符根据实际情况进行选择,一般是空格或者逗号,
最后点击导入所选内容即可。
方法2. load、dlmread、importdata函数
代码示例:
%%文件路径
Path='路径\'
filename=[Path ,'data.txt'];
%%读取文件数据
data1=load(filename);
data2=dlmread(filename);
data3=importdata(filename);
情况B.在情况A的基础上存在第一行数据为中文
例如sj2.txt
文件内容为:
编号 长 宽 高
1 21 31 41
2 52 62 74
3 33 35 37
4 81 82 83
5 55 66 77
分析内容:这里的文件内容,存在了一行中文汉字,load函数将不再适用,这里我们需要分为两个部分处理:1、中文处理;2、数字处理。
参考函数:textread
importdata
方法1.textread函数
data=textread('sj2.txt','%s'); %读取文件
data=str2num(char(data(5:end))); %删除中文,并将cell转换成数字
data=reshape(data,4,length(data)/4)'; %重新按照格式排列
方法2.importdata函数
data=importdata('sj2.txt'); %读取的文字存在struct内,data为数字,textdata为中文
data=data.data; %提取struct中的data
情况C.读取中文与数字混合文件
例如sj2.txt
文件内容为:
编号:1 长:21 宽:31 高:41
编号:2 长:52 宽:62 高:74
编号:3 长:33 宽:35 高:37
编号:4 长:81 宽:82 高:83
编号:5 长:55 宽:66 高:77
分析内容:这种固定的汉字和变化的数字,以形成汉字和数字混合出现,已经不能简单应用MATLAB自带函数处理,需要根据实际情况进行更加精准的处理。这里使用文件系统函数(fopen等函数
)读取文件。
关键函数:
fopen
打开文件,返回地址,因为我们只是读取文件,所以用r权限
fscanf
以某种方式读取文件,具体内容具体分析
fscanf(FID,FORMAT,SIZEA)
其中:FID
为文件地址(为fopen的返回值),FORMAT
为读取txt文件的格式,SIZEA
为读取的函数,如:[1 inf]
读取从第一行到最后一行
fclose
关闭文件
注意:这里的三个函数缺一不可(养成良好习惯,打开的文件要关闭)
fid=fopen('sj3.txt','r'); %只读
data=fscanf(fid,'编号: