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

txt Datei mit text und Zahlenwerten einlesen

 

mb005
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 05.03.09
Wohnort: Rostock
Version: ---
     Beitrag Verfasst am: 12.05.2011, 11:03     Titel: txt Datei mit text und Zahlenwerten einlesen
  Antworten mit Zitat      
Moin Moin,
ich versuche eine txt Datei einzulesen, in der die ersten vier Zeilen der Header sind, die erste Spalte auch ein String ist und der Rest der Matrix Zahlenwerte sind.
Dazu kommt das die Textfelder mit " beginnen und auch damit Enden (das ist vom Datenlogger so vorgegeben und kann nicht geändert werden).

dlmread kommt mit den Textwerten nicht zurecht,
also habe ich es mit fileread probiert. Damit kann ich die Werte einlesen,
aber ich weiß leider nicht wie ich das ganze in eine ordentliche Matrix überführe.

Eigentlich kann es doch nicht so ein Problem sein eine Datei mit Text und Zahlenwerten einzulesen, oder bin ich zu blöd zum suchen?

Vielen Dank schonmal im vorraus.

MfG marcus

Datenformat.jpg
 Beschreibung:
Hier ein Schnappschuss meiner Eingangsdaten (eingelesen in Excel)

Download
 Dateiname:  Datenformat.jpg
 Dateigröße:  167.48 KB
 Heruntergeladen:  498 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2011, 11:39     Titel:
  Antworten mit Zitat      
Hallo,

ich würde es mit TEXTSCAN versuchen, da sind auch schöne Beispiele in der Doku.
Ich gehe dabei davon aus, dass du tatsächlich eine Textdatei hast und nicht, wie der Screenshot vermuten lässt, eine Excel-Datei.

Für weitergehende Hilfe poste doch mal deinen bisherigen Ansatz bzw. die konkreten Probleme dabei. Die tatsächliche Textdatei (bzw. ein Ausschnitt davon als Textdatei) wäre zudem hilfreicher als ein Screenshot davon.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
grünerPilz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2011, 11:49     Titel:
  Antworten mit Zitat      
Hallo,

du könntest es mal damit versuchen, wenn du es aus einer txt-Datei ausliest: (Beispiel für Spalten A bis I)

[timestamp, record, battv, cums, cwms, cexms, ceyms, cdxms, cdyms] = textread('dateiname.txt','%s%f%f%f%f%f%f%f%f','headerlines',4);
 
mb005
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 05.03.09
Wohnort: Rostock
Version: ---
     Beitrag Verfasst am: 12.05.2011, 14:15     Titel:
  Antworten mit Zitat      
Hey Leute, vielen Dank schonmal.
also ich hatte es mir so gedacht

Code:

x=fileread('CR5000_Table1.dat');
 

dann schreibt Matlab den Inhalt der gesamtern Datei in eine Zelle, das will ich natrülich nicht, also hatte ich überlegt das ganze über die delimiter zu separieren
Code:

x=fileread('CR5000_Table1.dat','delimiter',',');
 

Ergebnis
Error: too many input arguments

Also habe ich mich auch an textscan herangemacht
Code:

fid=fopen('CR5000_Table1.dat');
data=textscan(fid,'%s',4,'delimiter','\",');
 


Ich weiß das sieht ziemlich chaotisch aus, aber ich verstehe die Logik hinter der Zuordnung von textscan noch nicht ganz.
Ich glaube das Hauptproblem ist der Zeitstempel am Anfang, ich könnte durchaus damit leben die Kopfzeile nicht zu importieren, aber wenn ich den Zeitstempel weglasse wirds doof. Das eigentliche Trennungszeichen ist das Komma, alle Textfelder aus der Kopfzeile und der Zeitstempel sind aber zusätzlich mit Hochkommas versehen.

@grünerPilz
wenn ich deine Zeileile verwende kommt folgender Fehler
trouble reading floatingpoint number from file line 1 field 6 ==> :50:17"...

Ich hab als Anhang mal das orginal Dat File angeängt, aber etwa um 7000 Zeilen gekürzt. (Also eigentlich enden die Datein alle auf .dat aber diese Endung ist hier im Forum nicht möglich also .txt)

Danke für Eure Hilfe

MfG marcus

CR5000_Table1_gekürzt.txt
 Beschreibung:

Download
 Dateiname:  CR5000_Table1_gekürzt.txt
 Dateigröße:  1.41 KB
 Heruntergeladen:  354 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2011, 14:35     Titel:
  Antworten mit Zitat      
Hallo,

bei TEXTSCAN hättest du dir die Beispiele vielleicht (etwas genauer) anschauen sollen Wink So gehts:

Code:
fid=fopen('CR5000_Table1_gekürzt.txt');
data=textscan(fid,['%s' repmat('%f', 1, 26)],'headerlines', 4, 'delimiter',',');
fclose(fid);
% und als Nachverarbeitung
dates = strrep(data{1}, '"', '')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mb005
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 05.03.09
Wohnort: Rostock
Version: ---
     Beitrag Verfasst am: 13.05.2011, 10:33     Titel:
  Antworten mit Zitat      
Hallo Harald,
vielen Dank schonmal soweit funktioniert das alles.
Schlussendlich will ich mir bestimmte Zeilen des gesamten Datensatzes einzeln als txt Datei speichern.
Die Frage nach dem export stellt sich also.

dlmwrite funktioniert nicht weil nicht alle Elemente dem selben Datentyp entsprechen.

str2num auf die erste Spalte anzuwenden um das ganze dann zu exportieren funktioniert auch nicht, das Ausgabefeld bleibt leer.

Also habe ich mich an fprintf rangemacht

Code:

fprintf(fid,['%s' repmat('%f', 1, 26)]);
 


Das ganze läuft ohne Fehlerausgabe, aber die Ausgabe bleibt leer.

Der Bezug über fid müsste doch stimmen oder wo liegt der Fehler?

MfG Marcus
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2011, 10:52     Titel:
  Antworten mit Zitat      
Hallo,

1. darauf achten, dass fid zum Schreibzugriff geöffnet wurde ('w').
2. was du in die Datei schreiben willst, solltest du schon dazusagen Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mb005
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 05.03.09
Wohnort: Rostock
Version: ---
     Beitrag Verfasst am: 13.05.2011, 11:33     Titel:
  Antworten mit Zitat      
Ok,
ich war bisher davon ausgegangen der der Inhalt aus fid in die neue Datei geschrieben wird, aber das macht ja auch so überhaupt keinen Sinn.

habe es jetzt folgendermaßen probiert

Code:

fprintf(fid,['%s' repmat('%f',1,26)],data);
 


leider mit der Fehlermeldung:
??? Error using ==> fprintf
Function is not defined for 'cell' inputs.

Aber mit welcher exportfunktion soll ich Zellen denn sonst exportieren?

fwrite ist doch dafür auch nicht geeignet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.05.2011, 13:40     Titel:
  Antworten mit Zitat      
Hallo,

fid ist nur ein Verweis auf die Datei, über den Lese- und Schreibvorgänge in der Datei ausgeführt werden.
In eine Textdatei schreiben kannst du Cell Arrays, indem du die Inhalte aus den Cell Arrays rausholst - im schlimmsten Fall zeilenweise. Wie genau das aussehen muss hängt nicht zuletzt vom Aufbau von data ab.

Grüße,
Harald
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: 13.05.2011, 18:07     Titel:
  Antworten mit Zitat      
Hallo mb005,

Möglicherweise hilft dies:
Code:
fprintf(fid,['%s' repmat('%f',1,26)], data{:});

Je nach dem Inhalt von "data" musst Du vorher vielleicht aber auch transponieren:
Code:
dataT = transpose(data);
fprintf(fid,['%s' repmat('%f',1,26)], dataT{:});

Gruß, Jan
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 - 2025 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.