Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'm having problems exporting a table of complex numbers. I have:

tablevalues=Table[M[a,b],{b,1,101},{a,-500+5*(b-1),500+5*(b-1),5}];
Export["trial.dat",tablevalues,"Table"];

But then when I try to import the data using:

Data=Import["trial.dat","Table"];

I find that the Table has changed (later commands in my code no longer work, despite the fact that they do work if I use tablevalues directly).

Any help would be really appreciated, thanks!

More info: the code for M is:

M[a_, b_] := l1[a, b] + l2[a, b] -l3[a, b];

where l1, l2 and l3 are calculated for different a and b (the full expressions are quite long).

share|improve this question
    
Could you also provide the code vor the symbol M? –  g3kk0 Jul 31 '13 at 9:57
    
I cannot find .dat in the list of possible export formats: http://reference.wolfram.com/mathematica/ref/$ExportFormats.html. It works fine when using Mathematica .mx for example. –  g3kk0 Jul 31 '13 at 10:04
    
@g3kk0 I've tried with .mx but it still doesn't work? –  Susan Jul 31 '13 at 10:14
    
@g3kk0 ah, leaving out the "Table" with .mx does seem to work. Thanks! –  Susan Jul 31 '13 at 10:28
    
For a readable version of your data you can also use something like Export["trial.dat",tablevalues,"Package"] or simply Export["trial.m",tablevalues]. Importing is then easy, especially with Get. Seems slower than .mx though, but uses less space. –  Yves Klett Jul 31 '13 at 11:21
show 1 more comment

2 Answers 2

up vote 2 down vote accepted

If you want to use the .dat format you should have a look at the tutorial http://reference.wolfram.com/mathematica/tutorial/ImportingAndExportingData.html.

Workaround 1

You can use Mathematica's .mx format to export and then import your data. You can have a look at the format description at http://reference.wolfram.com/mathematica/ref/format/MX.html.

M[a_, b_] := l1[a, b] + l2[a, b] - l3[a, b];
tablevalues = 
 Table[M[a, b], {b, 1, 101}, {a, -500 + 5*(b - 1), 500 + 5*(b - 1), 
   5}]; Export["trial.mx", tablevalues];

data = Import["trial.mx"];
data[[1, 1 ;; 5]]
(*{l1[-500, 1] + l2[-500, 1] - l3[-500, 1], 
 l1[-495, 1] + l2[-495, 1] - l3[-495, 1], 
 l1[-490, 1] + l2[-490, 1] - l3[-490, 1], 
 l1[-485, 1] + l2[-485, 1] - l3[-485, 1], 
 l1[-480, 1] + l2[-480, 1] - l3[-480, 1]}*)

Workaround 2

As Yves Klett pointed out, another nice workaround is to use:

Export["trial.m",tablevalues]

to store your data in a Mathematica package. Importing is then easy, especially with the Get function:

<<"trial.m"
share|improve this answer
add comment

After playing around a bit, I am surprised to find that this seems to be faster and uses far less diskspace than the .mx approach:

Export["trial.mx", tablevalues] // AbsoluteTiming
FileByteCount[%[[2]]]

(* {3.347335, "trial.mx"} *)
(* 7970752 *)

Export["trial.m.gz", tablevalues] // AbsoluteTiming
FileByteCount[%[[2]]]

(* {0.401040, "trial.m.gz"} *)
(* 140508 *)

data = Import["trial.m.gz"];
data[[1, 1 ;; 5]]

(* {l1[-500, 1] + l2[-500, 1] - l3[-500, 1], 
 l1[-495, 1] + l2[-495, 1] - l3[-495, 1], 
 l1[-490, 1] + l2[-490, 1] - l3[-490, 1], 
 l1[-485, 1] + l2[-485, 1] - l3[-485, 1], 
 l1[-480, 1] + l2[-480, 1] - l3[-480, 1]} *)
share|improve this answer
    
FWIW I mentioned this format here but I did not realize you could use the extension .m.gz directly without specifying the format. +1! –  Mr.Wizard Jul 31 '13 at 13:53
    
@Mr.Wizard interesting how the timings differ depending on content. Would you consider the question a duplicate, then? –  Yves Klett Jul 31 '13 at 15:43
    
No, I think it's reasonable to have a more focused question in this case. That post made no specific mention of complex numbers. –  Mr.Wizard Jul 31 '13 at 15:53
    
@Mr.Wizard Another thing is the timing - the .m takes forever and you can watch it being written incrementally on disk while the .gz really saves the day. Was not aware of that - might come in handy. –  Yves Klett Jul 31 '13 at 16:15
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.