Re: Formatted Output (Exporting Data)
- To: mathgroup at smc.vnet.net
- Subject: [mg64455] Re: Formatted Output (Exporting Data)
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Fri, 17 Feb 2006 04:12:43 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
On 2/16/06 at 3:05 AM, thenders at gmail.com (tlhiv) wrote: >f[x_]:=x^2 >Export["foo.d",Table[{x, f[x]}, {x, -1, 1, 0.2}],"Table"] >This generates a file "foo.d" that look like: > >-1 1 -0.8 >0.6400000000000001 -0.6 <rest snipped> >I would very much like to have "foo.d" look like: >-1 1 >-0.8 0.64 <rest snipped> >and with the delimeter being a TAB instead of a SPACE. In >particular, the precision used above is not so good. I would like >everything rounded off to, say, 6 significant digits. An analogous >C style output would be something like >fprintf(fid,"%6f\t%6f\n,x,f) > >and is performed for each "element" of x. Can this be accomplished >easily with Mathematica? Yes. I believe the simplest solution is to use NumberForm to set the desired precision, convert everything to strings then export the data. For your specific example, that is 2 column data, the following function will do the conversion format[{x_, y_}, n_] := StringJoin[ToString[NumberForm[x, n]], "\t", ToString[NumberForm[y, n]]] And the file foo.dat can be created with Export["foo.dat", format[#, 2]&/@Chop[Table[{x, f[x]}, {x, -1, 1, 0.2}]], "Table"] Notice, I've used Chop here to keep NumberForm from outputing 2 significant digits of some small value that should really be zero. This could have been put in the function format instead. -- To reply via email subtract one hundred and four