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

Daten aus txt-Datei einlesen

 

Mr.Burns
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2013, 10:55     Titel: Daten aus txt-Datei einlesen
  Antworten mit Zitat      
Hallo liebes Forum,

ich bin fast am Verzweifeln mit meiner txt-Datei (siehe Anhang - dort jedoch nur ein kleiner Auschnitt, die gesamte Datei hat über 360000 Zeilen).
Dabei handelt es sich um einen Datensatz einer Wetterstation mit halbstündigen Messwerten:
1. Spalte Tag
2. Spalte Monat
3. Spalte Jahr
4. Spalte Stunde
5. Spalte Minute
6. Spalte Strahlung
7. Spalte Windrichtung
8. Spalte Windgeschwindigkeit
9. Spalte relative Feuchte
10. Spalte Temperatur

Dazu mein Code zum Öffnen:
Code:

data = 'test123.txt';
fid = fopen(data);
values = textscan(fid,'%f %f %f %f %f %f %f %f %f %f','EmptyValue', -999);
tag = values{1};
monat = values{2};
jahr = values{3};
stunde = values{4};
minute = values{5};
strahlung = values{6};
windrichtung = values{7};
windgeschwindigkeit = values{8};
feuchte = values{9};
temperatur = values{10};
 


Jetzt das Problem: wie man in der Datei gut sehen kann, sind die ersten 5 Spalten immer super belegt --> super

Aber die anderen Spalten sind nur unregelmäßig belegt (so wie ganz unten, ist es perfekt befüllt), d.h. Matlab liest es mir so ein, dass er einfach die Spalten "vorrutschen" lässt und hinten dann mit -999 auffüllt. Ich möchte aber, dass Matlab die Position der Spalten beibehält.
Außerdem brauche ich keine 4 Nachkommastellen, eine würde genügen, wie stellt man das ein?
Kann mir da jemand helfen???
Vielen Dank, es grüßt Mr.Burns
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: 09.10.2013, 11:21     Titel:
  Antworten mit Zitat      
Hallo,

bitte die Datei noch nachreichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Burns
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2013, 11:35     Titel:
  Antworten mit Zitat      
ups, sorry Smile

test123.txt
 Beschreibung:

Download
 Dateiname:  test123.txt
 Dateigröße:  6.58 KB
 Heruntergeladen:  292 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: 09.10.2013, 11:57     Titel:
  Antworten mit Zitat      
Hallo,

ich frage mich immer wieder, wie Leute darauf kommen, Daten so auszugeben ;)

Hier ein Versuch:
Code:
data = 'test123.txt';
fid = fopen(data);
values = textscan(fid,'%f %f %f %f %f %f %f %f %f %f %f','EmptyValue', -999, 'Delimiter', '\t');
dblvalues = cell2mat(values);


Das einzige Problem dabei ist, dass es in manchen Zeilen noch eine zusätzliche 0 gibt, die es in anderen nicht gibt. Brauchst du diese 0 denn?

Diese Nullen werden momentan zu zusätzlichen Zeilen, die mit 0 beginnen und ansonsten -999 sind. Bei den vorliegenden Daten könnte man diese Zeilen nachträglich entfernen.
Code:
dblvalues(dblvalues(:,1)==0,:) = [];

Ob das auch bei deiner tatsächlichen Datei funktioniert, müsstest du überprüfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 09.10.2013, 12:19     Titel:
  Antworten mit Zitat      
Hallo

du hast dort mehr Spalten, als angegeben also, wenn ich DLMREAD verwende, kommen 12 Spalten heraus,
wenn ich TEXTSCAN anpasse dann kommt auch das richtige herraus
Code:

data = 'test123.txt';
fid = fopen(data);
values = textscan(fid,'%f %f %f %f %f %f %f %f %f %f %f %f','EmptyValue', -999,'delimiter','\t*');
 


TAB ist schlechtes Trennzeichen bei fehlenden Werten, besser wäre Komma




Code:

data  = 'test123.txt';
values =dlmread(data,'\t')
 


@Harald
bei 11 Spalten bekommst mehr Zeilen als vorgegeben (174 in Textfile)

Zuletzt bearbeitet von denny am 11.10.2013, 11:55, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Burns
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2013, 20:08     Titel:
  Antworten mit Zitat      
Danke euch beiden für die Antworten und Lösungsvorschläge!

Ich werde denjenigen nochmal kontaktieren, der mir die Datei zur Verfügung gestellt hat - vielleicht hat er ja beim Auslesen einfach einen Konvertierungsfehler gemacht. Smile
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.