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

Fehler beim Einlesen von binären Daten

 

Gahr

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2007, 20:11     Titel: Fehler beim Einlesen von binären Daten
  Antworten mit Zitat      
Ich haben mehrere Datein, die auf einer Zeile ASCII und sehr vielen binären Daten bestehen. Diese lese ich über die folgenden Funktionen ein:
fid = fopen(file,'r');
asciivek= fscanf(fid,'%g');
daten = fread(fid,'double');
fclose(fid);
Diee entsprechenden Dateien wurden durch ein C-Programm erstellt und sind in beliebiger Zahl vorhanden. Es tritt das Phanomen auf, dass dass bestimmt Dateien falsch eingelesen werden. NICHT ALLE! Beim Einlesen mit fscanf(fid,'%c') konnte festgestellt werden, dass ein Zeichen nicht mit erfasst wird. Die Dateien sind aber exakt gleich groß wie die, die richtig eingelesen werden. Desweiteren ist festzustellen, dass man alle Dateien mit IDL richtig einlesen kann - die Ursache bei den Daten zu suchen geht also nicht.

Hat jemand eine Idee?

Ich bin für jeden Vorschlag dankbar


keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 06.12.2007, 10:36     Titel:
  Antworten mit Zitat      
Ich lasse auch Binaerdaten aus einer Datei einlesen, nutze dafuer aber C als Programmiersprache. Zusammen mit den Mex-Funktionen kommuniziert das ja hervorragend mit MATLAB.
Ich hatte zumindest festgestellt, dass das Einlesen so deutlich schneller laeuft, was aber daran liegt, dass ich die Daten ueber eine For-Schleife einlese.

Wie dem auch sei:
Unter C mit fopen(file,"rb") (b für binaer, das ist bei MATLAB standardmaessig gesetzt) hatte ich bisher keine Probleme.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gahr

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2007, 13:03     Titel: Probleme
  Antworten mit Zitat      
Ich glaube nicht, dass Matlab ein Grundsätzlichesw Problem mit dem einlesen von binären Daten hat, vielmehr scheint der fehler bei der Kombination von
fscanf(fid,'%g'); und fread(fid,'double'); aufzutreten. Löscht man die erste ASCII-Zeile per hand können einige der Problemdateien richtig eingelesen werden. Die ASCII-Zeile wird aber in dieser Form für den weiteren Programmverlaufb benötigt.
Trotzdem schon mal danke für die Antwort.

MFG Gahr
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 06.12.2007, 15:55     Titel:
  Antworten mit Zitat      
Könntest Du evtl. Die Anzahl der als ASCII-Zeichen eingelesene Daten speichern, die Datei schliessen, neu öffnen und daraufhin diese Daten mit fseek überspringen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gahr

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2007, 18:15     Titel: Gelöst
  Antworten mit Zitat      
Also danke für den Tipp,
ich habe die ASCII-Zeile jetzt einfach über fgetl eingelesen und den Rest wie gehabt. Damit erledigt sich der Fehler. Scheinbar liegt der Fehler in der falschen Anwendung von fscanf. Dieser Befehl scheint in bestimmten Fällen den binären Teil der Datei zu beeinflußen.

Danke für die Vorschläge.

MFG Gahr
 
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.