|
|
textscan bei fehlenden Werten und |
|
andreas1425 |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 21.06.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.06.2016, 11:32
Titel: textscan bei fehlenden Werten und
|
 |
Hallo,
ich muss große Mengen an Messwerten einlesen und diese später grafisch ausgeben.
Die Messwerte liegen in .asc-Files mit über 100mb vor, nach dem Schema
Datum Uhrzeit Wert1 ... Wert50
durch Leerzeichen getrennt.
Ich Importiere folgendermaßen:
So bekomme ich dann ein Cell Array welches zB die Ausmaße 1x36000000
Anschließend durchlaufe ich alle Cells und frage mittels regexp ab, ob es sich um ein Datum handelt und und schreibe die folgenden Messwerte dann alle in eine Zeile, bis das nächste Datum kommt, so dass ich für jeden timestamp eben eine extra Zeile habe.
Es kommt aber auch vor, dass ein Wert fehlt und somit das entsprechende Feld leer ist. Wie kann ich Matlab sagen, dass ich da dann beim Importieren eine leere Cell haben möchte?
Außerdem dauert meine Methode, vor allem das Datum-Suchen ziemlich lange, gibt es da einfachere/schnellere Möglichkeiten?
Vielen Dank im Voraus
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.06.2016, 17:51
Titel: Re: textscan bei fehlenden Werten und
|
 |
Hallo andreas1425,
Das Einlesen als Characters mit %c ist nicht naheliegend. Schaue Dir mal die Dokumentation von
textscan
an.
Gruß, Jan
|
|
|
andreas1425 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 21.06.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.06.2016, 12:58
Titel:
|
 |
Wenn ich das richtig verstehe, müsste ich aber genau angeben wie viel Spalten und welche Datentypen kommen.
Bei mir kann es aber vorkommen, da die Messungen unterschiedlich lang sind, dass wieder einige Zeilen mit Text kommen und dann erst wieder Messwerte. Ich weiß also vorher nicht wie die Daten ausschauen bzw habe immer etwas andere und möchte sie mit einem universellen Programm einlesen.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.06.2016, 13:21
Titel:
|
 |
Hallo,
ein oder zwei Beispieldateien und dein bisheriger Code (d.h. inkl. der Erkennung von Datumsangaben etc.) könnten hilfreich sein.
Grüße,
Harald
|
|
|
andreas1425 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 21.06.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.06.2016, 14:30
Titel:
|
 |
Angehängt ein Teil des Messwertfile, das Original hat 237mb und enthält die Daten für ein paar Tage und hat außerdem die Endung .asc
Einlesen der Werte:
Das Skript zum Datum finden funktioniert im Moment noch nicht ganz, funktioniert aber nach folgendem Prinzip:
Beschreibung: |
|
 Download |
Dateiname: |
Messungen.txt |
Dateigröße: |
100.4 KB |
Heruntergeladen: |
375 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.06.2016, 22:11
Titel:
|
 |
Hallo,
ich würde zunächst mal in der Datei alle Kommas durch Punkte ersetzen.
Dann würde ich mit
fgetl
und
textscan
(Trennzeichen \t) arbeiten. Ab R2014b gibt es datetimes, und dann sollte man Datumsangaben auch als solche einlesen.
Natürlich musst du wissen, nach was du suchst. Interessieren dich beispielsweise immer die Blöcke nach "Datum"?
Das Import-Tool (Rechts-Klick --> Import data) kann auch helfen, die Dateistruktur zu erkennen und mal einen Beispielbefehl zu erzeugen, den man anpassen kann.
Grüße,
Harald
|
|
|
andreas1425 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 21.06.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.06.2016, 12:22
Titel:
|
 |
Super, vielen Dank
Mit textscan und dem generierten Importskript konnte ich jetzt schon mal einiges machen.
Jetzt würde mich nur noch interessieren, ob es eine Möglichkeit gibt, mit textscan nur jede n-te Zeile einzulesen, um bei Bedarf den Datenumfang zureduzieren.
In der doku hab ich nix dazu gefunden
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.06.2016, 14:07
Titel:
|
 |
Hallo,
es gibt das Beispiel "Skip the Remainder of a Line".
Mit %*[^\n] gehst du ans Ende der Zeile. Mit
sollte es möglich sein, nur jede k-te Zeile zu bekommen.
Grüße,
Harald
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|