2016-06-26 7 views
1

Ich habe eine Binärdatei, die mehrere komplexe Zahlen des Typs complex64 enthält? (d. h. vier Bytes vom Typ float für den reellen Teil und weitere vier Bytes für den imaginären Teil). Die Real- und Imaginärteile werden gemultiplext, so dass der Realteil zuerst gespeichert wird und dann der Imaginärteil folgt.Wie lese ich eine Binärdatei vom Typ complex64 Werte in Python

+0

Können Sie ein Beispiel von dem zeigen, was Sie haben? –

+0

complex64 ist eine komplexe Zahl, die durch zwei 32-Bit-Floats (reale und imaginäre Komponenten) dargestellt wird. Ist es das, was Sie in Ihrer Datei haben? –

+0

@Moses, ich weiß nicht, ob es eine Möglichkeit gibt, hier hochzuladen, aber die komplexen Werte in der Datei wurden aus einem Programm namens GNURadio geschrieben, und die Dokumentation sagt, dass eine Binärdatei komplexer Zahlen das reelle und imag speichert Teile als 32-Bit floats (erstes Element ist das Reale und das zweite ist das imag) Ich habe versucht, die Datei mit dem folgenden Befehl zu lesen, aber ich konnte nicht die Zahlen, die ich erwartet hatte: 'numpy.fromfile ('file_name', dtype = komplex) ' @Jacques, ja das ist was ich habe. Ich erwartete '[0, 2 + j, -3.14-7.99j]' aber ich bekomme etwas wie: '[0 + 7.81e-3j, -1.29e + 5 + 0j, 7.8e-3 -1.29e + 5j ] ' – Doe

Antwort

1

Ich war in der Lage, den Fehler zu reproduzieren, indem Sie ein Array von complex64 von [0, 2+j, -3.14-7.99j] erstellen, speichern Sie es in eine Datei und lesen Sie es als integrierte Python complex Art.

Das Problem ist, dass der eingebaute complex Typ die Größe einer C double hat, die, abhängig von Ihrer Plateform, von 32-Bit (256 Bits auf meinem Gerät) abweichen kann.

Sie müssen verwenden, um Ihre Datei korrekt zu lesen, d. H. Sicherstellen, dass die komplexen Zahlen als zwei 32-Bit Gleitkommazahlen gelesen werden.

Verwandte Themen