MATLAB Answers

How read in comment style to skip the header of a text file?

3 views (last 30 days)
Nazar Adamchuk
Nazar Adamchuk on 17 Jun 2021
Edited: Joseph Cheng on 17 Jun 2021
I am trying to read hundreds of .dat file by skipping header lines (I do not know how many of them I need to skip beforehand). Header lines very from 1 to 20 and have at beginning either or "$" oder "!". A sample data (left column - node, right column - microstructure) has always two columns and looks like the following text file in the attachment.
I tried the following codeline, assuming I know beforehand that there 3 lines in header:
fid = fopen('Graphite_Node_Test.txt') ;
data = textscan(fid,'%f %f','HeaderLines',3) ;
fclose(fid);
How can I change the code so that it can read the .dat file without knowing the number of header lines beginning with either "$" or "!" sign?

Accepted Answer

Joseph Cheng
Joseph Cheng on 17 Jun 2021
Edited: Joseph Cheng on 17 Jun 2021
you can quickly scan the file(s) for the number of header lines like
file= 'Graphite_Node_test.txt';
fid = fopen('Graphite_Node_Test.txt') ;
hlines= 0;
while ~feof(fid)
cline =fgetl(fid); %get the current line
if strcmp(cline(1),'!') | strcmp(cline(1),'$') %check if it starts with ! or $
hlines = hlines+1; %if it does increment headerline counter
else
break %break out once past header
end
end
fseek(fid,0,-1); %rewind file to start
data = textscan(fid,'%f %f','Headerlines',hlines);
fclose(fid);
disp(data)

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!