1.没有文件头 列规整
4.09+4.10,4.09+4.10
4.09+4.10,4.09+4.10
4.09+4.09,4.09+4.09
4.09+4.09,4.09+4.09
4.09+4.09,4.09+4.10
4.09+4.09,4.09+4.09
4.09+4.09,4.09+4.09
4.09+4.10,4.09+4.10
4.09+4.10,4.09+4.09
4.09+4.09,4.09+4.09
可以调用Matlab自带的函数textread;
基本语法是:
[A,B,C,…] = textread(filename,format)
[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
必须严格遵守用法不可出现data=textread(filename,format,N)的形式
其中括号里面变量的个数必须和format中定义的个数相同。如果每N行相同格式的数据,可采用[A,B,C,…] = textread(filename,format,N)的语法,读取N次。
[a,b,c,d,e,f]=textread('Data.txt','%f %s %f %s %f %s %f');
2.字段名(中、英文字段均可)+数据
CODE:
CH0 CH1 CH2 CH3
0.000123 0.000325 0.000378 0.000598
0.000986 0.000256 0.000245 0.000698
Data = importdata('xueyang.txt'); data = Data.data;
3.注释(含有独立的数字串)+数据(列数相同)
%NULL
%NULL
CODE:
Group 2 12.02.2006 Limei
Samples of datas: 50000
%NULL
CH0 CH1 CH2 CH3
0.000123 0.000325 0.000378 0.000598
0.000986 0.000256 0.000245 0.000698
解:由于注释中含有独立的数字串,且注释部分没有明显的格式,这时候用importdata, load等高级命令直接读取会失败,用 textread, dlmwrite 等格式化命令也不太合适,因此只能使用低级命令进行读取。(当然了,可以跳过注释部分直接用高级命令读取数据,即:[a b c d] = textread(filename,'%f %f %f %f','headerlines',4); )。
一个简单的、非通用的包含注释的读取方法如下:
clc;clear; fid = fopen('exp.txt', 'r'); fid_n=fopen('ex.dat','w'); while ~feof(fid) tline=fgetl(fid); if ~isempty(tline) if double(tline(1))>=48 && double(tline(1))<=57 %数值开始 a=strread(tline); a(3:4)=[]; fprintf(fid_n,'%f %f\n',a); clear a; elseif double(tline(1))==67 %字母C开始 [b1,b2,b3,b4]=strread(tline,'%s %s %s %s'); b=[b1{1},' ',b2{1}]; fprintf(fid_n,'%s\n',b); clear b b1 b2 b3 b4; else fprintf(fid_n,'%s\n',tline); end else fprintf(fid_n,'%s\n',tline); end end fclose(fid); fclose(fid_n);