我有一个大文件,我想读最后N行并将其保存到数组中。
...
0000060000 -8.87581605E-01 +8.75699302E-01 +9.06740431E+00
0000060000 +6.19341761E-01 +4.28899944E-01 +5.01890155E+00
0000060000 +1.68698000E+00 +9.26797393E-01 +5.91791531E+00
0000060000 -2.90325069E+00 -1.38036121E+00 +5.37741815E+00
0000060000 -1.78177889E+00 +1.18435200E-01 +3.77356637E+00
如何在不加载整个文件的情况下实现此目的?
答案 0 :(得分:1)
以下是两种方法:
Filename='Myfile.csv';
N=5;
%Read file
fid=fopen(Filename,'r');
text=fread(fid,'*char')';
fclose(fid);
%Preprocess
text(char(13))=[]; %remove cr, to make things clean
%Method 1
idxs=find(text==char(10),N+1,'last'); %line ending position
Result1=text( idxs(1)+1:idxs(end) )
%Method 2
AllRows=regexp(text,char(10),'split')';
Result2=AllRows(end-N:end)
您需要了解您的文件结构,以决定如何处理最后一行。