Verfasst am: 15.04.2010, 20:19
Titel: Einlesen von mehreren Dateien gleichzeitig
Hallo!
Ich bin ganz neu mit matlab und habe dementsprechend sehr wenig Ahnung, habe nur mal ein wenig C programmiert, mich aber nie mit Dateihandling beschäftigt.
Ich möchte gerne ein Skript schreiben um aus mehreren Dateien gleichzeitig Datensätze einzulesen.
Folgendes Format haben die Dateien:
Header
Datensatz1
Datensatz2
.
.
.
Die verschiedenen Dateien sind alle gleich aufgebaut, interessant ist für mich immer nur ein bestimmter Datensatz (z.B. Datensatz1 (Reifen links vorne) bei Datei 1-5, Datensatz 2 (Reifen rechts vorne) bei Dateien 6-8 etc.)
Da es sich um viele Dateien handelt, möchte ich nicht mit einer Schleife uigetfile jeden zu importierenden Ordner zeigen müssen. Deshalb versuche ich eine Lösung mit untenstehendem Code zu finden:
Nun würde ich gerne alle Dateien öffnen und die entsprechenden Datensätze mit textscan auslesen. Meine Fragen:
1) Wie kann ich textscan "ohne headerlines" sagen, wo er anfangen soll, am besten auch noch so, dass man dies in einer GUI einstellen kann? Vor jedem Datensatz gibt es einen bestimmten Ausdruck (Reifen links vorne, Reifen rechts vorne ect.). Kann ich mir dies irgendwie zu Nutze machen?
2) Wie schaffe ich es, mit fopen die ausgewählten Dateien alle zu öffnen, und die entsprechenden Datensätze in verschiedenen Vektoren zu speichern, sodass man anschließend die Datensätze plotten kann?
Zum Verständnis: uigetfile macht die Dateien für matlab existent, oder?
Verfasst am: 16.04.2010, 09:26
Titel: Re: Einlesen von mehreren Dateien gleichzeitig
labida hat Folgendes geschrieben:
Zum Verständnis: uigetfile macht die Dateien für matlab existent, oder?
Nein, uigetfile öffnet lediglich ein Fenster, in dem man Dateien auswählen kann und gibt die Pfade der ausgewählten Dateien zurück.
Anschließend kannst Du die so gewonnenen Information an fopen, textread, dlmread, xlsread, csvread, ... übergeben, die dann wiederum die Dateiinhalte preisgeben.
Matlab bietet ziemlich viele Funktionen zum Dateien auslesen an - gerade, wenn dort strukturierte Daten drinstecken, ist eigentlich für jeden Geschmack was dabei. Einfach mal die Hilfe bemühen, die ist im allgemeinen sehr ausführlich und verweist auch zu ähnlichen Befehlen. dlmread ist grundsätzlich ein guter Startpunkt...
Labida
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.04.2010, 16:13
Titel:
Hallo!
Danke für deine Antwort. Ich habe die Hilfedatei schon durchgemacht, deswegen habe ich ja vorgeschlagen textscan zu verwenden, da ich ja in Mitten der Datei anfangen möchte auszulesen. Für eine Datei klappt das auch schon super, habe folgendes Skript erstellt:
Nun möchte ich aber mit dem schon im ersten Beitrag genannten Befehl meherere Dateien gleichzeigtig öffnen und in Vektoren "data1, data2 etc" speichern. Kann ich das irgendwie realiesieren? Leider fehlt es mir da an Verständnis, wie ich die ausgegebenen Pfade mit fopen öffnen kann. dlmread ist glaube ich nicht sinnvoll bei meiner Anwendung, da ich ja sozuagen nach Keywords suchen will, und erst ab der nächsten Zeile nach dem Keyword einlesen möchte. dlmread kann ja glaube ich nur nummerische Daten lesen oder?
Du kannst uigetfile mit der Option multiselect aufrufen, dann kannst Du mehrere Dateien auswählen. Die liest Du dann einfach mit Hilfe einer Schleife der Reihe nach ein.
Labida
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.04.2010, 12:04
Titel:
Ja soetwas in der Richtung dachte ich mir. Nur wie genau muss ich die Schleife initialisieren. Wie werden die Dateien genau eingelesen? Ich muss ja der Schleife eine Abbruchbedingung geben. Das heißt Matlab muss ja jedem Pfad einen bestimmten Dateinamen geben. Ist dies der Filterindex? Diese Dateien muss ich irgendwie zählen und diese Anzahl dann als Abbruchbedingung in die Schleife schreiben. Dann muss ich fopen in der Schleife die Speicherorte zuweisen. Mein Problem ist, dass ich nicht weiß was genau mit den Pfaden passiert sobald diese von uigetfile ausgelesen wurden. Werden diese in einem Vektor gespeichert? Wie heißt dieser Vektor/ diese Variable?
Ok habs gefunden... die werden alle in filename gespeichert als Vektor. Gut Danke glaub das hilft weiter. Manchmal ists doch alles einfacher als man denkt^^
Ich denke aber ich werde mich demnächst nochmal melden, gerade wenns dann um das keyword geht...
Ja numel ist mein Freund, aber leider auch mein Feind. Denn wenn ich nur eine Datei auswähle, die eingelesen werden soll, dann wird das Cell Array filename zu einem Char Array filename. Folglich gibt mir numel dann die Anzahl der Charakters aus, wobei ich gerne nur die Anzahl des Cell Arrays haben möchte. Ich habe schon versucht das Char Array als Cell Array zu casten, leider ohne Erfolg...
Hallo!
Danke das hat geholfen, soweit funktioniert jetzt das einwesen.
Gruß
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.