WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Gemischte 32bit float binary und text Datei einlesen

 

StarkEffect
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 24.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 05:40     Titel: Gemischte 32bit float binary und text Datei einlesen
  Antworten mit Zitat      
Hi zusammen,

versuche schon seit längerem in Matlab einen Datensatz einzulesen (Matlab2007a), der zu Beginn aus normalem Text und danach aus 32bit floating binary Daten besteht. Dabei habe ich bis jetzt versucht den Text zu löschen und die binären Daten (Dateiname test.bin) mit

Code:
fid=fopen('test.bin')
A = fread(fid,inf,'float32')
status = fclose(fid)


einzulesen. Das Einlesen klappt auch soweit, allerdings werden Teile der Daten nicht richtig entschlüsselt. Insegsamt sind ca 526k Datenpunkte enthalten, allerdings werden nur etwa 320k Punkte richtig eingelesen. Wenn ich dann z.B. Leerzeichen oder Zeilen vor dem Binärcode einfüge werden die verbleibenden ca. 200k Datenpunkte richtig eingelesen. Bis jetzt habe ich allerdings noch keinen Weg gefunden den kompletten Datensatz richtig einzulesen. Entweder wird das erste oder das letzt Segment nicht richtig dargestellt. Liegt es vielleicht daran, dass ich den Text lösche und sollte ich vielleicht alles direkt einlesen? Wenn ja wie würde das funktonieren? Da ich mich mit Binärdaten nicht so gut auskenne würde ich mich über alle weitern Tipps freuen, die vielleicht zum Erfolg führen könnten.

Vielen dank im Vorraus

Sven

Datensatz.zip
 Beschreibung:
Einzulesender Datensatz. Die Datei test.dat enthält Text und binary code, wohingegen test.bin nur den binary code enthält.

Download
 Dateiname:  Datensatz.zip
 Dateigröße:  3.33 MB
 Heruntergeladen:  719 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.06.2013, 10:37     Titel: Re: Gemischte 32bit float binary und text Datei einlesen
  Antworten mit Zitat      
Hallo StarkEffect,

Wie stellst Du denn fest, dass die Daten falsch eingelesen werden?
Es ist verblüffend, dass das Einlesen funktioniert, wenn Du Zeichen am Anfang einfügst. Das dürfte eigentlich auf keinen Fall geschehen.

Wie kann man denn feststellen, wo der Text aufhört und die Binärdaten beginnen?
Es ist übrigens ausgesprochen tückisch Text und Binär-Daten zu mischen. Wenn man das File in einem Editor öffnet, könnten die Zeilen-Ende-Zeichen beim Abspeichern verändert werden. Und im Binär Teil können die ASCII-Werte 10 und 13 beliebig auftauchen. Auch TAB wird von manchen Editoren automatisch in Spaces umgewandelt. Im Endeffekt bringt also der Text-Teil eine große Gefahr mit sich, so dass der Vorteil dies direkt editieren zu können nicht zum Tragen kommt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
StarkEffect
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 24.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 18:46     Titel:
  Antworten mit Zitat      
Hi Jan,

danke für deine schnelle Antwort. Genau das ist auch der Grund warum ich die Daten einlesen will.

Die Daten werden von einer freien Software (MIDAS) dessen Source Code aber nicht zugänglich ist während eines Experiments erstellt (also nicht von mir). Im Anschluss werden die Daten in einem von der selben Gruppe entwickelten Programm (PREDATOR, siehe link http://www.magnet.fsu.edu/usershub/.....ns/icr/icr_software.html) eingelesen und verarbeitet. Wenn ich dieses Programm verwende kann ich mir ansehen, wie die Daten aussehen sollten. Daher weiß ich auch das bei mir etwas schief geht. Finde die Wahl binary code und Text zu mischen auch sehr sehr ungeschickt. Leider müssen wir aber das Programm verwenden um die Daten zu akquirieren.

Allerdings erlaubt das Program nur sehr begrenzt die Daten zu verarbeiten und anderes zu prozessieren, geschweige denn selbst Routinen zu programmieren. Daher wollte ich ein eigenes Programm schreiben um die Daten besser auszuwerten zu können. Allerdings mit nur wenig Erfolg. Auch die Leute dort sind wenig kooperationsbereit (obwohl das Programm ja frei zugänglich ist). Hatte einige Beispieldaten angehängt. Hast du ein Idee wie es funktionieren könnte?

Viele Grüße

Sven
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.06.2013, 23:31     Titel:
  Antworten mit Zitat      
Hallo StarkEffect,

Ich kann mir noch nicht vorstellen, wie ich helfen könnte. Bisher weiß ich nur, das "Teile der Daten nicht richtig entschlüsselt" werden und die ungefähre Anzahl der korrekten oder falschen Daten.

Wie könnte ich aber richtige und falsche Daten auseinanderhalten? Wodurch fällt Dir denn auf, dass die Daten falsch sind?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
StarkEffect
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 24.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 01:50     Titel: Re: Gemischte 32bit float binary und text Datei einlesen
  Antworten mit Zitat      
Hi Jan,

wie gesagt, benutze ein anderes Programm, dass ebenfalls die Daten verarbeiten kann. Daher kann ich mir anschauen wie der Datensatz aussehen soll! Weiß daher welche Daten falsch und welche richtig eingelesen werden. Allerdings ist dieses andere Programm nicht sonderlich praktikabel. Gibt es denn eine Möglichkeit binäre Daten erst ab einer gewissen Zeile einzulesen oder einige Zeilen aus einer Datei zu löschen, ohne den Editor zu benutzen?

Viele Grüße

Sven

P.S.: Habe jetzt mal versucht einen anderen Editor zu benutzen um den Text aus dem Datensatz zu entfernen. Nun scheint es zu funktonieren. Allerdings löst dies nicht wirklich mein Problem, da wir sehr viele Datensätze generieren und ich gerne das Einlesen und Verarbeiten automatisieren würde.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.06.2013, 08:54     Titel: Re: Gemischte 32bit float binary und text Datei einlesen
  Antworten mit Zitat      
Hallo StarkEffect,

"Ich benutze ein anderes Programm" klärt das Problem nicht. Wie könnte ich unterscheiden, welche Daten richtig sind?

Ich würde ein solches File so einlesen:
Code:
FID = fopen(FileName, 'r');
if FID == -1, error('Cannot open file: %s', FileName); end
skipLines = 27;
for k = 1:skipLines
   fgetl(FID);  % Einlesen, strings aber ignorieren
end
data = fread(FID, Inf, 'float32');
fclose(FID);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
StarkEffect
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 24.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 19:29     Titel:
  Antworten mit Zitat      
Dank dir.

Habe es zwar jetzt etwas anderes gemacht, kannte die Befehle
Code:
und
Code:
aber nicht daher war mit nicht klar wie ich das lösen konnte.

Dank dir für den Hinweis und

viele Grüße

Sven
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.