如何用matlab批量读取多个txt文件中指定行的内容

有60个txt文件,每个txt文件中并不是纯数据,开头含有字母,如下图所示 。我需要的是每个文件中的第6行的数据,就是读取这一行的数据,然后将60个文件中的VV开头一行的数据全部放到一个数组!当中。请问如何编写这样的程序,挺急的,希望高人指点。某一个TXT的文件内容如下(最好是用matlab)图片说明

3个回答

1.把文件放到一个文件夹内,用dir命令获取一个包含了所有文件文件名的cell;
2.有一个for循环,依次打开每一个文件;
3.打开文件后,用fgetline跳过前面几行,读取指定行到一个string里面;
4.去掉string前面没用的几个字符;
5.保存去掉无效字符后的有效字符串。

% 实现思路:
% 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

% 实现思路:
% 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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问