In einer darauf folgenden Berechnung sollen nun Werte für einen weiteren Integer entstehen (gelbe Linie), der sich am „Sägezahninteger“ orientieren und so etwas wie Durchschnittswerte dessen abbilden soll.
Wie würdet ihr die gelb dargestellten Werte für diesen zweiten Integer auf Basis des Sägezahnintegers erzeugen?
Chris72622:
In einer darauf folgenden Berechnung sollen nun Werte für einen weiteren Integer entstehen (gelbe Linie), der sich am „Sägezahninteger“ orientieren und so etwas wie Durchschnittswerte dessen abbilden soll.
Ich habe keine Ahnung, was für ein Mittelwert das sein soll. Mittelwerte werden üblicherweise über ganze Sägezahnperioden gebildet und die Formeln dafür stehen auf Wechselstromlehre unter !Beispiel Sägezahnspannung.
Dort findest Du eine Formel für den "zeitlichen Mittelwert", und eine Formel für den "Effektivwert".
der sich am „Sägezahninteger" orientieren und so etwas wie Durchschnittswerte dessen abbilden soll.
Das was ich mir mit all meiner Phantasie darunter vorstellen kann, hat leider nichts mit der gelben Linie zu tun. Wie die mit den grauen Sägezähnen zusammenhängen könnte, kann ich mir nicht vorstellen.
Die Sägezähne haben alle eine gleiche konstante Steigung. Ist das falsch geraten?
Woher kommt der unregelmäßige Verlauf der gelben Linie?
Was soll das Ganze? Vielleicht hilft das beim Verständnis ...
solche interpolierten Kurvenformen oder wie das heißt, kenn ich nur aus Excel, die dann irgendwelche gleitende Werte darstellen können. Wie die das berechnen weis ich allerdings auch nicht. Vielleicht hilft eine Suche nach Gleitwertberechnung oder so.
Ich versuche mal einen ebenso kreativen Lösungsvorschlag, da ich davon ausgehe, dass es bei dir nicht darum geht, etwas exakt zu berechnen.
Sieh die Y-Position der gelben Linie als die Höhe eines Balls über der Erde.
Auf den Ball wirkt die Erdanziehung als Beschleunigung nach unten.
Der Wert des Sägezahnintegers ist eine Beschleunigung von unten nach oben. z.B. ein Gebläse
An dem Faktor für die Beschleunigung, bzw. für die Erdanziehung kannst du dann rumspielen und einfach ausprobieren, wie sich die Kurve dann verhält.
Ich bin aber auch wirklich gespannt was du da vorhast!
EDIT:
Wenn du die Aufwärtsbeschleunigung auch noch "träge" machst, wird es so sein, dass nach der 3er-Kombi die Kurve waagrechter austritt, als nach einem einzelnen Ereignis (wie im Bild).
Und die Aufwärtsbeschleunigung könnte der Unterschied von Y-Pos zum Wert des Sägezahnintegers sein, dann geht die Linie schnell hoch, schnellt aber nicht ganz nach oben.
Am einfachsten ist hier - wie DOC schon erwähnt hat - ein gleitender Mittelwert.
Den programmiert man am einfachsten, indem man ein Array definiert, das in einer Schleife ständig überschrieben wird.
Der Zeitintervall der Abfrage und die Größe des Arrays bestimmen die trägheit des gleitenden Mittelwertes.
Clever ist es, die Größe des Arrays so zu wählen, dass es mindestens 3 der längsten Sägezähne umfasst.
Hier mal ne Skizze für einen gleitenden Mittelwert über eine Minute mit einer Auflösung von einer Sekunde:
int arrayGröße = 60;
float dataArray[arrayGröße];
float average;
int sum;
void loop {
for(int i = 0; i < arrayGröße; i++) {
dataArray[i] = getYourData();
sum = 0;
for (int j = 0; j< arrayGröße; i++) {
sum = sum + dataArray[j];
}
average = sum / arrayGröße;
serial.print("aktueller Mittelwert: ");
serial.println(average);
delay(1000);
}
Die erste Minute wird da zwar nur Unsinn rauskommen aber das liegt in der Natur der Sache.
Hallo,
reine Spekulation:
Die gelbe Linie ist das Integral aus der grauen Fläche.
Wenn du den Momentanwert der grauen Fläche als Integer hast, kannst du den Wert auf den Eingang eines Integrators schalten. Der Ausgang des Integrators liefert dann die gelbe Linie.
Ich weiß nicht ob es eine Library gibt die auf dem Arduino einen Integrator bereit stellt.
Ich würde es deshalb mal mit dem PID-Regler versuchen und den P und D Anteil auf null stellen. Übrig bleibt dann der reine I-Anteil.
Also mir hauts hier echt regelmäßig den Zeiger raus, wenn ich mir angucke was da alles an verwertbarem Input rauskommt, wenn man in diesem Superforum einen Thread startet- echt der abolute Wahnsinn!