How to import txt files with variable column number with textscan ?

17 visualizzazioni (ultimi 30 giorni)
I use textscan to import txt files mixed with string and numbers. Usually these files have 50 columns. The first line is the header. I can make the string column the last column in the data file. My code is below. Now the data files vary in column numbers. I can check the tokens size for the column numbers. But I don't know how to make my text scan more flexible to handle variable column sizes.
fid = fopen(filename,'rt');
tline = fgetl(fid);
tokens = regexp(strtrim(tline), ',', 'split');
a = textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%q','Delimiter',',','EmptyValue',NaN);
fclose(fid);
Thank you, Jane

Risposta accettata

per isakson
per isakson il 5 Nov 2014
Modificato: per isakson il 5 Nov 2014
"check the tokens size for the column numbers" &nbsp thus
ncol = number_of_columns
and
a = textscan( fid, [ repmat('%f',[1,ncol-1]), '%q' ] ...
, 'Delimiter',',', 'EmptyValue',NaN );
and why not use
'CollectOutput', true

Più risposte (1)

Jane
Jane il 6 Nov 2014
Thank you, per isakson. I know there must be an easy way instead of putting 50 %f. Thank you, it is very helpful.

Community Treasure Hunt

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

Start Hunting!

Translated by