|
|
Daten aus Textdatei auslesen, in Matrix speichern |
|
Tweety560 |

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 23.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.01.2014, 20:27
Titel: Daten aus Textdatei auslesen, in Matrix speichern
|
 |
Hallo. Ich weiß, erstmal die FAQ zu dem Thema lesen. Ich verstehe dort die Antwort unter 3. so, dass in hartnäckigen Fällen persönlichen Unvermögens oder komplexerer Dateistrukturen ein Post i. O. ist... Bei beidem bin ich mir unsicher
Hier also die Frage. Meine .txt-Datei hat 10MB und die folgende Struktur (Ausschnitt):
Ich möchte jetzt eine Matrix erhalten, in der ausschließlich die Zahlen stehen, idealerweise hübsch sauber formatiert. Ist es sinnvoll, bei 10MB großen Dateien sowas zu wollen? Wie muss der Code dazu aussehen?
Ziel ist, den xx, yy und zz durch einen Konturplot Farben zuzuweisen, die sich aus einem der Spannungsvektoren ergeben.
Ich habe mal help fget, help fscanf probiert. Leider werde ich da aus den Beschreibungen nicht schlau
Vielen Dank für Eure Hilfe...
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 00:41
Titel:
|
 |
Zitat: |
Leider werde ich da aus den Beschreibungen nicht schlau |
was verstehst du denn nicht? was hast du bis jetzt versucht? welche fehlermeldungen sind aufgetreten? in wie weit weicht das erziehlte ergebniss vom gewünschtem ab?
grüße winkow
_________________
richtig Fragen
|
|
|
Tweety560 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 23.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 10:24
Titel:
|
 |
Hallo Winkow, vielen Dank für die schnelle Reaktion.
nach
erscheint ja eine "Vorschrift", wie der Befehl zu verwenden ist. Da stehen dann Dinge wie "FID", "Template" und "Size".
Ich verstehe, dass "FID" etwas mit meiner Textdatei zu tun hat, wie in
"Template" müsste mit dem Format des Inhaltes der Datei zu tun haben. Aber genau da hängts. Wie gehe ich damit um? Wie muss der fscanf-Befehl für das Beispiel oben aussehen?
"Size" ist wohl optional. Wenn ich das weglasse, versucht die Funktion alles zu erfassen bis die Datei zu ende ist.
muss natürlich einen Fehler liefern, der besagt dass fscanf nicht korrekt benutzt wurde.
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 10:33
Titel:
|
 |
|
|
BlackDread |

Forum-Century
|
 |
Beiträge: 212
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2015a
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 10:36
Titel:
|
 |
Hallo Tweety,
FID ist der fileidentifier. diesen benötigst du für fscanf.
Das Format musst du entsprechend festlegen. Das könnte aber bei deiner Datei auch etwas komplexer werden.
Geht es nach dem Ausschnitt mit "Element # = 5" weiter?
Sind diese Blöcke immer von der gleichen Größe (4 Datenzeilen + 2Header?).
Je nachdem kann es auch sinnvoll sein das mit fgetl einzulesen.
Grüße
Chris
_________________
--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten
Richtig fragen!
|
|
|
Tweety560 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 23.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:14
Titel:
|
 |
Hi Dread,
Die Datei hat insgesamt Einträge für 16.000 Elemente, daher die Dateigröße von 10MB.
Die Blöcke sind aber immer gleich, 1 Leerzeile 2 Headerzeilen, 4 Datenzeilen. Ich muss das nicht so fürchterlich oft machen, d. h. ich könnte die ersten paar Zeilen Text händisch löschen.
Wenn ich das richtig interpretiere, tut fgetl per default nach jeder Zeile abbrechen. Wenn ich das unterbinde (was mir gerade noch nicht gelingt), dann schmeißt der Befehl mir auch den ganzen Text mit in meine Matrix. Richtig?
Ziel ist ja, in meiner Matrix nur Zahlen stehen zu haben. Idealerweise sogar nur Zahlen, für die die Einträge in der Spalte ZZ einen bestimmten Wert annehmen, z. B. 3. Momentan glaube ich aber noch, dass ich alle anderen Einträge durch eine logische Indizierung später rauswerfe.
Ach so, und genau das "Format entsprechend festlegen" ist für den Befehl gerade eins meiner Probleme
|
|
|
Tweety560 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 23.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.01.2014, 21:50
Titel:
|
 |
Moin nochmal, ich hab jetzt nach längerer Suche ein Beispiel im Netz gefunden, das mir ein bisschen weiter geholfen hat. Aus dem Beispiel konnte ich ahnen, wie das Format spezifiziert werden muss. Aber auch da komme ich nicht so recht weiter, weil die Werte in der Matrix dann nicht denen der Datei entsprechen.
Wie gesagt, kann ich die Datei noch händisch anpassen, so dass dann jeder 7-Zeilen-Block mit einer Leerzeile anfängt und insges. 3 Kopfzeilen hat:
Diese Datei heißt test.txt. Folgenden Code habe ich geschrieben, um erstmal den ersten Block Daten auszulesen:
Das Ergebnis:
Jetzt ist leider die 35 an Position (1,1) aus dem Ergebnis etwas anderes als die -9.16E-001 der Datei.
Das verstehe ich nicht... wäre froh, wenn mir hier jemand helfen kann... Vielen Dank und schönen Abend noch!
|
|
|
BlackDread |

Forum-Century
|
 |
Beiträge: 212
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2015a
|
 |
|
|
 |
|
Verfasst am: 27.01.2014, 14:51
Titel:
|
 |
Hallo tweety,
vielleicht bekommt man es mit fscanf hin, ich habe das eigentlich nur bei files verwendet, wo ich nur einen Header hatte. Bei so einem "regelmäßig unregelmäßigem" file wie deinem benutze ich gerne fgetl.
Du kannst danach die Matrix wie gewünscht unterteilen/verarbeiten.
Kann natürlich sein, dass es schönere/einfachere Methoden gibt;)
Grüße
Chris
_________________
--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten
Richtig fragen!
|
|
|
Tweety560 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 23.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.02.2014, 14:17
Titel: Funktioniert
|
 |
Moin, vielen Dank, das funzt.
|
|
|
|
|
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.
|
|