|
|
Definition der float Dateien in Matlab |
|
dresi |
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 02.01.09
|
|
|
|
Wohnort: Zürich
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.02.2010, 16:47
Titel: Definition der float Dateien in Matlab
|
|
Hallo miteinander,
Ich will eine binäre Datei einlesen und habe Probleme bei der Typen convertierung. Die Datei stammt von einem Messgerät. Der Kanal ist als float-Typ gespeichert (nach IEEE-Standard) und zwar in folgender Form:
Adresse+0 Adresse+1 Adresse+2 Adresse+3
7 - 0 15 - 8 0, 22 - 16 0, 7 - 1
mmmmmmmm mmmmmmmm emmmmmmm seeeeeee
wobei:
m : Mantisse
e : Exponent
s : Vorzeichen
wenn ich nun eine Kanal mit fread einlese:
dann kommt nur nonsens raus (dasselbe bei Single, float32 etc).
Wenn ich Matlab vorschreibe es solle 32 bit einlesen
dann sehe ich zwar das Signal dass ich suche, aber nur die werte grösser eins. diejenigen zwischen 0 und 1 werden als integer interpretiert und sind natürlich viel zu gross.
FRAGE:
Wie kann ich die Daten einlesen so dass es passt?
Was läuft bei der konvertierung falsch? Wie ist Float in Matlab definiert?
Vielen Dank im Voraus.
Beste Grüsse,
Dresi
|
|
|
|
|
Tim |
Forum-Century
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 10.02.2010, 19:30
Titel:
|
|
Matlabs single und double sind auch IEEE 754 single und double. Eigentlich sollte die Nutzung von
reichen. Evtl. macht fread noch irgendwas komisches und versaut die eigentlich richtige Byteorder (so wie du es hingemalt hat, ist es little endian, was auch einem intel PC entspricht) die kannst du dann mittels
fixen.
hth
|
|
|
dresi |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 02.01.09
|
|
|
|
Wohnort: Zürich
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.02.2010, 22:08
Titel:
|
|
Danke Tim für die Antwort,
jetzt habe ich aber ein kleines Logikproblem:
wie verwende ich denn nun dem fread?
Soll ich einen float einlesen den ich dann über
in single umwandle (was in meinen Augen wenig Sinn macht) und mit
zurück auf die ursprüngliche Form wurschtle:
oder wurschtle ich direkt die Ausgabe von fread:
oder muss ich gar float einlesen, in einen double "typecasten" und dann Gehirnblitzdingsen wegen little Indian:
Ich bin zwar ein wenig müde, was den Eindruck noch verstärken mag, aber wie fread mit den Bytes herumjongliert ist mir ein wenig suspekt...
Gute Nacht allerseits
|
|
|
Tim |
Forum-Century
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 11.02.2010, 10:13
Titel:
|
|
Hmmm, eigentlich sollte das alles bereits mit fopen und fread erschlagen werden können. Man kann die byteorder (MACHINEFORMAT) ja auch bei fopen bzw. fread angeben. Damit würde ich mal rumspielen. Wobei es wie gesagt bereits das richtige Format sein sollte...
|
|
|
dresi |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 19
|
|
|
|
Anmeldedatum: 02.01.09
|
|
|
|
Wohnort: Zürich
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.02.2010, 09:07
Titel:
|
|
Ok, hat sich erledigt,Danke.
Der Fehler lag in einer etwas falschen Definition des Startpunktes, so dass fread zwar das richtige eingelesen hat, aber beim falschen Byte begonnen hat... Jetzt klappt's wunderbar.
Beste Grüsse,
Dresi
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|