|
|
Textdatei mit fscanf ab bestimmter Zeile auslesen |
|
kohli311 |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 09.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.11.2016, 07:53
Titel: Textdatei mit fscanf ab bestimmter Zeile auslesen
|
|
Hallo zusammen,
ich habe Datenreihen in txt.-Dateien vorliegen, welche ich mit Matlab auswerten möchte. Ich brauche allerdings von den Daten nicht alles, sondern nur bestimmte Bereiche, d.h. einen Abschnitt mit bestimmter Anzahl an Zeilen.
Bislang habe ich den interessierenden Bereich im txt.-file immer ausgschnitten und ganz vorne eingefügt. So brauchte ich in Matlab dann nur noch die Anzahl an Zeilen angeben, die ich benötige. Aber so langsam wird mir das zu doof, da ich viele dieser Dateien habe. Hat jemand eine Lösung, wie ich fscanf benutze und damit einen interessierenden Abschnitt auslese? Danke schon mal.
Nur zur Info noch, die txt.-Dateien haben so einen doofen Header, den Matlab sowieso erstmal ignorieren soll. Das ganze file mit Header einlesen geht also nicht.
Grüße
kohli311
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 28.11.2016, 11:22
Titel: Re: Textdatei mit fscanf ab bestimmter Zeile auslesen
|
|
Hallo kohli311,
Wie ist der gewünschte "Bereich" definiert? Wie ist das Text-File aufgebaut? Weißt Du genau, wie viele Header-Zeilen am Anfang stehen oder sind sie irgendwie gekennzeichnet.
Die grundsätzlichen Schritte sind:
1. File öffnen.
2. Die Header-Zeilen einlesen lassen (und ignorieren)
3. Den gewünschten Bereich finden - vielleicht die gewünschte Anzahl von Zeilen mit
fgetl
einlesen und ignorieren.
4. Daten einlesen, vielleicht mit
fscanf
.
5. File schließen.
Für konktrete Tipps werden konkrete Angaben benötigt.
Gruß, Jan
Zuletzt bearbeitet von Jan S am 29.11.2016, 12:21, insgesamt einmal bearbeitet
|
|
|
kohli311 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 09.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.11.2016, 12:02
Titel:
|
|
Hallo Jan,
danke schon mal für deine Antwort. Das txt.-file wird von Ansys Maxwell erstellt und sieht aus wie im angehängten jpg zu sehen. Zudem ist dort auch die Darstellungsweise der Daten zu sehen. Es gibt zwei Spalten: Erste Spalte die Zeit, zweite Spalte wie hier z.B. eine Spannung in Volt. Ich brauche davon eigentlich nur die Spannungswerte für einen bestimmten Bereich.
Im Prinzip würde ich gerne in Matlab eingeben, dass das txt.-file ab Zeile XX für eine Anzahl an XX Zeilen in Spalte 2 eingelesen wird. Die Größe des interessierenden Datenbereichs variiert nämlich je nach untersuchter Variable.
Ich hoffe das hilft weiter.
Grüße
kohli311
Beschreibung: |
|
Download |
Dateiname: |
Header_und_Daten.JPG |
Dateigröße: |
45.38 KB |
Heruntergeladen: |
571 mal |
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 29.11.2016, 12:20
Titel:
|
|
Hallo kohli311,
Screenshots sind nicht gut geeignet um Text-Files wieder zu geben. Poste in Zukunft Texte lieber als Text. Danke!
Zitat: |
Im Prinzip würde ich gerne in Matlab eingeben, dass das txt.-file ab Zeile XX für eine Anzahl an XX Zeilen in Spalte 2 eingelesen wird. Die Größe des interessierenden Datenbereichs variiert nämlich je nach untersuchter Variable. |
Und wie wird die Größe der einzulesenden Daten festgelegt? Dynamisch während des Lesens oder weißt Du das vorher?
Wenn ich Deinen Screenshot richtig verstehe, möchtest Du immer die ersten 7 Zeilen ignorieren, richtig? Dann nimm doch mal das Grundgerüst aus meiner vorherigen Antwort und probiere das mal aus.
Gruß, Jan
|
|
|
kohli311 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 09.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.12.2016, 15:03
Titel:
|
|
|
|
|
Hallo Jan,
danke nochmal für deine letzte Antwort.
Also der Header sieht immer gleich aus (diese 7 Zeilen). Ich habe auch immer zwei Spalten. In Spalte 1 stehen immer Zeitwerte, in Spalte zwei stehen immer Spannungs-, Stromwerte oder ähnliches.
Es handelt sich hierbei um Simulationswerte aus dem Programm Maxwell. Für diese Simulation lege ich zuvor selbst fest wie groß die Zeitschrittweite und nach welcher Zeit die Simulation beendet ist. Ich kenne also bereits vor dem Öffnen des txt-files die Anzahl an Spalten und Zeilen.
Ich weiß auch zuvor ab welcher Zeile ich die Werte einlesen möchte (z.B. 5000) und für wie viele Zeilen (z.B. 2000). Ich möchte also in Matlab die Simulationswerte aus der txt-Datei ab Zeile 5000 in einer 2x2000 Variable speichern, um mit dieser Variable dann weiterarbeiten zu können.
Ich bekomme das nur noch nicht in Matlab umgesetzt. Deine Tipps waren schon mal nicht schlecht, aber ich bekomme z.B. das mit dem Ignorieren des Headers nicht hin.
Bei
bleibt "M" einfach nur leer [].
Ich hoffe das beschreibt es nun etwas besser.
Grüße,
kohli311
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 07.12.2016, 20:05
Titel:
|
|
|
|
kohli311 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 09.05.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.12.2016, 15:43
Titel:
|
|
Danke Jan, das ist genau das was ich wollte.
|
|
|
|
|
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 - 2024
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.
|
|