Seite 1 von 1

Werte aus einer Textdatei vergleichen

Verfasst: Donnerstag 12. Oktober 2017, 16:16
von Herba
Schönen guten Tag zusammen,

erster Eintrag, erste Frage.

Ich habe eine Textdatei in der die (x,y)- Bewegungskoordinaten einer Person in der Form: 0.45567//1.95864 abgespeichert sind (siehe Link unten). Die Daten wurden mit Hilfe eines Laserscanners aufgezeichnet und rauschen dementsprechend. Das heißt, dass ständig neue Werte generiert werden, obwohl sich die Person nicht bewegt hat.

Nun möchte ich die Koordinaten zeilenweise vergleichen und erst ab einem bestimmten Sprung von einer Zeile zur nächsten (z.B. Delta > 0.5) sagen, dass hier eine tatsächliche Bewegung stattgefunden hat.

Leider bin ich ein ziemlicher Programmier- Neuling, daher habe ich bis jetzt erst einen dürftigen Ansatz:

Code: Alles auswählen

coord = open("Koordinaten.txt","r")

for line in coord:
	arr = line.split('//')	# Trennung der x und y Koordinaten
	a = float(arr[0])		# Speicher in a den Wert links von "//"
	b = float(arr[1])	# Speicher in b den Wert rechts von "//"
cood.close()
Jetzt muss ich irgendwie eine Schleife entwickeln, welche den x/y- Wert der aktuellen Zeile mit dem x/y- Wert der nachfolgenden Zeile vergleicht. Und genau da fehlt mir der Ansatz.

Ich hoffe, dass ich mein Anliegen hinreichend erklären konnte und freue mich über Tipps und Ideen!

Grüße

https://workupload.com/file/n69VpcJ

Re: Werte aus einer Textdatei vergleichen

Verfasst: Freitag 13. Oktober 2017, 07:10
von heiner88

Code: Alles auswählen

coord = open("Koordinaten.txt","r")

old_a = -1.0
old_b = -1.0
for line in coord:
   arr = line.split('//') # Trennung der x und y Koordinaten
   a = float(arr[0])      # Speicher in a den Wert links von "//"
   b = float(arr[1])      # Speicher in b den Wert rechts von "//"
   if old_a == a  and  old_b == b:
       print("wert gleich")
   else:
       print("wert anders")
   old_a = a
   old_b = b
coord.close()

Re: Werte aus einer Textdatei vergleichen

Verfasst: Freitag 13. Oktober 2017, 08:02
von Sirius3
@heiner88: wenn man "Start"-Werte braucht, sollte man immer daran denken, was passiert, wenn diese "Start"-Werte tatsächlich auftauchen, und das ist bei Koordinaten und -1/-1 ja nicht ausgeschlossen. Besser man nimmt etwas, was nie einen Konflikt geben kann, hier bietet sich None an:

Code: Alles auswählen

previous_coords = None
with open("Koordinaten.txt", "r") as lines:
    for line in lines:
        # Trennung der x und y Koordinaten
        coords = tuple(map(float, line.split('//')))
        if previous_coords == coords:
            print("wert gleich")
        else:
            print("wert anders")
        previous_coords = coords
@Herba: eingerückt wird generell mit 4 Leerzeichen pro Ebene.

Re: Werte aus einer Textdatei vergleichen

Verfasst: Freitag 13. Oktober 2017, 10:45
von kbr
Die Lösung könnte man nun noch an die Anforderung anpassen, dass die Messungen einer tolerierten Ungenauigkeit unterliegen dürfen.

Code: Alles auswählen

THRESHOLD = 0.1

class Coordinate:
    
    def __init__(self, x, y):
        self.x = x
        self.y = y
        
    def __eq__(self, other):
        delta_x = self.x - other.x
        delta_y = self.y - other.y
        distance = (delta_x ** 2 + delta_y ** 2) ** 0.5
        return distance <= THRESHOLD


previous_coords = None

with open("Koordinaten.txt", "r") as lines:
    for line in lines:
        # Trennung der x und y Koordinaten
        coords = Coordinate(*tuple(map(float, line.split('//'))))
        if previous_coords and previous_coords == coords:
            print("wert gleich")
        else:
            print("wert anders")
        previous_coords = coords

Re: Werte aus einer Textdatei vergleichen

Verfasst: Samstag 14. Oktober 2017, 12:07
von Herba
Klappt alles, vielen Dank für eure Hilfestellungen!

Ein schönes Wochenende