MATLAB: How to extract data from a large ASCII file

textscan

I have a ASCII data file with unknown number of columns and rows. In the file there are some unwanted text lines on top. I want to read only some of the columns in the data set with the header by removing the text lines on top. I appreciate if anyone can help.

Best Answer

  • >> doc textscan
    and use the parameter HeaderLines to skip the header. Supposing that you have 7 header lines and that you need columns 1 and 3 (discarding the rest of each line), you should have something like:
    content = fileread( 'myData.txt' ) ;
    data = textscan( content, '%f%*f%f%*[^\n]', 'HeaderLines', 7, ...
    'CollectOutput', true ) ;
    data = data{1} ;
    where you see a * in the formatSpec argument to skip column 2 and %*[^\n] at the end to skip the rest of the line.