|
|
Txt-Datei einlesen -> String suchen -> Wert danach spe |
|
JaSoIstEs |

Forum-Guru
|
 |
Beiträge: 266
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: Hessen
|
 |
|
 |
Version: 2019b
|
 |
|
|
 |
|
Verfasst am: 04.05.2018, 17:59
Titel: Txt-Datei einlesen -> String suchen -> Wert danach spe
|
 |
Hallo,
wie schaffe ich es durch eine Text-Datei Zeile für Zeile durchzugehen und nach bestimmten String/Character Reihenfolge zu suchen und Wert der danach dort aufgeschrieben ist zu speichern.
Würde gerne alle gefundenen Werte in einem Vector speichern (Reihenfolge muss so bleiben wie er diese gefunden hat).
Text-Zeile kann wie folgt aussehen:
1/200 t = 0 s
Und ich brauche nur die 0.
1000 Zeilen später könnte dann wieder erneut
2/200 t = 0.5 s
stehen. Dann brauche ich nur die 0.5.
Vielen Dank im Voraus.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.05.2018, 10:13
Titel:
|
 |
Hallo,
ich würde es mit
textscan
und einem Formatstring wie '%*f t = %f s' versuchen.
Wenn in der Datei auch anders strukturierte Zeilen enthalten sind, die einzelnen Zeilen mit
fgetl
holen und z.B. vorab testen, ob = enthalten ist.
Grüße,
Harald
|
|
|
JaSoIstEs |
Themenstarter

Forum-Guru
|
 |
Beiträge: 266
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: Hessen
|
 |
|
 |
Version: 2019b
|
 |
|
|
 |
|
Verfasst am: 07.05.2018, 09:32
Titel:
|
 |
Hallo Harald,
danke dir für deine schnelle Antwort.
Ich hab dir hier mal eine Beispiel Datei angehängt.
Wenn ich deinen Vorschlag einpflege bekomme ich nur [] in mein Cell geschrieben.
Zum einlesen der zwei Spalten welche die Werte beinhalten verwende ich folgendes:
Beschreibung: |
|
 Download |
Dateiname: |
Beispiel_Datei.txt |
Dateigröße: |
598 Bytes |
Heruntergeladen: |
293 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.05.2018, 19:50
Titel:
|
 |
|
|
JaSoIstEs |
Themenstarter

Forum-Guru
|
 |
Beiträge: 266
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: Hessen
|
 |
|
 |
Version: 2019b
|
 |
|
|
 |
|
Verfasst am: 07.05.2018, 22:57
Titel:
|
 |
Vielen Dank für deine Hilfe.
Funktioniert wie es soll.
Aber sobald ich deinen Code in meine While setze überspringt er dann einen Wert.
Woran kann das liegen?
Kleine Frage nebenbei... . Kann man beim einlesen einer Text-File die Daten so "manipulieren" das sie nicht so viel Speicherplatz einnehmen bzw. kann man die Byte Zahl senken in dem man den Datentyp ändert?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.05.2018, 07:16
Titel:
|
 |
Hallo,
warum denn noch eine for-Schleife?
Bitte den Code posten.
Du kannst die Daten z.B. als Single importieren, siehe Doku von textscan. Was anderes bietet sich für mich bei Dezimalzahlen nicht an.
Grüße,
Harald
|
|
|
JaSoIstEs |
Themenstarter

Forum-Guru
|
 |
Beiträge: 266
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: Hessen
|
 |
|
 |
Version: 2019b
|
 |
|
|
 |
|
Verfasst am: 10.05.2018, 17:29
Titel:
|
 |
Ne nicht noch eine For-Schleife.
Im Moment habe ich zwei While-Schleifen drin.
1. Zum einlesen der zwei Zahlen reihen
2. Zum finden und speichern der Zeitwerte
Wenn ich deinen Code (Ohne while) in meine while verpacken will vertragen die sich nicht. Ich kann es mir leider nicht so ganz erklären. Vielleicht habe ich textscan hier nicht so richtig verstanden.
Im folgenden Fall funktioniert alles so wie ich es will.
Wenn ich das aber so codiere:
Dann nimmt er bei mir das erste "t = " nicht mit bzw. überspringt er das.
|
|
|
JaSoIstEs |
Themenstarter

Forum-Guru
|
 |
Beiträge: 266
|
 |
|
 |
Anmeldedatum: 01.10.12
|
 |
|
 |
Wohnort: Hessen
|
 |
|
 |
Version: 2019b
|
 |
|
|
 |
|
Verfasst am: 10.05.2018, 22:27
Titel:
|
 |
Mir ist gerade noch ein Problem aufgefallen.
Beim einlesen der zwei Zahlen-Spalten kommt ja irgendwann die Zeile
"2/3 t = 0.682667 s"
Hier nimmt er die zwei für die erste Spalte und für "/" fügt er ein NaN rein.
Kann an diese Zeile irgendwie ignorieren? Oder gibt es hier einen Workaround?
Ist mir leider erst eben aufgefallen.
|
|
|
|
|
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.
|
|