DMUG-Archiv 2005

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

Re: datei einlesen

NachrichtHallo,

a) LabView schreibt immer BigEndian Daten, es hilft also nix 
   "Real32" in der falschen Byte-Ordnung einzulesen

b) das Trennzeichen für die Dezimalen hat nichts mit der Programmiersprache
   zu tun sondern mit dem kulturellen Hintergrund des Landes, im
   deutschsprachigen Raum wird ein Komma verwendet, in den englischsprachigen
   Ländern ein Punkt, die Anpassung des Betriebssystems an das jeweilige
   Land kümmert sich darum -- deshalb verwendet z. B. Excel in Deutschland
   1,2 in Amerika aber 1.2

c) Tausender-Trennzeichen sind eine sehr gute Sache, und es wäre schon schön
   wenn Mathematica kleine Zwischenräume bei den Zahlen für die
   Formatierung einfügen würde einfach weil

   3 149 265 123 567 356
   besser zu lesen ist als
   3149265123567356

d) kann mir jemand mal verraten, welchen Sinn es hat, ein offensichtlich
   falsches Einlesen der Daten zu posten ? Es gibt noch einige hundert
   Varianten wie man beim Einlesen in Mathematica völligen Schrott produziert,
   aber die muß man ja wohl nicht der Allgemeinheit zugänglich machen ...

Gruß
  Jens


  ----- Original Message ----- 
  From: Nowak Robert 
  To: Carsten Panzner ; Mathematica Forum 
  Sent: Friday, June 10, 2005 11:05 AM
  Subject: RE: datei einlesen


  was heist anderes programm ?
  welches programm ?

  mit single-presicion numbers sind mit sicherheit binäre IEEE 4byte floatingpoint zahlen gemeint.
  die könnte man sicher mit  BinaryRead[] oder BinaryReadList[] einlesen.
  da muss man halt einiges an arbeit investieren.

  hier mal ein schnellschuss wenn man das erste byte überliest und die weiteren 40bytes als jeweils 4byte floatingpoint 
liest erhält man 10 zahlen die möglicherweise sinn machen (oder auch nicht)

  weiters zu beachten ist das in jeder vernünftigen programmiersprache (wie z.b. mathematica) das dezimaltrennzeichen 
der punkt "." ist und nicht irgendwelche kommmas oder strichpunkte, auch gibt es keine tausendertrennzeichen oder 
ähnlichen unsinn.

  BinaryRead["09.dat",Join[Table["Byte",{1}],Table["Real32",{10}]]]//Rest

  {720.054,578.195,2047.23,1751.61,981.46,1839.73,1806.45,1185.64,1606.76,867.023}

  l.g. robert
    -----Original Message-----
    From: Carsten Panzner [mailto:carsten@XXXXXXX.de] 
    Sent: Thursday, June 09, 2005 9:54 PM
    To: Mathematica Forum
    Subject: datei einlesen


    hallo

    ich möchte eine Datei in mathematica einlesen. ein beispiel befindet sich im anhang. die datei wurde von labview 
erstellt.

    Über die Art der datei ist in der hilfe folgendes angegeben:

    "Sie können dieses VI zum Schreiben skalierter Daten, die von Datenerfassungs-VIs erfasst wurden, verwenden, ohne 
deren Darstellung zu ändern. Verwenden Sie dieses VI mit Fließkommazahlen  ... schreibt ein array von single-presicion 
numbers (SGL) to a bytestream file."

    In einem editor ist nix ausser "zeichenmüll" zu erkennen. Wenn ich die datei mit einem anderen programm anschaue 
sieht der inhalt so aus:

    Index;Y-Wert;2200;1;0
    0;992,050048828125
    1;990,1884765625
    2;987,624938964844
    3;983,810180664063
    4;981,460266113281
    5;979,873352050781
    6;979,232482910156
    7;976,821533203125
    8;975,38720703125
    9;975,02099609375
    10;974,837890625
    11;975,26513671875
    12;974,258056640625
    13;975,9365234375
    14;976,4248046875
    15;976,72998046875
    16;976,85205078125
    17;976,72998046875
    18;976,1806640625
    19;974,89892578125
    20;974,624267578125
    usw.

    die erste zeile wird in mathematica nicht benötigt und kann verworfen werden.
    die datei soll so eingelesen werden dass eine tabelle mit wertepaaren entsteht. etwa so:

    {
    {0,992.050048828125},
    {1,990.1884765625},
    {2,987.624938964844},
    {3,983.810180664063},
    {4,981.460266113281},
    {5,979.873352050781},
    {6,979.232482910156},
    {7,976.821533203125},
    {8,975.38720703125},
    {9,975.02099609375},
    {10,974.837890625},
    {11,975.26513671875},
    {12,974.258056640625},
    {13,975.9365234375},
    {14,976.4248046875},
    {15,976.72998046875},
    {16,976.85205078125},
    {17,976.72998046875},
    {18,976.1806640625},
    {19,974.89892578125},
    {20,974.624267578125},
    usw.
    }

    meine probleme sind also das entziffern des kauderwelsch in der datei, 
    das ersetzen des komma durch einen punkt,das ersetzen des semikolon durch ein und das erstellen einer tabelle.

    weiß da jemand weiter?

    dankedankedanke

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

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