使用fopen导入数据跳过行

时间:2016-12-03 17:42:35

标签: matlab fopen

我尝试从导入到Matlab的.txt文件中跳过第5行到文件末尾。

fidM = fopen('abc.txt', 'r');
for i = 5:150
    fgetl(fidM);
end
buffer = fread(fidM, Inf) ;
fclose(fidM);
fidM = fopen('xyz.txt', 'w');
fwrite(fidM, buffer) ;
fclose(fidM) ;

上面的代码不能以某种方式完成工作。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的代码当前读取文件的前146行,丢弃它们,然后读取剩余部分并将 写入文件。相反,如果您只想将abc.txt的前5行写入xyz.txt,请执行以下操作:

fid = fopen('abc.txt', 'r');
fout = fopen('xyz.txt', 'w');

for k = 1:5
    fprintf(fout, '%s\r\n', fgetl(fid));
end

fclose(fid);
fclose(fout);

或者您可以删除循环并执行以下操作:

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

% Read in the first 5 lines
contents = textscan(fid, '%s', 5);
fclose(fid);

% Write these to a new file
fout = fopen('xyz.txt', 'w');
fprintf(fout, '%s\r\n', contents{1}{:});
fclose(fout);