MATLAB Answers

How to read fortran formatted data from a text file? (for example: 0.556802469135838D+00)

14 views (last 30 days)
Alexander H
Alexander H on 1 Feb 2015
Commented: Alexander H on 2 Feb 2015
I got a file with contents like follow:
  • 0.139200617284040D+00
  • 0.139200617284039D+00
  • 0.556802469135838D+00
  • 0.348001543210539D-01
I'd used matlab function like fscanf/textscan to read the file, while I failed. Beacuse the data use "D" rather than "E" to indicate double type, as fortran does.
Is there anyway that this problem could be fixed?

Answers (1)

Geoff Hayes
Geoff Hayes on 1 Feb 2015
Alexander - why not read in the data as strings, replace the D with an E using either strrep or regexp, and then convert the string to a double using str2num? An alternative would be to open the fire in a text editor and replace all occurrences of D with E and then load the file as before.
  1 Comment
Alexander H
Alexander H on 2 Feb 2015
Thanks, Geoff.
The first solution entered my brain is to replace all "D" by a text editor ultraedit. But it is not convenient for too much files. Then I have been using a temporary method:
tmp= fscanf(fid,'%fD%f',2); Data(ii)= tmp(1)*(10^tmp(2));
Sure you provided a workable technique, and your method is much concise and consists matlab style. While, using string method is much slower than directly read. Redundant MUL is also not so welcome. I wonder if matlab provided such a built-in function or input format but we don't know yet?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by