Re: exporting numerical data
- To: mathgroup at smc.vnet.net
- Subject: [mg106686] Re: exporting numerical data
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Thu, 21 Jan 2010 04:51:58 -0500 (EST)
- References: <hj6qea$8q2$1@smc.vnet.net>
Am 20.01.2010 12:46, schrieb:
> Hi,
>
> I have the following problem:
> I've created a table in mathematica that looks like this:
> TabIntegral={ {{m_1,k_1,F(m_1,k_1)},{m_1,k_2,F(m_1,k_2)},...
> {m_1,k_N,...,F(m_1,k_N)}} , {{m_2,k_1,F(m_2,k_1)},{m_2,k_2,F
> (m_2,k_2)},...,{m_2,k_N,F(m_2,k_N)}} , ... , {{m_N,k_1,F(m_N,k_1)},
> {m_N,k_2,F(m_N,k_2)},...,{m_N,k_N,F(m_N,k_N)}} };
> So something like an array of {x,y,F(x,y)} records. Now, I'd like to
> save this in human readable form in a file in such a way that I'd have
> three columns:
> m_1 k_1 F(m_1,k_1)
> m_1 k_2 F(m_1,k_2)
> ...
> m_1 k_N F(m_1,k_N)
> m_2 k_1 F(m_2,k_1)
> ...
> m_2 k_N F(m_2,k_N)
> ...
> m_N k_N F(m_N,k_N)
>
> I've tried like that:
> Export["TabIntegral.dat", TabIntegral, "Table"]
> but I got smth like this:
> {0, 0, 5.641587818867172*^-9} {0, 0.2271979480396873,
> 5.6073615530027356*^-9} {0, 0.4543958960793746,
> 5.503771348500282*^-9}...
> which is definitely not what I need. So now I guess my question is
> clear, how can I get what I need?
you need to get rid of one level of lists, Flatten will help to do that,
like so:
data = Table[{x, y, Exp[-20*x*y]}, {x, 0., Pi, Pi/5.}, {y, 0., Pi,
Pi/5.}]
Export[FileNameJoin[{$HomeDirectory, "Desktop", "tst.dat"}],
Flatten[data, 1], "Table"]
> The second question would be the following: as you see I have in my
> file small numbers such like 5.6073615530027356*^-9 that I'd like to
> read later on with a C-written program. If I'll leave it in this
> format as it is, there's no way C-program can read that. So how to
> write/format such small numbers while exporting to guarantee that I'll
> be able to C-read them later?
that is slightly more complicated, you could try something like this,
but there might be other and better possibilities:
Export[
FileNameJoin[{$HomeDirectory, "Desktop", "tst.dat"}],
StringJoin[
Riffle[Map[
Function[row, Riffle[ToString[CForm[#]] & /@ row, "\t"]],
Flatten[data, 1]], "\n"]],
"Text"
]
hth,
albert