matlab中如何读取多个txt文件中的某一行的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中如何读取多个txt文件中的某一行的数据相关的知识,希望对你有一定的参考价值。
具体是这样的,比如说我有100个按照序号排列的txt文件,文件名如下:file(1).txt、file(2).txt、……file(100).txt,每个txt文件中并不是纯数据,开头还有一些解释说明,如下图所示 。我需要的是每个文件中的第60行的数据,就是读取这一行的数据,然后将100txt个文件中的这一行的数据全部放到一个矩阵当中。如果一行有7个数据,那么我的矩阵大小就是100行、7列的。请问如何编写这样的matlab程序,挺急的,希望高人指点。某一个TXT的文件内容如下,想要提取出红线画的那一行(假设该行是第60行)
这样:
% 实现思路:
% 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);
filesk = [pt ff id ext]; % 文件名列表
end
dt = [];
for k = 1:length(files)
fds = 0; % 查找结果
fid = fopen(filesk);
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)
参考技术A % 实现思路:% 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);
filesk = [pt ff id ext]; % 文件名列表
end
dt = [];
for k = 1:length(files)
fds = 0; % 查找结果
fid = fopen(filesk);
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本回答被提问者和网友采纳
Matlab如何读取含有多个不同分隔符的txt文件
参考技术A 可以使用一个for循环,每个循环内传递文件名。把文件名依次存放在一个txt文件内读取。 这个可以,我编过类似程序。
以上是关于matlab中如何读取多个txt文件中的某一行的数据的主要内容,如果未能解决你的问题,请参考以下文章