How to ignore or delete the last row of a text file when importing?

7 visualizzazioni (ultimi 30 giorni)
I am reading in data using textscan. Often times the last row of data is bad and throws an error. How can I ignore the last line? or is there code to delete the last row of data in the text file programmatically?

Risposta accettata

Star Strider
Star Strider il 31 Mag 2015
It’s difficult to be specific without your file. If you know how many lines you want to read, you can set that limit as a parameter.
From the documentation:
  • C = textscan(fileID,formatSpec,N) reads file data using the formatSpec N times, where N is a positive integer. To read additional data from the file after N cycles, call textscan again using the original fileID. If you resume a text scan of a file by calling textscan with the same file identifier (fileID), then textscan automatically resumes reading at the point where it terminated the last read.
  2 Commenti
Al
Al il 31 Mag 2015
Modificato: Al il 31 Mag 2015
I placed this code prior to texscan
fid = fopen('your_file.TXT','r');
fseek(fid, 0, 'eof');
chunksize = ftell(fid);
fseek(fid, 0, 'bof');
ch = fread(fid, chunksize, '*uchar');
nol = sum(ch == sprintf('\n')); % number of lines
fclose(fid)
Then I replaced the N in
C = textscan(fileID,formatSpec,N)
with
nol-2
This did it. Thank you.

Accedi per commentare.

Più risposte (1)

Image Analyst
Image Analyst il 31 Mag 2015
Put it in a try catch block. Look it up in the help. You can just have your catch block be empty if you want to ignore any errors.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by