MATLAB Answers


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

Asked by Alexander H on 1 Feb 2015
Latest activity Commented on by 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?


Sign in to comment.

1 Answer

Answer by 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

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.