Zeitabhängige Variablen Änderung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
raspberrygps
User
Beiträge: 7
Registriert: Montag 8. August 2016, 21:54

Hey,

Ich suche nach einer zeitabhängigen Variablenänderungs Erkennung

Also wenn wert x sich in <= 6 Minuten um y wert ändert!

Da soll aber mit betrachtet werden das sich der Zeitraum auch variabel gestaltet das z.b zwischen 12:00 - 12:06 aber auch 12:02 - 12:08 sich wert x um y Änderungen kann und erkannt wird .

Jede Hilfe würde mich freuen
Mfg GPS
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Ok.

Was ist dein Vorschlag, wie man das Problem lösen könnte?
Mein Vorschlag wäre:

Code: Alles auswählen

# Wert gesetzt
x = 1
# Wert gespeichert
old_x = x
# neuer Wert
x = 0

while True:
    if x != old_x:
    	# Wert hat sich geaendert
Zuletzt geändert von Anonymous am Dienstag 8. November 2016, 10:45, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
raspberrygps
User
Beiträge: 7
Registriert: Montag 8. August 2016, 21:54

sebastian0202 hat geschrieben:Ok.

Was ist dein Vorschlag, wie man das Problem lösen könnte?
Mein Vorschlag wäre:

Code: Alles auswählen

# Wert gesetzt
x = 1
# Wert gespeichert
old_x = x
# neuer Wert
x = 0

while True:
    if x != old_x:
    	# Wert hat sich geaendert


Hier wird nur der letzte wert verglichen und nicht zeitabhängig ? Sagen wir y soll sich um 8 verändern innerhalb von 4 min
12:01 y= 10
12:02 y= 14
12:03 y= 20

Deins würde hier nie sagen True
BlackJack

@raspberrygps: Dann musst Du Dir nicht nur Werte merken, sondern auch Zeiten. Das `datetime`-Modul ist in dem Zusammenhang sicher interessant.
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Das ist ja doof. So soll es ja nicht sein.
Wie sieht denn deine Lösung aus, oder deine Ideen?

Wie wäre es damit?

Code: Alles auswählen


import time
# Startwert gesetzt
x = 1
# Wert gespeichert
old_x = x
# zeit seit start
timestamp = time.time()

def do_whatever_i_want(x):
    # 5 Minuten
    if timestamp < (time.time() - 300):
        return 2
    else:
        return 1

while True:
    if x != old_x:
        # Wert hat sich geaendert
        break
    x = do_whatever_i_want(x)
    time.sleep(1)

raspberrygps
User
Beiträge: 7
Registriert: Montag 8. August 2016, 21:54

Code: Alles auswählen

x = 0
while True:
Letztwert‘x‘ = fwert 
x=x+10
time.sleep(10)

	if letzwerwert x >= (letztwert x-5)+10
	if letzwerwert x >= (letztwert x-6)+10
	if letzwerwert x >= (letztwert x-7)+10
irgendwie so ??
BlackJack

@raspberrygps: Also mir ist die Fragestellung noch nicht so ganz klar. Soll ein Messwert genommen werden und nach x Minuten verglichen werden ob der um einen bestimmten Betrag abweicht? Oder gibt es kontinuierlich Messungen alle n Sekunden und es soll jedes mal geschaut werden ob die von der Messung vor x Minuten um einen bestimmten Betrag abweicht?

Beschreibe doch mal das zugrunde liegende Problem welches hier gelöst werden soll.
raspberrygps
User
Beiträge: 7
Registriert: Montag 8. August 2016, 21:54

@BlackJack Ja genau

es gibt einen kontinuierlichen Messwert der sich jede n Sekunde ändert.

Nun soll immer erkannt werden wenn innerhalb einer bestimmten x Zeit sich der Wert um einen bestimmten Wert y ändert.
BlackJack

@raspberrygps: Dann könntest Du alle n Sekunden messen und den Wert in eine `collections.deque` stecken und wenn die x/n Einträge hat, dann kannst Du den vordersten Wert entfernen und prüfen ob der entsprechend abweicht.
raspberrygps
User
Beiträge: 7
Registriert: Montag 8. August 2016, 21:54

BlackJack hat geschrieben:@raspberrygps: Dann könntest Du alle n Sekunden messen und den Wert in eine `collections.deque` stecken und wenn die x/n Einträge hat, dann kannst Du den vordersten Wert entfernen und prüfen ob der entsprechend abweicht.
Danke ich schau mal wie das klappt
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

raspberrygps hat geschrieben:Nun soll immer erkannt werden wenn innerhalb einer bestimmten x Zeit sich der Wert um einen bestimmten Wert y ändert.
Noch mal eine Nachfrage:
Brauchst du für deinen Anwendungszweck tatsächlich nur den absoluten Messwert-Unterschied zwischen zwei (variabel auseinander liegenden) Zeitpunkten? Alles was dazwischen passiert ist, (beispielsweise auch Messwerte oberhalb deines Schwellwerts) interessiert dich nicht?
raspberrygps
User
Beiträge: 7
Registriert: Montag 8. August 2016, 21:54

nezzcarth hat geschrieben:
raspberrygps hat geschrieben:Nun soll immer erkannt werden wenn innerhalb einer bestimmten x Zeit sich der Wert um einen bestimmten Wert y ändert.
Noch mal eine Nachfrage:
Brauchst du für deinen Anwendungszweck tatsächlich nur den absoluten Messwert-Unterschied zwischen zwei (variabel auseinander liegenden) Zeitpunkten? Alles was dazwischen passiert ist, (beispielsweise auch Messwerte oberhalb deines Schwellwerts) interessiert dich nicht?
es sollte so aussehen
Bild

es soll auch gesagt werden das eine Änderung innerhalb von 5 Sekunden um einen delta wert 9x angezeigt wird . in diesem Beispiel jetzt.
wie man sieht muss ab jeden Messwert geschaut werden ob bei 6 Sekunden oder wenigerr einen Änderung von x=>9 vorliegt.

im Bespielt ist in orange ab jeden Messwert getestet worden ob die Steigung nach 6 oder weniger Sekunden 9 oder mehr beträgt.
Das grüne Steigungsdreieck zeigt dann einen solchen Fund an.
Antworten