How to import txt files with variable column number with textscan ?
4 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
per isakson
on 5 Nov 2014
Edited: per isakson
on 5 Nov 2014
"check the tokens size for the column numbers"   thus
ncol = number_of_columns
and
a = textscan( fid, [ repmat('%f',[1,ncol-1]), '%q' ] ...
, 'Delimiter',',', 'EmptyValue',NaN );
and why not use
'CollectOutput', true
0 Comments
More Answers (1)
See Also
Categories
Find more on Large Files and Big Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!