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

在matlab中使用textscan跳过txt文件中的行,matlab,line,textscan,Matlab,Line,Textscan,我有一个巨大的.txt文件和我想解析的部分(使用文本扫描),比如说我有10000行数据和一个从第300行开始的部分,该部分也有一个10行的标题,比如说,我怎么能跳过前300行(当然不使用文本扫描的标题功能,因为这样我就无法获得实际的10行标题)或者有没有一种方法可以让我跳转到第300行并从那里开始文本扫描,就像301行是第一行一样。所以,假设您的数据是由以下内容生成的(因为您在问题中没有提到它的格式): 首先使用fgetl前进到第300行,然后使用textscan两次获取标题信息和数据,即可读取

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

所以,假设您的数据是由以下内容生成的(因为您在问题中没有提到它的格式):

首先使用
fgetl
前进到第300行,然后使用
textscan
两次获取标题信息和数据,即可读取数据。基本上,需要记住的是
textscan
fid
指向的位置开始工作。因此,如果它指向第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
转到该偏移量。

不同的部分有不同的格式吗?你是说有一部分你想从300行扫描到10000行。第300到310行是标题吗?数据是如何格式化的?不,假设300-340是从300-310开始的部分,10000行中可能有几个这样的部分。我有使用文本扫描
textscan(fid,'%s','Delimiter','\n')的部分开始的行号。
我现在想直接跳到这些行,如何直接跳转到第300行而不从一开始就计数AlwaysSeek不会有帮助,因为我的数据是不对称的,包含值和表,我想要一些可以跳转行的东西,其中行是从上述代码中获得的,您的第二个代码看起来不错(我目前使用相同的想法),但我的文件很大,有数百万行,我不能使用前面提到的for循环,你不能<如上所述,循环中的code>fgetl是唯一的方法。
fid = fopen('datafile.txt', 'r');

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

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

fclose(fid);