MATLAB: how to read every Nth line of a text file?

trolle3000 picture trolle3000 · Apr 3, 2011 · Viewed 20.8k times · Source

I have some data that's formatted as follows:

dtau     E_av        variance    N_sims      Time
0.001   0.497951    0.000211625 25      Sun Apr  3 18:18:12 2011

dtau     E_av        variance    N_sims      Time
0.002   0.506784    0.000173414 25      Sun Apr  3 18:18:58 2011

Now I want to read the first 4 columns (anything but the time) of every third line into MATLAB using textscan; after using fid = fopen('data.text'), I basically have to loop this:

results = textscan(fid, '%f %f %f %f', 1,'headerlines',1);

Any ideas? Cheers!

Answer

Wood picture Wood · Apr 3, 2011
fid = fopen('data.text')
while ~feof(fid)
  results = textscan(fid, '%f %f %f %f', 1,'headerlines',1);
  //Processing...

  for i = 1:2
    fgets(fid)
  end
end

fgets reads until the end of a line, and returns the text on that line. So, just call it twice to skip two lines (discarding the return value of the function).