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

fprintf erzeugte .txt datei einlesen

 

Hubsi
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 31.03.08
Wohnort: Hamburg
Version: R2007b
     Beitrag Verfasst am: 16.04.2008, 16:18     Titel: fprintf erzeugte .txt datei einlesen
  Antworten mit Zitat      
Hallo,

ich erzeuge mit dem Befehl fprintf in einer .txt datei eine header in dem z.b. eine kurze versuchsbeschreibung steht etc.
danach erzeuge ich die überschrift für die jeweiligen spalten und schreibe sie dann mit einem weiteren fprintf befehl die werte in die spalten.
die spalten haben allerdings unterschiedlich.
die erste spalte ist einfach nur die messnummer, die zweite enthält die uhrzeit welche ich aus
Code:
datstr = datestr(datum,13)
erhalte. dies schreibe ich als string of characters. alle anderen werte als fixed point notation.

die ausgabe befehle sehen dann so aus
Code:

fprintf(fid, ' %s\n', header);
for i=1:size(T(1:end,2))
fprintf(fid, '%1.0f\t %s\t\t %1.0f\t\t %0.7f\t %5.1f\t\t %1.5f\t %+1.5f\t %1.5f\n',...
      Parameter(i,1), datstr(i,1:end), ParamX(1,i), Parameter(i,3),...
      Parameter(i,4), Parameter(i,5), Parameter(i,6), rsquare(1,i));
end
 

Das erste problem ist nun, dass ich das nicht eingelesen bekomme. also zumindest nicht so wie ich das will. weil ich möchte ab einer gewissen zeile die werte einlesen und zwar eben nur die werte ohne header oder so.
das wäre ja auch alles kein problem das mit dlmread zu machen, aber da ich in der zweiten spalte die uhrzeit als s.o.c. stehen habe klappt das nicht.
mit getl hab ichs nur geschafft alles einzulesen und im command fenster auszugeben, aber da wieß ich auch nicht wie ich das weiter verarbeiten kann. und mit fread weiß ich nicht wie ich an die richtige stelle komme.

Das zweite ehr unwichte problem ist, dass der normale windows editor die zweilenumbrüche nicht darstellt sondern einfach dafür ein zeichen hinsetzt. da die meisten leute den aber nutzen wäre es schon nett wenn der das dann auch wirklich als umbruch darstellt. aber der matlab editor stellt das richtig dar von daher halb so wild.

schon mal besten dank im vorraus
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.04.2008, 08:41     Titel:
  Antworten mit Zitat      
Moin,

ich habe in einem solchen Fall mit textread gute Erfahrungen gemacht. Auch bei diesem gibt es die Möglichkeit die Anzahl der headerlines anzugeben.

Zu deinem 2. Problem mit dem Zeilenumbruch, gab es hier vor kurzem einen Beitrag - musst nur mal suchen, ich weiß jetzt auch nicht welchen...


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
 
Hubsi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 31.03.08
Wohnort: Hamburg
Version: R2007b
     Beitrag Verfasst am: 17.04.2008, 09:20     Titel:
  Antworten mit Zitat      
ja also generel funktioniert das mit textread, allerdings ist nicht umbedingt bekannt wie der header aussieht und da ja jedes wort einzeln eingelesen wird ist das ein problem da man zuerst mal die wörter zählen muss.

desweiteren hab ich auch nix gefunden wo beschreiben wirt wie man die zeile angibt die man einlesen möchte was quasi das problem von oben lösen würde, da ich dann genau an die stelle mit den werte springen könnte
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.04.2008, 09:40     Titel:
  Antworten mit Zitat      
Hubsi hat Folgendes geschrieben:
Code:
fprintf(fid, ' %s\n', header);

Über
Code:
anzheader = numel(header) % evtl. muss hier noch ein +1 hinter;
bekommst du eigentlich die Anzahl der Headerlines.
Danach kannst du mit
Code:

[para{1:11}] = textread(fid,'%f %s %f %f %f %f %f %f %f %f %f','delimiter','\t','headerlines',anzheader)
die Datei ab der Zeile des ersten Wertes wieder auslesen. Da du beim Erstellen der Datei teilweise 2x '\t' zwischen 2 Werten hast, muss auch hier dann die Anzahl der Einträge erhöht werden.

Was den Zeilenumbruch im TextEditor von Windows angeht, ergänze in der Zeile
Code:
fid = fopen('...','wt')
bzw. statt dem w, das was du da stehen hast. Wichtig ist nur das "t".

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
 
Hubsi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 31.03.08
Wohnort: Hamburg
Version: R2007b
     Beitrag Verfasst am: 17.04.2008, 09:49     Titel:
  Antworten mit Zitat      
Und danke für den Hinweis auf den anderen beitrag wegen dem zeilenumbruch. hab ihn gefunden. ist super. läuft.
http://www.gomatlab.de/error-logfil.....printf+zeilenumbruch.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubsi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 31.03.08
Wohnort: Hamburg
Version: R2007b
     Beitrag Verfasst am: 17.04.2008, 10:46     Titel:
  Antworten mit Zitat      
mit textread hab ich das nicht hinbekommen, aber dadurch bin ich auf textscan gekommen.
Laut mathworks.com auch mächtiger als textread da man mit textread nicht von jeder beliebigen stelle aus einlesen kann
http://www.mathworks.com/access/hel.....n/texis/webinator/search/

bei mir sieht das jetzt so aus
Code:
C=textscan(fid, '%f %s %f %f %f %f %f %f','HeaderLines',15)


aber trozdem vielen dank. ohne deinen hinweis wäre ich nicht draufgekommen[/b]
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.