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

前端 未结 2 736
予麋鹿
予麋鹿 2021-01-03 11:41

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          


        
相关标签:
2条回答
  • 2021-01-03 12:09
    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).

    0 讨论(0)
  • 2021-01-03 12:21

    Since you know you will have 5 column labels (i.e. strings) followed by 4 numeric values followed by 5 strings (e.g. 'Sun', 'Apr', '3', '18:18:12', and '2011'), you can actually read all of your numeric data into a single N-by-4 matrix with one call to TEXTSCAN:

    fid = fopen('data.text','r');                    %# Open the file
    results = textscan(fid,[repmat(' %*s',1,5) ...   %# Read 5 strings, ignoring them
                            '%f %f %f %f' ...        %# Read 4 numeric values
                            repmat(' %*s',1,5)],...  %# Read 5 strings, ignoring them
                       'Whitespace',' \b\t\n\r',...  %# Add \n and \r as whitespace
                       'CollectOutput',true);        %# Collect numeric values
    fclose(fid);                                     %# Close the file
    results = results{1};                            %# Remove contents of cell array
    
    0 讨论(0)
提交回复
热议问题