Verfasst am: 20.08.2017, 09:18
Titel: Datenimport von .txt-Dateien aus Ordnerstruktur
Hallo Matlab-Freunde,
ich bin neu hier im Forum und auch in der Matlab-Welt.
Ich habe folgendes Anliegen:
Ich habe Messwerte, die in mehreren .txt-Dateien pro Ordner abgelegt sind.
Diese möchte ich mit Matlab einlesen, um anschließend Grafiken zu erstellen.
Ich würde gerne so vorgehen:
.txt-Dateien je Ordner zusammenführen und unter dem Ordnernamen abspeichern. Dabei soll die Überschrift nur am Anfang einmal eingelesen werden und nicht pro Datei.
Empfehlung: klein anfangen, also hier erst mal mit dem Einlesen einer Datei - z.B. über
readtable
.
datastore
kann dann helfen, alle Dateien in einem Ordner zusammenzufassen. Schließlich dann noch der
dir
-Befehl zur Analyse der Ordnerstruktur.
Ich habe es nun so gelöst, dass ich die Dateien vorher mittels Batch-Dateien bearbeitet habe. Nun möchte ich diese erstellten .txt-Dateien einlesen. Sie sind sehr umfangreich und sehen wie oben beschrieben aus. ca. 24000 Zeilen und 100 Spalten.
Ich habe mir die readtable angesehen. Wie kann ich diese nun am besten anwenden?
A=readtable('test.txt') nimmt nicht die oberste Zeile mit. Liegt das an den zwei leeren Zellen?
Wie ist das mit den Formaten?
A=readtable('test.txt','Delimiter',',') wäre ein wenig ausführlicher. Aber wie kann ich das Format vorgeben ('Format')? Wäre das dann %s%s und danach bei Dezimalzahlen %n (müsste ich das dann 100mal eingeben?)?
A=readtable('test.txt') nimmt nicht die oberste Zeile mit. Liegt das an den zwei leeren Zellen?
Um das zu beantworten, müsste man eine Beispieldatei (die ersten 100 Zeilen dürften reichen) sehen.
Zitat:
Aber wie kann ich das Format vorgeben ('Format')? Wäre das dann %s%s und danach bei Dezimalzahlen %n (müsste ich das dann 100mal eingeben?)?
Das schöne bei readtable ist, dass das Format an sich automatisch erkannt wird. Wenn du es angeben möchtest, dann in ähnlicher Form wie von dir gesagt, allerdings würde ich für Dezimalzahlen %f verwenden. Und nein, du musst nichts 100 Mal eingeben, da hilft
repmat
, z.B.
ich habe die Import-Funktion entdeckt und mir nun mittels diesen meine Daten als Table importiert:
ab Zeile 2 ist jeweils das Datum (dd.mm.yyyy) als str in Spalte1 und Uhrzeit (HH:mm:ss) als str gespeichert. Dann folgen für die werte Doubles.
Ich möchte nun plots erstellen und möchte über datenum die str umwandeln. Leider bisher ohne Erfolg:
Ich habe folgendes bereits versucht:
date=datenum(AEB2(2:end,1),'dd.mm.yyyy')
Fehler:Input to DATENUM was bot an Array of character vectors
date=varfun(@datenum,AEB2(2:end,1),'dd.mm.yyyy')
Fehler: Wrong Number of arguments
Mittlerweile bin ich am verzweifeln. Suche schon seit 2 Tagen nach einer Lösung...
Ich möchte das Datum und die Zeit in Serial date numbers umwandeln und dann in der Tabelle überschreiben, damit ich mit diesen und meinen Werten Grafiken erstellen kann.
es ist immer hilfreich, wenn eine richtige Beispieldatei und kompletter bisheriger Code zur Verfügung gestellt wird. Dann geht das i.d.R. auch ganz schnell.
Falls AEB2 wirklich ein Table ist, musst du { } statt ( ) verwenden, um Daten daraus zu extrahieren. Statt datenum würde ich zudem
datetime
verwenden.
bei mir geriet aus irgendeinem Grund eine Leerzeile in den Table. Diese habe ich so gelöscht.
In den folgenden Zeilen wird aus Datums- und Zeitstempel das komplette Datum zusammengesetzt.
1. Es wird in Date nun aber ein falsches Datum angezeigt. Woran liegt das?
2. Kann ich T.Date auch an dritter Stelle der Tabelle einfügen?
3. Kann ich die erste Zeile beim Zusammensetzen von T.Date ignorieren?
Es wird in Date nun aber ein falsches Datum angezeigt. Woran liegt das?
Eines falsch und die anderen richtig? Bei der Beispieldatei ist mir da nichts aufgefallen. Bitte eine Datei zur Verfügung stellen, bei der das Problem auftritt.
Zitat:
Kann ich T.Date auch an dritter Stelle der Tabelle einfügen?
Ja, durch Indizierung. Alternativ eine der ersten beiden Spalten ersetzen und die andere rausschmeißen.
Zitat:
Kann ich die erste Zeile beim Zusammensetzen von T.Date ignorieren?
Auch hier wieder Indizierung. Dann ist die Spalte aber doch zu kurz?
überschreibe ich die erste Spalte und lösche die zweite. Wie kann ich die Überschriften weiterführen mit Var1, Var2,... (jetzt ist es ja Var1,Var3,...)?
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.