从dat文件中读取最后N行

时间:2018-04-14 17:52:39

标签: matlab

我有一个大文件,我想读最后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

如何在不加载整个文件的情况下实现此目的?

1 个答案:

答案 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)

您需要了解您的文件结构,以决定如何处理最后一行。