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

mehrere .csv dateien einlesen und header weglassen

 

Gast2013

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2013, 21:01     Titel: mehrere .csv dateien einlesen und header weglassen
  Antworten mit Zitat      
Hallo zusammen,

ich verusche gerade ein skript zu schreiben, mit dem ich mehrere .csv Dateien einlesen kann die jeweils alle einen header enthalten. Mein Code sieht wie folgt aus:

Code:


cd('xxx');
path = 'xxx';
liste = dir('*.csv');
files = {liste.name};
for k=1:numel(files)
    % einlesen der Dateien
    fid = fopen(fullfile(path,files{k}),'r');
    daten{k} = textscan(fid, '%s %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f',...
        'delimiter', ',', 'HeaderLines', '4');
    fclose(fid);
    % ...
end


der Header besteht in der .csv Dateien immer aus den ersten 4 Zeilen. Leider schneidet mir das Programm aber immer mehr Zeilen weg als nötig. Kann mir jemand sagen wieso?

Die .csv Datei sieht in etwa so aus.

Header
Header
Header
Header
wert,wert,wert,wert
wert,wert,wert,wert
wert,wert,wert,wert

usw.

Vielen Dank für eure Hilfe!


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.06.2013, 00:26     Titel: Re: mehrere .csv dateien einlesen und header weglassen
  Antworten mit Zitat      
Hallo Gast2013,

Da musste ich erstmal tief grübeln. Dabei ist die Antwort einfach:

Code:
... 'delimiter', ',', 'HeaderLines', '4');

Die Headerlines erwarten einen Numerischen Wert, hier wird aber ein CHAR geliefert. Deswegen vermute ich, dass der ASCII-Code des Zeichens '4', nämlich 52 Zeilen übersprungen werden. Stimmt's?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2013

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 08:38     Titel:
  Antworten mit Zitat      
Hallo Jan,

Vielen dank für deine Hilfe. Ich kann das ganze leider erst heute Abend testen. Ich gebe dir dann nochmal Bescheid ob es funktioniert hat.

Um die Headerzeilen als numerischen Wert zu übergeben schreibe ich das dann wie folgt?

Code:
... 'delimiter', ',', 'HeaderLines', 4);



Viele Grüße

Gast2013
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 25.06.2013, 09:17     Titel:
  Antworten mit Zitat      
Anstatt textscan (wo du die Spaltenanzahl angeben musst), kannst du auch einfach csvread verwenden

daten{k} = csvread ('file.csv', 4, 1); % Skipped die ersten 4 Spalten und die erste Zeile.

Für deinen Fall also einfach daten{k} = csvread ('file.csv', 0, 4);
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2013

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 16:06     Titel:
  Antworten mit Zitat      
Hallo markuman,

das war auch mein erster Versuch. In der .csv Datei ist allerdings der erste Wert ein Zeitstempel von dem Format YYYY.mm.dd.hh.mm .
wenn ich das ganze mit csvread einlese wird dieser Zeitstempel in zwei Spalten aufgeteilt obwohl dort kein komme drin vorkommt . Ich kann heute Abend gerne ein Beispiel heirzu hochladen. Vielleicht wisst ihr ja woran es liegt.

Viele Grüße
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 25.06.2013, 16:42     Titel:
  Antworten mit Zitat      
Achso. Nein, dann bleib bei textscan. Die alternative wäre dann nur dass du die ersten Spalte mit dem Datum auch auslässt. Dann müsstest du dir das zusätzlich mit textscan holen (es sei denn du kannst drauf verzichten).
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast2013

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 19:38     Titel:
  Antworten mit Zitat      
Hat funktioniert...

Vielen Dank noch einmal!
 
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.