Verfasst am: 09.10.2015, 15:41
Titel: .txt Datein auswählen und einlesen mit Zahlen und Strings
Hallo,
ich bin seit Stunden dabei eine Lösung für mein Problem zu suchen, finde jedoch nichts was wirklich hilft bzw was sich umsetzen lässt.
Also Aufgabenstellung:
Ich will eine Tabelle in .txt Format einlesen um damit später weiter arbeiten zu können.
Diese möchte ich nach Möglichkeit selbst bei Programstart selbst auswählen können, um später das Programm für mehrere unterschiedliche Datensätze Nutzen zu können. Das Layout der Tabelle ist immer identisch und nur unterschiedlichen Inhalten und verschieden vielen Einträgen versehen.
Dafür habe ich gedacht würde sich der der Befehl
eignen, jedoch kann ich damit alleine nicht auf die Inhalte der Zugreifen. Zumindest nicht so wie ich es mir vorgestellt habe.
Als Alternative habe ich auch einiges mit den Befehl
ausprobiert aber darüber komme ich auch nicht an die Inhalte der Tabelle ran, bzw werden mir nur fragwürdige Dinge eingelesen. (1x1 Tabelle die bei Programmstart einfach weiterzählt)
Das einzige was bisher zumindest ansatzweise funktioniert hat ist der
-Befehl, jedoch kann ich damit nur Zahlen einlesen und verarbeiten und somit bekomme ich bei den Attributen "Typ" und "Sorte" Probleme. Bei einer auf die reinen Zahlenwerte gekürzten Tabelle hat es wie gewünscht funktioniert.
Kann mir jemand helfen und sagen ob ich komplett auf dem Holzweg bin oder wie ich mit den aufgeführten Befehlen meine Daten gescheit einlesen kann.
Gerne nehme ich auch ganze Programmbausteine, da ich - nach meiner Vermutung nach- Probleme bei der Syntax habe.
Vielen Dank
Test1.txt
Beschreibung:
Die beispielt Tabelle welche eingelesen werden soll
welche probleme sind denn bei den anderen befehlen zum einlesen von daten aufgetaucht? da du ja schon eine stunde rumprobierst hast du ja bestimmt einige aus dem FAQ: Daten aus einer Text-Datei einlesen thread ausprobiert. welche fehler sind dabei aufgetreten? auch in der documentationzu
load
gibt es einen weiterführenden link Ways to Import Text Files
grüße
_________________
Hi, erstmal danke für die Antwort.
Die Probleme habe ich schon versucht so gut es geht zu beschreiben (fange jetzt erst an mich mit Matlab auseinander zu setzen).
Bei 'uigetfile' bekomme ich nur den Namen der Datei eingelesen, wüsste aber nicht wie ich auf deren Inhalte zugreifen kann.
Mit 'load' bekomme ich Fehlermeldungen sobald ich Strings in meiner Tabelle habe.
und der 'fopen' Befehl zählt einfach nur bei jedem mal +1 beim Ausführen des Programstarts ohne inhalte der Tabelle einzulesen.
Nach meinem Verständnis muss ich den Befehl erweitern mit dem
Befehl, jedoch verstehe ich die Syntax der benötigten "formatSpec" nicht. Hierzu habe ich bisher auch keine verständliche Erklärung gefunden was es mit den "%f, %r %d "ect. auf sich hat.
Und im weiteren würde ich meine Datei ja gerne manuell Auswählen können, also nicht namentlich im Programm nennen, sondern wie es der 'uigetfile'- Befehl ermöglicht manuell auswählen können ohne anschließend die einzelnen Spalten wieder manuell einpflegen zu müssen.
nunja mit
uigetfile
suchst du die datei raus. die öffnest du dann mit
fopen
und den file identifier giebst du dann an
textscan
deine beispiel datei hat zb eine header zeile
gefolgt von zeilen die bestehen aus '%s %d %d %d %s'.
_________________
Aber die "Tabelle" hat mein mir dann nur 1x5Zellen und die sind auch nicht mit dem richtigen Inhalten gefüllt.
Aber zumindest klappt das manuelle auswählen der Datei jetzt schonmal. Danke
versucht.
Das funktioniert jetzt auch schon einigermaßen, jedoch habe ich nicht wie vorher die Möglichkeit eine Variable ( 'fileID' ) wie bisher anzugeben, braucht 'readtable' immer einen Verweiß auf eine bestimmt Datei?
Im weiteren verstehe ich das `false`nicht wirklich, habe ich aus den Beispielen einfach übernommen, finde aber keine Erklärung auf die Bedeutung. Würde da gerne verstehen was es damit auf sich hat.
Vielen Dank bis hierhin auf alle Fälle schon mal für die Bemühungen.
Sorry habe die ganze zeit versucht im der Doku von 'textscan' einen Hinweis zu finden.
Wenn du selbst oder durch uns weißt, welche Option verwendet werden muss: in die Doku der Funktion schauen und dann entweder auf den 'Name'-Link bei den Parameter-Wert-Paaren klicken, oder mit Strg+F nach der Option suchen.
Zitat:
braucht 'readtable' immer einen Verweiß auf eine bestimmt Datei?
Ja, aber du kannst natürlich statt eines Strings auch eine Variable angeben, die den Dateinamen beinhaltet. Es ist also lediglich eine Vereinfachung, dass man nicht erst die FileID erstellen muss.
Zitat:
Im weiteren verstehe ich das `false`nicht wirklich, habe ich aus den Beispielen einfach übernommen, finde aber keine Erklärung auf die Bedeutung.
Schau dir doch die Dokumentation der ReadVariableNames-Option an. Du kannst hier die Optionen auch weglassen, und bekommst schön beschriftete Spalten:
Sorry habe die ganze zeit versucht im der Doku von 'textscan' einen Hinweis zu finden.
Wenn du selbst oder durch uns weißt, welche Option verwendet werden muss: in die Doku der Funktion schauen und dann entweder auf den 'Name'-Link bei den Parameter-Wert-Paaren klicken, oder mit Strg+F nach der Option suchen.
Ja dank deines Hinweises bin ich jetzt auch in die Tiefen der Dokumentation eingestiegen.
Harald hat Folgendes geschrieben:
Zitat:
braucht 'readtable' immer einen Verweiß auf eine bestimmt Datei?
Ja, aber du kannst natürlich statt eines Strings auch eine Variable angeben, die den Dateinamen beinhaltet. Es ist also lediglich eine Vereinfachung, dass man nicht erst die FileID erstellen muss.
Ahh die funktion "fopen" war überflüssig, ohne sie klappt es auch mit der Variablen
Harald hat Folgendes geschrieben:
Zitat:
Im weiteren verstehe ich das `false`nicht wirklich, habe ich aus den Beispielen einfach übernommen, finde aber keine Erklärung auf die Bedeutung.
Schau dir doch die Dokumentation der ReadVariableNames-Option an. Du kannst hier die Optionen auch weglassen, und bekommst schön beschriftete Spalten:
Hatte ich auch versucht, dabei gab es jedoch einen Fehler, jetzt beim Kopieren deines Codes klappt es, wohl wieder ein Synaxfehler.
Auf alle Fälle Vielen dank für die Hilfe, jetzt habe ich das Problem zumindest soweit gelöst, vielen Dank
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.