DMUG-Archiv 2004

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Exportproblem

Guten Morgen André && Winfried,

Nix da mit C/C++ und Perl - man kann auch in Mathematica low level prozedural hacken. In dem Fall habe ich nach 30 Minuten mit Export[] aufgegeben: man will diese Matrix herausschreiben, und nicht unbedingt Export[] benutzen. Man sollte die Berechnung der Statistik (Herstellen des Ergebnisses) von der Formatierung und von der Ausgabe trennen und einfach low level herausschreiben. Das Ganze verpacken Sie in eine ExportProzedur (wie hier in der DMUG schon öfter diskutiert) und machen Ihre verschiedenen Formate und den Datenfilenamen zu Eingabeparametern. Mit anderen Worten:

In[23]:= Remove[matrix]
matrix = ReadList["test\Dat_10_15.txt", {Table[Real, {15}], {Real}}, \
RecordLists -> False];

In[48]:=
(* das Ergebnis matrixR herstellen *)
Remove[matrixR];
matrixR = {};
For[i=1,i?10,i++,
   FeatureDiff=FeatureInput[[i]]-Min[FeatureInput[[i]]];
AppendTo[matrixR, Join[FeatureDiff-Mean[FeatureDiff], Last[matrix[[i]]]]]
   ];

In[85]:=
(* Formatiere und Exportiere *)
DeleteFile[".\\test\\TabR.dat"];
streaM = OpenWrite[".\\test\\TabR.dat"];
For[z = 1, z ? Length[matrixR], z++,
 aString = "";
 For[s = 1, s < Length[matrixR[[z]]], s++,
aString = StringJoin[aString, ToString[NumberForm[matrixR[[z, s]], {4, 3}, ExponentFunction \[Rule] (Null &)]]," "];
   ];
aString = StringJoin[aString, ToString[NumberForm[Last[matrixR[[z]]], {1, 0}, NumberPoint \[Rule] "\n"]]];
 WriteString[streaM, aString];
 ]
Close[streaM];

In[89]:=
!!.\\test\\TabR.dat

From In[89]:=
-0.014 -0.014 -0.014 0.01 -0.014 -0.014 -0.014 0.018 0.025 0.018 0.018 -0.021 0.01 0.002 0.01 1 0.027 0.02 -0.004 0.02 0.02 0.004 -0.004 0.004 0.012 -0.092 0.02 0.004 -0.004 0.004 -0.027 0 0.015 -0.017 0.007 -0.001 -0.009 0.007 -0.009 0.015 0.022 0.007 -0.009 -0.009 -0.017 -0.001 -0.001 1 0.045 0.029 0.006 -0.002 0.006 0.006 -0.033 0.006 -0.002 -0.026 -0.002 0.006 -0.018 -0.01 -0.018 0 0.041 -0.055 0.01 0.041 -0.055 0.01 0.002 0.01 0.002 0.01 0.002 -0.021 0.002 0.01 -0.014 1 -0.009 -0.001 -0.04 -0.017 -0.017 -0.009 -0.001 -0.001 0.007 0.022 0.014 0.014 0.022 0.014 0.007 0 -0.012 -0.004 0.02 0.012 0.012 -0.012 -0.004 0.012 -0.004 -0.004 -0.012 -0.004 -0.004 -0.012 0.012 1 -0.024 -0.031 -0.024 0.000 0.000 -0.024 0.031 0.000 0.000 0.031 0.015 0.000 0.031 0.000 -0.008 0 0.01 -0.029 -0.021 -0.029 -0.005 0.002 0.01 0.018 0.018 0.034 0.018 0.002 0.01 -0.005 -0.029 1 -0.267 -0.298 -0.275 -0.314 -0.267 -0.29 -0.282 -0.251 -0.323 0.565 0.565 0.572 -0.267 0.565 0.565 0

Schönen Sonntag wünscht
Udo.

Andre El-Ama wrote:

Hallo Winfried,

erst mal Danke, für Deine Bemühungen!

Zum Problem:
Wie man in C/C++ eine MMA-Datei (ASCCII Datei) formatiert und erzeugt ist
nicht das Problem, sondern wie man in MMA Daten in eine benutzerformatierte
ASCCII Datei exportiert.

Wie ursprünglich in der meiner Anfrage erwähnt, legt das Inputfile
"Dat_10_15.txt" das Ausgabe Format fest. Welches ich dann noch einmal
spezifiziert habe. Dieses Format soll dann so von MMA erzeugt werden.

Sieht so aus, als mußte ich mir in (perl, C/C++, oder etc.) einen Parser
basteln, der mir aus dem "Table"-Format von MMA mein gewünschtes Format
erzeugt. Schwierig dabei, wird das Loswerden des Exponentialformats, ganz
zuschweigen vom erhöhten Arbeitsaufwand und einer erhöhten
Fehleranfälligkeit.

Ich bin der Meinung, MMA sollte eine so simple Geschichte, wie einen
benutzerformatierten ASCCII-Export bewältigen können und suche den Fehler
lieber bei mir. Hoffentlich kann mir da noch jemand weiterhelfen.

Mit freundlichen Grüßen

[André El-Ama]


-----Original Message-----
From: owner-demug@XXXXXXX.ch [mailto:owner-demug@XXXXXXX.ch]On
Behalf Of Winfried Bilgic
Sent: Saturday, January 24, 2004 2:24 PM
To: Andre El-Ama
Cc: Mathematica User Group Group
Subject: Re: Exportproblem

Hallo Andre,

ich nutze auch Mma zur Weiterverarbeitung, allerdings mache ich das
etwas anders... anbei die Codeschnipzel in C

Denke das hilft, Viel Erfolg Winn


*************************************
       FILE *MmaFile;
       MmaFile=fopen("Datei.nb","w");
       fprintf(MmaFile,"Remove[\x22Global`*\x22]\n");
       fprintf(MmaFile,"Off[General::spell]\n");
       fprintf(MmaFile,"Off[General::spell1]\n");
       fprintf(MmaFile,"Off[Part::pspec]\n");
       fprintf(MmaFile,"(*\tTimeSteps: %d\t*)\n",nsteps);


       fprintf(MmaFile,"EzListe%06d={",T);
               for(j=0;j<JE;j++)
                       {
                               fprintf(MmaFile,"{");
                               for(i=0;i<IE;i++)
                                       {
                                               if (i<IE-1) {
fprintf(MmaFile,"%9.6f,",ez[i][j]); }
                                                       else
fprintf(MmaFile,"%9.6f",ez[i][j]);
                                       }
                               fprintf(MmaFile,"}");
                               if (j<JE-1) fprintf(MmaFile,",\n");
                       }
               fprintf(MmaFile,"};\n");
               fprintf(MmaFile,"g1=ListPlot3D[EzListe%06d,PlotRange
%c[Rule] {-0.62,
+0.62},Mesh %c[Rule] False, DisplayFunction %c[Rule]
Identity];                                              \n",T,92,92,92);
               fprintf(MmaFile,"g2=ListContourPlot[EzListe%06d,PlotRange
%c[Rule]
{-0.62, +0.62},ContourShading %c[Rule] False, DisplayFunction %c[Rule]
                                               Identity];\n",T,92,92,92);
               fprintf(MmaFile,"Show[GraphicsArray[{g1,g2}],DisplayFunction
%c[Rule]
$DisplayFunction, PlotLabel %c[Rule] \x22Timestep %06d\x22, ImageSize

%c[Rule]{720,300}];\n",92,92,T,92);

       fclose(MmaFile);
*************************************

On 23.01.2004, at 18:56, Andre El-Ama wrote:

Hallo,

Ich habe folgendes Problem in Mathematica 4.2 (Student) für Windows.
Ich hatte gern Daten aus einer ASCCII Datei eingelesen, mit MMA
bearbeitet
und im gleichen Format wieder abgespeichert.
Das Einlesen sowie die Berechnungen erfolgen ohne Probleme, das
Exportieren
im Einleseformat ist mir jedoch bislang nicht gelungen.

Im Anhangs-Zip befinden sich:

Die Eingabedatei "Dat_10_15.txt" die gleichzeitig das Format der
Ausgabe
festlegt, sowie das notebook  "datac.nb" und die Ergebnisse meiner
bisherigen Bemühungen "Tab1.dat" "Tab2.dat".

Das gewünschte Ausgabeformat noch mal spezifiziert:

- ASCCII wie das Eingabe File ein Datensatz pro Zeile
- keine "geschweiften" Klammern
- nach dem Dezimalpunkt 3stellig
- ohne Exponentialform
- Leerzeichen als Trennzeichen

Warum, das ganze?
Die Daten sollen mit MMA zwischen verarbeitet und später anderen
Applikationen als Dateninput zur Verfügung stehen.

Sollte sich das Problem als üblicher Error Support von Microsoft
herausstellen, kein Problem ich arbeite parallel mit Mathematica für
Linux,
da jedoch nur mit Version 4.1. (Student)

Es wäre fantastisch, wenn mir da jemand weiterhelfen könnte oder mich
zu
mindest auf ein generelles Problem aufmerksam machen könnte. Danke!

Mit freundlichen Grüßen

[André El-Ama]


-----------------------------------------------------------------------
-----
-----------------------
André El-Ama
Postfach 1725
26007 Oldenburg

Tel.: +49 441 87002
Fax: +49 441 87013
e-mail: Andre@XXXXXXX.de

<test>



Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html