Zwischen bestimmten Strings Koordinaten aus txt auslesen
Maik aus Magdeburg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 26.03.2013, 04:51
Titel: Zwischen bestimmten Strings Koordinaten aus txt auslesen
Hallo Matlabgemeinde ich habe folgendes Problem.
Ich habe folgende TXT-Datei (ist nur ein Auszug, die komplette Datei ist mehrere 1000 Zeilen lang).
In der Datei stehen Bildnummern, Punktnummern und Koordinaten.
An dem Punkt wo in zwei aufeinander folgenden Zeilen PHO am Anfang steht beginnt jeweils ein neuer Datensatz wobei das zweite PHO den Beginn des neuen Datensatzes markiert. Vom nächsten doppelten PHO das erste PHO beendet den Datensatz. Es stehen also in jedem Datensatz 3 Zeilen mit PHO am Anfang. Die Koordinaten stehen zwischen den PHO-Zeilen. Ein korrespondierendes paar Koordinaten zwischen 3 Zeilen PHO hat immer die gleiche Anzahl.
Die Anzahl der Koordinaten variiert aber von Datensatz zu Datensatz
Benötigen tue ich nur die Koordinaten zum rechnen und die beiden Bildnummern (in den ersten beiden PHO-Zeilen) zum nummerieren der Lösungsdateien.
Ich möchte jetzt in einer Schleife für jeden Datensatz jeweils die zwei Koordinatenmatrizen herauslesen (die Punktnummer die vor den Koordinaten stehen benötige ich nicht) mit denen ich dann Berechnungen durchführen möchte. Finde ich eine Lösung, möchte ich die nach den beiden Bildnummern benennen.
Ich weiß zwar wie ich auf einzelne Elemente in den Zeilen zugreifen kann, jedoch habe ich noch nicht herausgefunden wie ich den Datensatz abschließe bzw. wie ich die Bildnummer in der Mitte des Datensatzes extrahieren kann.
Mein Lösungsansatz ist wie folgt.
Hallo jurtsche, vielen Dank für die schnelle Hilfe.
Ich hätte das so nie hinbekommen, in Tagen nicht.
Das Programm funktioniert teilweise.
Es erstellt nachdem ich es nur minimal erweitert habe 3 Matrizen mit zwei Spalten.
Eine Matrix heißt Photonumber1, hier stehen jeweils die beiden Bildnummern eines Datensatzes in einer Zeile der Matrix drin.
In den anderen beiden Matrizen steht jeweils die erste Koordinate (x und y) eines Datensatzes für ein Bild in einer Zeile der Matrix drin. In der Matrix Bl die erste Koordinate des linken Bildes in Br die erste Koordinate des rechten Bildes.
Wie bekommt man das hin das er alle Koordinaten (ca. 5-7) des linken Bildes für einen Datensatz die Matrix Bl bzw. das er alle Koordinaten (ebenfalls ca. 5-7) des rechten Bildes für einen Datensatz in die Matrix Br schreibt. Dabei soll er nur die Koordinaten eines Datensatzes in die Matrix Bl bzw. Br schreiben.
Das Programm durchläuft alle Zeilen, trotzdem schreibt er nur die erste Koordinate eines Datensatzes in die Matrix Bl bzw. Br.
Nachdem ich damit gerechnet habe soll er die Koordinaten wieder überschreiben.
jetzt steht alles vom 1. datensatz in Datensatz(1)
also z.b. Datensatz(1).Bl oder Datensatz(1).Photonumber1
oder Datensatz(2).Br(2,2)
lg
Maik aus Magdeburg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.04.2013, 02:36
Titel:
Hallo jurtsche, auch wenn es etwas gedauert hat, vielen Dank noch mal für die gute Hilfe.
Das Programm hat für die erste Anwendung nach einer kleinen Modifikation super Funktioniert.
Leider muss ich zugeben das ich selbst nach dem Einbau von vielen Breakpoints und arbeiten mit dem Debugger noch nicht vollends verstanden habe wie, bzw. warum das Programm funktioniert. Es läuft aber für die erste Anwendung super (wenn auch ohne die Structe, da ich mit denen nicht klar gekommen bin).
Ich habe jetzt noch einen zweiten Datensatz bekommen. Dieser ist jedoch andres aufgebaut und wollte ihn eigentlich zu dem ersten umschreiben, damit ich das alte Programm zum einlesen nehmen kann. Geht aber nicht mit dem Editor bzw. ist mühsam bei mehreren tausend Zeilen. Jetzt habe ich versucht das hier gepostete Programm umzuschreiben, aber ich kriegs nicht hin.
Kriege das nur für den ersten Datensatz hin, danach driftet er aus dem rahmen.
Diesmal ist neben den Koordinaten, die Bildnummer in der jeweils dritten Schriftzeile eines Koordinatensatzes wichtig. Hier steht nach PHO =OBS= die Bildnummer.
Der erste Beispiel-Koordinatensatz hat also insgesamt 23 Zeilen. Die Koordinatensätze sind unterschiedlich groß, haben also unterschiedlich Anzahl von Punkten.
Mein Problem ist das ich nicht weiß wie ich über Textzeilen springen ohne dabei wichtige Daten (Bildnummer) auszulassen.
Der neue Beispieldatensatz befindet sich im Anhang.
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.