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

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

 采纳的回答

"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

更多回答(1 个)

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

类别

帮助中心File Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by