Verfasst am: 16.07.2012, 12:23
Titel: Probleme beim Importieren von csv-Daten
Hallo zusammen.
Ich verzweifele gerade daran ein Programm zu schreiben, mit dem ich Daten aus csv-Dateien importieren kann.
Das Problem liegt in der ARt begründet, wie die Daten gespeichert werden.
Die csv-Dateien haben 20 Headerzeilen. Danach kommen die Daten in folgender Form
13.07.12 12:03:01,C,25,625
1) Datum und Uhrzeit
2) Einheit
3) Messwert vor dem Komma
4) Messwert nach dem Komma
Das Problem liegt bei den Nachkommastellen, da hier mal keine bis maximal 3 Nachkommastellen angegeben werden. Das Programm mit dem die Messdaten gespeichert werden, lässt schon mal endständige Nachkommastellen weg, so dass die Daten auch die Form
13.07.12 12:03:01,C,25,62
oder
13.07.12 12:03:01,C,25,005
oder
13.07.12 12:03:01,C,25
haben können.
Im Letzten Fall erhalte ich bei importdata Zellen mit NaN, die ich aber schon beseitigt habe.
Importdata lässt aber auch vorangestellte Nullen weg, so dass aus 005 eine 5 wird, also von einer 500 oder 050 nicht mehr zu unterscheiden ist.
Wie kann ich die Daten jetzt so importieren, dass die Spalte mit den Nachkommastellen, immer auf 3 Stellen aufgefüllt werden und auch vorangestellte Nullen nicht verschwinden?
Hilfreich wäre eventuell eine Möglichkeit, die Zahl als ganzes zu erfassen und hier das Komma nicht als Trennzeichen zwischen zwei Spalten zu interpretieren. Aber wie?
csvread bietet diese Möglichkeit leider auch nicht.
Für eure Lösungsvorschläge bin ich schon jetzt dankbar.
y = textread(names{1,f},'%s','headerlines', 20,'delimiter','C');
for lauf = 1:2:size(y,1)
Werte(f).Zeit{(lauf+1)/2,1} = y{lauf,1}(1:end-1); %überflüssige Kommas entfernen
Werte(f).Daten{(lauf+1)/2,1} = y{lauf+1,1}(2:end);
end
Werte(f).Daten = str2double(strrep(Werte(f).Daten,',','.')); %Komma durch Punkt ersetzen
Werte(f).Zeit = datenum(Werte(f).Zeit, 'dd.mm.yy HH:MM:SS'); % Datum umwandeln
Bisschen umständlich, aber besser kann ichs nicht.
Bis denn denn
SCHNU
Einstellungen und Berechtigungen
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
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.