使用matlab中的textscan跳过txt文件中的行

时间:2017-05-31 10:52:36

标签: matlab line textscan

我有一个巨大的.txt文件和我要解析的部分文件(使用文本扫描),比如我有10000行数据和从300行开始的部分,该部分也有10行的标题,我怎么能跳过前300行(当然不使用文本扫描的标题功能,因为我无法获得我的实际10行标题)或者是否有一种方法可以跳转到第300行并从中开始文本扫描好像301线是第一线。

1 个答案:

答案 0 :(得分:0)

因此,假设您的数据是由以下内容生成的(因为您尚未提及问题中的格式如何):

fid = fopen('datafile.txt', 'w');

for i=1:300
    fprintf(fid, 'ignore%d\n', i);
end

for i=301:310
    fprintf(fid, 'header%d\n', i);
end

for i=311:10000
    fprintf(fid, '%d\n', i);
end

fclose(fid);

您可以首先使用fgetl前进到第300行,然后使用textscan两次获取标题信息和数据来读取数据。基本上,要记住的是textscanfid指向的地方开始工作。因此,如果它指向第301行,它将从那里开始扫描。所以,这里是从第301行开始读取上述文件的代码:

fid = fopen('datafile.txt', 'r');

for i=1:300
    fgetl(fid);
end

scannedHeader = textscan(fid, '%s', 10);
scannedData = textscan(fid, '%d');

fclose(fid);

NB:如果数据始终采用相同的格式,您可以使用ftell知道要跳到的位置,然后使用fseek转到该偏移量。< / p>