Reading numeric values from complex text files
2 次查看(过去 30 天)
显示 更早的评论
I know this question has been asked too many times before, but I'm attempting to read numeric values from a text file that has the following format:
2.00000000000000e+001 (-2.58645139980833e+001dB,-3.39749468897168e+001°)
(This format comes from LTspiceIV AC analysis, edit: see attached .txt for example file). I have tried using different functions to read this (dlmread, fscanf, textscan) but with no success. The method I tried was to use multiple delimiters e.g.
{'\t','dB','°','(',')',','}
textscan(filename,'%f %f %f','HeaderLines',1,'Delimiter',{'\t','\n','dB','°','(',')',','});
and also grouped e.g.
textscan(filename,'%f %f %f','HeaderLines',1,'Delimiter',{'\t(','dB,','°)'});
and also with a format specifier including the whole line make-up in fscanf e.g.
'%f\t(%fdB,%f°)'
I also need to skip 1 header row. Where am I going wrong?
1 个评论
Stephen23
2015-10-7
编辑:Stephen23
2015-10-7
Can you please upload the complete file. Without this it is difficult to know how the lines are arranged, how the values repeat, the format of the lines, and other information that we need to know how the file should be parsed.
Your title describes them, as being "complex text files", but we do no have any information on their format.
You can upload a file by clicking on the paperclip button and then both the Choose file and Attach file buttons.
采纳的回答
Jeremy Hughes
2015-10-8
编辑:Jeremy Hughes
2015-10-8
Hi Ben,
I found this worked. (of course I used a string and not a file id, but it works the same)
textscan(fid,'%f(%fdB%f°)','Delimiter',{'\t',','},'HeaderLines',1)
Good Luck,
Jeremy
更多回答(1 个)
Thorsten
2015-10-7
You can process individual lines using
s = fgets(fid);
data(i,:) = sscanf(s, '%f (%fdB, %f)');
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!