Io 仅加载特定行

Io 仅加载特定行,io,octave,Io,Octave,我有一个包含超过一百万行的数据文件,其中包含16个整数(这并不重要),我需要以八度处理这些行。显然,不可能加载整个文件。如何仅加载特定行 我想到了两种可能性: 我在简单I/O文档中遗漏了一些内容 我应该将该文件转换为CSV,并使用一些csvread功能 如果要逐行遍历文件,可以打开文件,然后使用fscanf解析每一行 fid = fopen(filename); while true % Read the next 16 integers data = fscanf(fid,

我有一个包含超过一百万行的数据文件,其中包含16个整数(这并不重要),我需要以八度处理这些行。显然,不可能加载整个文件。如何仅加载特定行

我想到了两种可能性:

  • 我在简单I/O文档中遗漏了一些内容
  • 我应该将该文件转换为CSV,并使用一些csvread功能

如果要逐行遍历文件,可以打开文件,然后使用
fscanf
解析每一行

fid = fopen(filename);

while true
    % Read the next 16 integers
    data = fscanf(fid, '%d', 16);

    % Go until we can't read anymore
    if isempty(data)
        break
    end
end
如果希望将每一行作为字符串,则可以使用
fgetl
获取每一行

fid = fopen(filename);

% Get the first line
line = fgetl(fid);

while line
    % Do thing

    % Get the next line
    line = fgetl(fid);
end

它是文件中间的任意行吗?是的,它是。关键是在各行之间循环,而不是加载整个文件。所以你只想一行一行地做一些事情?是的,就是这样。