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

Datei Einlesen klappt nicht

 

pospiech
Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2008, 11:36     Titel: Datei Einlesen klappt nicht
  Antworten mit Zitat      
Ich habe eine Datei mit folgendem Inhalt:
Code:

Iteration   Power   x (Piezo)   y (Piezo)   z (Piezo)   x (Mech)   y (Mech)   z (Mech)
0   3.35382e-06   79.826   -0.003   -0.003   -6.27744e+66   -6.27744e+66   -6.27744e+66  
1   2.78775e-06   79.826   -0.003   -0.003   -6.27744e+66   -6.27744e+66   -6.27744e+66  
2   2.78775e-06   79.826   -4.98   -0.003   -6.27744e+66   -6.27744e+66   -6.27744e+66  
 


die ich nun in Matlab einlesen möchte. Die Zeileumbruche sind dabei im UNIX Format.

Probiert habe ich
Code:

FILENAME = 'W:\Projekte\Hibiscus\Labor\Fasersensor\2008-05-23\FaserDatenTest.txt';
fid = fopen(FILENAME, 'r');
FILEDATA = fscanf(fid, '%i %g %g %g %g %g %g %g', [2 inf]);
 

was mir aber nur ein leeres FILEDATA zurückgibt.

Wenn ich stattdessen textread nehme:
Code:

FILENAME = 'W:\Projekte\Hibiscus\Labor\Fasersensor\2008-05-23\FaserDatenTest.txt';
FILEDATA = textread(FILENAME, '%i %g %g %g %g %g %g %g', 'headerlines', 1);
 

so bekomme ich den Fehler:
Zitat:

??? Badly formed format string.

Error in ==> textread at 177
[varargout{1:nlhs}]=dataread('file',varargin{:});

Error in ==> FaserSensor at 8
FILEDATA = textread(FILENAME, '%i %g %g %g %g %g %g %g', 'headerlines', 1);

was ich wiederum nicht verstehe.

Was muss ich nun machen damit es funktioniert ?

Matthias
Private Nachricht senden Benutzer-Profile anzeigen


keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 26.05.2008, 11:40     Titel:
  Antworten mit Zitat      
Probier mal beim textread() die %g durch %f zu ersetzen.
Ich hab zumindest noch die von %g gelesen, sondern fuer Gleitkommazahlen immer %f verwendet.
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 26.05.2008, 11:50     Titel:
  Antworten mit Zitat      
Beim fscanf solltest Du Dir ausserdem noch die Hilfe durchlesen.
So wie es aussieht, hast Du zum einen den falschen Befehlsaufruf verwendet
Code:

A = fscanf(fid,format);
[A,count] = fscanf(fid,format,size)
 

Du hast also die linke Seite der ersten Zeile mit der rechten Seite der zweiten Zeile kombiniert.

Ausserdem muss die size-Angabe anders aussehen. Wie genau das in diesem Fall umgesetzt werden muss, weiss ich allerdings auch nicht, da ich noch nicht damit gearbeitet habe.
Private Nachricht senden Benutzer-Profile anzeigen
 
pospiech
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2008, 12:33     Titel:
  Antworten mit Zitat      
Ich habe jetzt folgendes ausprobiert:
Code:

[FILEDATA, count]= fscanf(fid, '%i %f %f %f %f %f %f %f', inf);
%als auch
FILEDATA= fscanf(fid, '%i %f %f %f %f %f %f %f');
 

was mir aber beides nur [0,0] zurückliefert.

Matthias
Private Nachricht senden Benutzer-Profile anzeigen
 
freshp
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.05.08
Wohnort: Schwabenländle ;)
Version: R2007b
     Beitrag Verfasst am: 26.05.2008, 12:53     Titel:
  Antworten mit Zitat      
Hi,

versuch doch mal folgendes:

Code:

FILENAME = 'test.dat'; %entsprechend anpassen ;*)
fid = fopen(FILENAME, 'r');
HEADER = fscanf(fid,'%s ',14);
FILEDATA=struct('Werte','');
for i=1:3
    [FILEDATA(i).Werte,c] = fscanf(fid, '%i %f %f %f %f %f %f %f',8);
    if c~=8
        error('Anzahl eingelesener Elemente nicht korrekt');
    end
end

fclose(fid);
 


Alternativ:

Code:

FILENAME = 'test.dat';
fid = fopen(FILENAME, 'r');
HEADER = fscanf(fid,'%s ',14);
[FILEDATA,c] = fscanf(fid, '%i %f %f %f %f %f %f %f');


fclose(fid);
 


Im ersten Beispiel hast du jede Zeile deines Files in einem Feld der Struct, im zweiten hast du alle Werte hintereinander in FILEDATA stehen.

Das c liefert die Anzahl der erfolgreich eingelesenen Elemente zurück.
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 26.05.2008, 12:54     Titel:
  Antworten mit Zitat      
Moin Matthias,

probier mal folgendes:
Code:

FILENAME = 'W:\Projekte\Hibiscus\Labor\Fasersensor\2008-05-23\FaserDatenTest.txt';
fid = fopen(FILENAME, 'r');
FILEDATA = fscanf(fid, '%i %g %g %g %g %g %g %g', [8 inf]);
FILEDATA = FILEDATA';
 


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
pospiech
Themenstarter

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2008, 13:14     Titel:
  Antworten mit Zitat      
Code:

FILENAME = 'W:\Projekte\Hibiscus\Labor\Fasersensor\2008-05-23\FaserDatenTest.txt';
fid = fopen(FILENAME, 'r');
HEADER = fscanf(fid,'%s ',14);
[FILEDATA,c] = fscanf(fid, '%i %f %f %f %f %f %f %f',[8 inf]);
fclose(fid);

funktioniert. Danke an Alle.
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.