ich habe Daten eines Referenzsystems und Messdaten. Jetzt will ich meine Messdaten mit Hilfe des Referenzsystems kennzeichnen ob die Werte gerade konstant bleiben oder zu-/abnehmen. Ich hab natürlich schon gegoogled aber nicht wirklich gefunden was ich suche. Mein erster Gedanke war folgender Code unten der einfach den Wert des Referenzsystems mit dem vorherigen vergleicht und an der entsprechenden Stelle in meinem Daten Objekt 0 = konstant, -1 = Abnahme, 1 = Zunahme einträgt. Die Referenzdaten sind so genau, dass bei keiner Änderung die Differenz zwischen zwei hintereinander folgenden Werten immer 0 ist. Jedoch sind die Messintervalle so klein, dass auch in Phasen der Änderung die meisten Datenpunkte mit dem nachfolgendem Code mit 0 gekennzeichnet werden.
Das Problem wollte ich damit beheben, dass ich ein sinnvolles Intervall festlege und er beim ersten mal wenn er eine Änderung registriert alle nachfolgende Datenpunkte über das Intervall mit dem entsprechenden Zustand (0, -1, 1) kennzeichnet und gleichzeitig überprüft ob innerhalb des Intervalls ein anderer Bewegungszustand vorkam und dann ggfs. das nächste Intervall entsprechend ausfüllt usw. usw.
Ziel ist am Ende die Daten z.B. nach durchschnittlicher Abweichung der Messdaten zum Referenzsystem während konstanten und sich ändernden Werten zu vergleichen.
Im Grunde habe ich zwei Fragen. Soll ich die selbst gebastelte Lösung weiterverfolgen oder gibt es für das Problem schon Funktionen in numpy bzw. panda die das ganze besser/schneller machen?
Falls ich die eigene Lösung benutzen sollte bin ich auch gerne für Vorschläge offen falls jemand eine bessere Idee hat wie man die Zustände heraus findet und kennzeichnet.
Code: Alles auswählen
def movement_data(data):
for i in range(0, len(data.time), 1):
if i == 0:
data.motionstate.append(0)
elif(data.ref[i] - data.ref[i-1] > 0):
data.motionstate.append(1)
elif(data.ref[i] - data.ref[i-1] < 0):
data.motionstate.append(-1)
else:
data.motionstate.append(0)
return data