matlab中如何读取多个txt文件中的某一行的数据
这样:
% 实现思路:
% 1. 逐一以文本形式打开文件 file(n).txt ;
% 2. 逐行读出数据,并判断前9个字符是否 Timestamp ;
% 3. 如是,在下一行接收数据存入结果并退出此文件;
% 4. 如不是,继续往下读数据。
pt = 'd:\data\'; % 数据路径
ff = 'file'; % 数据文件前缀
ext = '.txt'; % 数据文件扩展名
stamp = 'Timestamp'; % 数据查找标志
n = 100; % 文件个数
for k = 1:n
id = num2str(k);
files{k} = [pt ff id ext]; % 文件名列表
end
dt = [];
for k = 1:length(files)
fds = 0; % 查找结果
fid = fopen(files{k});
while ~feof(fid)
tline = fgetl(fid)
if fds==1
dt = [dt; str2num(tline)];
fclose(fid);
break
else
if length(tline)>8
fds = strcmp(stamp,tline(1:9));
end
end
end
end
扩展资料:
注意事项
它的基本语法是:
[A,B,C,...] = textread(filename,format)
[A,B,C,...] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
中括号里面变量的个数必须和format中定义的个数相同。 如果每N行相同格式的数据,可采用[A,B,C,...] = textread(filename,format,N)的语法,读取N次。
举例如下:
例1:myfile.txt 中的内容如下:
1 2 3 4
5 6 7 8
9 10 11 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n');
或者为
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);
例2:myfile.txt 中的内容如下:
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',');
这里delimiter指出分隔符,读数据的时候会自动跳过分隔符。
例3:myfile.txt 中的内容如下:
% this a comment
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
相应的语句为:
filename = '.\myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',','headerlines', 1);
这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。
例4:myfile.txt 中的内容如下:Sally Level1 12.34 45 Yes
相应语句为:
filename = '.\myfile.txt';
[names, types, x, y, answer] = textread(filename , '%s %s %f %d %s', 1)
1、如果要忽略12.34这个浮点数:[names, types, y, answer] = textread(filename , '%s %s %*f %d %s', 1)。 %*f告诉textread跳过一个浮点数。
2、如果要忽略Level,只读取后面的数字:[names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)
% 实现思路:
% 1. 逐一以文本形式打开文件 file(n).txt ;
% 2. 逐行读出数据,并判断前9个字符是否 Timestamp ;
% 3. 如是,在下一行接收数据存入结果并退出此文件;
% 4. 如不是,继续往下读数据。
pt = 'd:\data\'; % 数据路径
ff = 'file'; % 数据文件前缀
ext = '.txt'; % 数据文件扩展名
stamp = 'Timestamp'; % 数据查找标志
n = 100; % 文件个数
for k = 1:n
id = num2str(k);
files{k} = [pt ff id ext]; % 文件名列表
end
dt = [];
for k = 1:length(files)
fds = 0; % 查找结果
fid = fopen(files{k});
while ~feof(fid)
tline = fgetl(fid);
if fds==1
dt = [dt; str2num(tline)];
fclose(fid);
break
else
if length(tline)>8
fds = strcmp(stamp,tline(1:9));
end
end
end
end