The Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: How to import data without losing much precision
Replies: 5   Last Post: Dec 3, 2012 9:44 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]

Posts: 113
Registered: 11/22/09
How to import data without losing much precision
Posted: Dec 2, 2012 5:19 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

I'm trying to import some data, which was created by C code, into Matlab without losing much precision. Can someone show me an example of how to do so?

I have about 52 decimal places of precision, with N=16 numbers on a line, like this:


I've tried using dlmread, csvread and importdata, but they cut off precision.

Now I am trying to use textread, because the format string specifier might let me keep precision. But I have not had any luck. I tried following example 4 in the documentation:

EDU> data=textread('u1.csv.txt', '%60.51f', 16, 'delimiter', ',');
EDU> sprintf('%.20e', data(2,1))
ans =

EDU> data=textread('u1.csv.txt', '%f', 'delimiter', ',')
(doesn't import data as a matrix)
EDU> sprintf('%.20e', data(2,1))
ans =

EDU> data=textread('u1.csv.txt', '%f', 16, 'delimiter', ',')
(reads only one line, but there's probably a way to read the "next" line)
sprintf('%.20e', data(2,1))
ans =

I've tried other things, too, but I cannot get any more precision. You can see that their all losing precision after about 16 decimal places.

I have (and can create) other formats for the input file. Other formats that I have are u1.fixedWidth.txt and, which look like you'd expect them to look (u1.fixedWidth is printed with "%60.52f" and is printed as "%.52f\t"). But this also loses precision:

EDU>> data=textread('u1_0000000.fixedWidth.txt', '%60.52f', 16);
EDU>> sprintf('%.20e', data(2,1))
ans =

Could someone show me an example of how to import my data with the most precision?
Thanks you.

Note that I am using student version of Matlab R2009a (and cannot upgrade it) on a 64-bit Windows 7 machine. I don't really know how much precision my version of Matlab has (or how to find out).

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum at NCTM 1994-2018. All Rights Reserved.