NEWS
10 Werte, sortieren und nur die mittleren 6 nehmen
-
@guergen danke... ich suche...
@guergen said in 10 Werte, sortieren und nur die mittleren 6 nehmen:
Ich wollte nen Link reinpacken, aber das ist "forbidden " bei mir
schon ok

-
@michl75 Nimm den Median Wert - der nimmt aus einer Reihe von Werten immer den mittleren und nimmt nicht den Durchschnitt, sodass Ausreiser nach oben oder unten automatisch nicht berücksichtigt werden. Bei einer gerade Anzahl an Werten wird der Mittelwert der beiden mittleren Werte genommen, bei ungeraden Anzahl an Werten, der der wirklich in der MItte ist.
Hier gabs auch mal ein Script - ich hab es selbst nicht ausprobiert - da ich mit NR arbeite, aber das kann man sicher auch dann ggf. auf Deine Bedürfnisse anpassen kann. Die aggregator Node benutzt zum Beispiel diese Statistic Libary - mit der man den Median (s. API) leicht ermitteln kann, in dem man ihm ein Array von Datenpunkten übergibt.
-
@guergen offtopic --- versuchst du es mit dem handy? Hab da auch immer vorbidden

-
@michl75
wie liegen die daten vor?
wenn in javascript als array dann[5,3,8,1,4,9,0,2,6,7].sort((a,b)=>a-b).slice(2,8).reduce((c,el)=>c+el)/6
Ausgangsarray
[5,3,8,1,4,9,0,2,6,7]Ergebnis nach Sort
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]Ergebnis nach slice (einen Teil aus einem Array extrahieren
[2, 3, 4, 5, 6, 7]Ergebnis nach reduce (summieren des array)
27Ergebnis nach teilen / 6
4.5 -
@michl75
wenn du nur den Median haben willst nimm:
(unter Mathematik!)ansonsten gibt es unter Listen die Möglichkeit die Liste numerisch zu sortieren, vorne und hinten zu beschneiden, und unter Matthe dann wieder den Mittelwert Block

-
@homoran eben gerade erst deinen Beitrag gesehen ... dass muss ich mir sofort anschauen...
hier mein erster Versucht, ich hab sowas noch nie gemacht... also Top-Einsteiger-Variante...


Funktionieren tut das natürlich nicht wirklich ... eigentlich gar nicht da ich kein Ergebnis bekomme, da ich es nicht hinbekomme mit der Liste erzeugen und ergänzen... Katastrophen-Ausführung ist das mein Versuch...
Na ich esse erstmal was und dann schau ich mir deine Infos genauer an...
vielen Dank aber schon mal
-
@oliverio ja noch gar nicht irgendwie... ich habe mir einen Datenpunkt angelegt als Array und dann habe ich einen Datenpunkt aus MQTT der alle x Sekunden einen Wert bringt. Diesen MQTT Wert versucht ich gerade in einen "Array" zu bringen ... aber mit Blockly
Korrektur, da ich es mit Datenpunkt Array gar nicht hinbekommen habe, habe ich es erst mal mit einem String versucht (zusammengesetzt eben)
-
@michl75 sagte in 10 Werte, sortieren und nur die mittleren 6 nehmen:
Na ich esse erstmal was und dann schau ich mir deine Infos genauer an...
ich denke da wären immer nur 10 Werte drin?
Jetzt wird es komplexer.Entweder die Liste auf 10 Werte begrenzen, oder die Länge der Liste auslesen und dann mehr (????) Datenpunkte oben und unten (Ausreißer??) entfernen
-
@homoran said in 10 Werte, sortieren und nur die mittleren 6 nehmen:
ich denke da wären immer nur 10 Werte drin?
ja war mein Ziel... aber die muss ich ja erst aus dem MQTT Datenpunkt sammeln... und da fängts schon an das ich's nicht hinbekommen
@homoran said in 10 Werte, sortieren und nur die mittleren 6 nehmen:
Entweder die Liste auf 10 Werte begrenzen, oder die Länge der Liste auslesen und dann mehr (????) Datenpunkte oben und unten (Ausreißer??) entfernen
Ausreißer entfernen ... darum wollte ich eben 10 mal sammeln, dann sortieren... die ersten beiden weg und die letzten beiden auch --- Rest dann 6 Stück und damit den Durchschnitt machen
-
@michl75 auf die Schnelle mit der heißen Nadel:

ist es das was ihr suchet?
Hab hier mal 20 als Listenlänge vorgegeben und der Wert wird auch erst berechnet wenn 21 Mwssungen vorliegen
-
erzähle mal doch was so dein gesamtziel ist. bisher hast du nur einen kleinen ausschnitt erzählt. evtl bist du ja schon vom ansatz falsch unterwegs und es gibt einen einfacheren weg.
was für daten möchtest du den sammeln?
warum willst du die obersten und untersten abschneiden/webschmeißen?
und aus dem Rest den durchschnitt berechnen.
Wenn wir den Gesamtkontext wissen kann man besser helfen.
du hast halt eine detailfrage gestellt und hast eine detailantwort erhalten.
aus deinen weiteren posts entnehme ich aber, das das gesamtkonstrukt noch nicht klar ist. -
@oliverio soweit ich das aus anderen Threads zusammenreime hat er eine (gewöhnungsbedürftige) pH-Elektrode im Teich und möchte diese Kurve glätten.
@oliverio sagte in 10 Werte, sortieren und nur die mittleren 6 nehmen:
warum willst du die obersten und untersten abschneiden/webschmeißen?
Ausreißerbereinigung
-
tsts,
selbst wenn ich es weiß lass ich solche sachen meinen kunden beantworten (@michl75
)
das schafft dann ein gemeinsames verständnis und commitment
aber dann kann er es ja kurz bestätigen das das so ist.
ich merk mir nicht immer die namen zu den threads wer da so fragen stellt -
@oliverio na dann bin ich mal raus
-
halt halt, wenn er blockly will, bin ich raus

-
@michl75 sagte: 10 mal sammeln, dann sortieren... die ersten beiden weg und die letzten beiden auch --- Rest dann 6 Stück und damit den Durchschnitt machen
Vorschlag:

Nimmt immer die 10 letzten Werte (gleitend), sortiert diese und lässt die Ausreißer weg.
-
Ich melde mich gleich ... ich muss essen kosten ... Kinder....
Schaue es mir an so schnell ich kann ... schon mal Danke!EDIT
Frau nicht zuhause, ich bin heute der Herr im Haus
Also .. ja richtig, ich versuche die Werte des pH-Sensors weiter zu "glätten" .. bisher nehme ich 10 Werte und dann geteilt durch 10. Aber dieser Sensor bringt mich noch ins Grab. Daher dieser Versuch, wie er auch oft in so diversen Anleitungen geschrieben ist.
@paul53 das werde ich eben noch probieren sofern mich Kinder nicht weiter auf Trapp halten ... Ansonsten morgen Früh ...
Nochmals danke an alle!
-
@lobomau sagte in 10 Werte, sortieren und nur die mittleren 6 nehmen:
@guergen offtopic --- versuchst du es mit dem handy? Hab da auch immer vorbidden

Nein am Desktop
-
@paul53 said in 10 Werte, sortieren und nur die mittleren 6 nehmen:
Nimmt immer die 10 letzten Werte (gleitend), sortiert diese und lässt die Ausreißer weg.
So habe das eben noch ausprobiert. ....
Frage dazu:
Muss man die Werte nicht in einem Datenpunkt speichern ? Also Werte 1...2...3...4 ... weil ja jedes mal wenn Trigger für den Sensor ausgelöst wird eine "neue Instanz" ausgelöst wird und die Daten im einer Variable weg sind bzw neu gesetzt werden?und
Wie kann ich die Liste leeren, wenn ich den Mittelwert errechnet habe und von vorne anfangen möchte?
Und das ist derzeit das Ergebnis:

-
@michl75 sagte: Wie kann ich die Liste leeren, wenn ich den Mittelwert errechnet habe und von vorne anfangen möchte?
Du möchtest den Mittelwert nicht gleitend ermitteln, sondern wenn 10 Werte eingelesen wurden, von vorn beginnen?

In dem Fall braucht man die Listenwerte nicht in einem Datenpunkt speichern, denn sie bleiben bis zum nächsten Skriptstart erhalten.