Re: 2D array to tab delimited file
- To: mathgroup at smc.vnet.net
- Subject: [mg24738] Re: 2D array to tab delimited file
- From: "Louis M. Pecora" <pecora at anvil.nrl.navy.mil>
- Date: Wed, 9 Aug 2000 02:31:40 -0400 (EDT)
- Posted-and-mailed: yes
- References: <8mdlkm$5in@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
[[ This message was both posted and mailed: see
the "To," "Cc," and "Newsgroups" headers for details. ]]
In article <8mdlkm$5in at smc.vnet.net>, L Lobo <leonlobo at hotmail.com>
wrote:
> I am creating a large 2D array and need to save it to file (tab delimited)
> which is then read by LabVIEW. I have tried using Export but the spaces
> created between columns varies. I have looked up old postings on this
> newsgroup but the solutions I've seen seem to be a bit longwinded. I have
> version 4. Any ideas?
Here are some routines I wrote to output the type of files you want.
Hope these help:
(* Array and List I/O to space-delimited CR at line end files *)
(* -------- arrayWrite ----------------------------------
Output numbers from array in text format with spaces between each
list
element and a CR after each list *)
arrayWrite[filename_,array_] := Module [{thefile=OpenWrite[filename]},
If[thefile==$Failed,
Print["***ERROR. Could not open file"];
Return[Null]; ];
arrayWriteLP[thefile,array];
Close[thefile];
Return[Null] ]
(* Array and List I/O to tab-delimited CR at line end files *)
(* -------- arrayWrite ----------------------------------
Output numbers from array in text format with tabs between each list
element and a CR after each list *)
arrayWritetab[filename_,array_] := Module
[{thefile=OpenWrite[filename]},
If[thefile==$Failed,
Print["***ERROR. Could not open file"];
Return[Null]; ];
arrayWritetabLP[thefile,array];
Close[thefile];
Return[Null] ]
(* -------- listWrite -----------------------------------------
Output numbers from list in text format with CR after each *)
listWrite[filename_,list_] := Module [{thefile=OpenWrite[filename],d},
If[thefile==$Failed,
Print["***ERROR. Could not open file"];
Return[Null]; ];
d=Depth[list];
If [d != 2,
Print["***ERROR. Input list has wrong depth. Can only be a single
list"];
Close[thefile];
Return[Null] ];
Scan[(
WriteString[thefile,#];
WriteString[thefile,"\n"])&,
list ];
Close[thefile]; ]
--- Low level routines ----------------------------------
(* Write out to file with spaces after numbers *)
arrayoutLP[thefile_,array_] := (
Scan[(
WriteString[thefile,#];
WriteString[thefile," "])&,
array ];
WriteString[thefile,"\n"]; )
arrayWriteLP[thefile_,array_] := Module[{d,i},
d=Depth[array];
If[d < 2,
Print["***ERROR. Input array has no elements to output (Depth <
2)"] ];
If[d == 2,
arrayoutLP[thefile,array] ,
Do[
arrayWriteLP[thefile,array[[i]] ],
{i,Length[array]}]; ] ]
(* Write out to file with tabs after numbers *)
arrayouttabLP[thefile_,array_] := (
WriteString[thefile,array[[1]]]; (* write first number *)
Scan[(
WriteString[thefile,"\t"];
WriteString[thefile,#];)&, (* write rest of numbers *)
Rest[array] ];
WriteString[thefile,"\n"]; )
arrayWritetabLP[thefile_,array_] := Module[{d,i},
d=Depth[array];
If[d < 2,
Print["***ERROR. Input array has no elements to output (Depth <
2)"] ];
If[d == 2,
arrayouttabLP[thefile,array] ,
Do[
arrayWritetabLP[thefile,array[[i]] ],
{i,Length[array]}]; ] ]