DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re: Schreiben einer Matrix im Fortran-Format

martin.heimann@XXXXXXX.de said:
> Warum funktioniert die folgende Funktion nicht; resp. warum schreibt
> diese Funktion die Matrix nicht in FortranForm raus, obwohl der
> Outputstream doch so eroeffnet wurde? Ich benutze MMA 3.0 auf einem
> Macintosh. 

Die Interaktion zwischen Formattypen und den Ausgabefunktionen ist etwas
kompliziert. In diesem Fall liegt es aber daran, dass WriteString[] eben
das Argument in einen String (Zeichenkette) umwandelt, dem die Fortran-
Form dann nichts mehr anhaben kann. Meine Lösung, aus dem Paket
POVray.m (The Mathematica Programmer II), besteht darin, die Datei
in OutputForm zu eröffnen, und dann im Wesentlichen Write[FortranFrom[r]]
zum Ausschreiben der Zahlen zu verwenden. Da Write[] aber die Ausgabe
mit einem Zeilenende abschließt (was wohl der Grund ist, dass Martin
Heimann WriteString[] verwendet hat?), muss eine Zeile in *einem* Aufruf
geschrieben werden. Dazu kann mann mittels

In[16]:= Infix[{a,b,c},", "]

Out[16]= a, b, c

eine Liste als Komma-getrennte Werte schreiben, oder wie gewünscht mittels

In[17]:= Infix[{a,b,c},"\t"]

Out[17]= a      b       c

mittels TAB getrennt. Hier eine mögliche Lösung:

writeLine[s_, l_List] := Write[s, Infix[FortranForm/@l,"\t"]]
writeMatrix[s_,l_List] := writeLine[s,#]& /@ l

Damit:

In[3]:= s = OpenWrite["/tmp/test",FormatType -> OutputForm, PageWidth -> Infinity];

In[4]:= mat=Table[10.^Random[Real,{-10,10}], {5},{5}];

In[5]:= writeMatrix[s, mat];

In[6]:= Close[s]

Nun steht in /tmp/test:

44.81805319008195       2.153659305564295e9     8.03526751867384        9.7705774588724e-7      43.39430518477922
1.997119383792198e7     18199.00990984631       2.00719193507135e-9     2.382151275190028e-8    3.365659944858651e7
5.554955255774435       3.729825046847594e6     5.54384520322161e6      0.01205734994026847     2.223773591334697e6
205772.1266764749       6.050328083893752e-9    3.733004077002189e-6    4.748687123397138e8     8.48382289694392e-7
1.582239743519468e-9    0.00001221409272658594  2579.785236041661       0.00003698683176319748  0.353036250104146

Roman Mäder


Verweise:
Schreiben einer Matrix im Fortran-Format
Martin Heimann, 09.09.1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:44