Einen Mittelwert erhält man nicht, indem man einen Wert mehrmals im Zyklus speichert, sondern man muß in mehreren Zyklen den Wert in einen Puffer speichern. Der Puffer muß so groß sein über wieviele Zyklen man den Mittelwert bilden will.Jetzt wollte ich, um den Wert konstanter zu machen, den Mittelwert bilden. (...) Ich brauche ja eine Art "Data Buffer" (z.B. ein INT Array) um mehrere Analogwerte in einem Zyklus zu speichern
buff : ARRAY[0..9] OF REAL; //Ringpuffer für 10 Werte
buffindex : UINT; // Ringpuffer Füllzeiger
i : UINT;
sum : REAL;
avg : REAL; // Mittelwert
//neuen Wert in Ringpuffer schreiben, ältester Wert verschwindet dabei (wird überschrieben)
buffindex := (buffindex + 1) MOD 10; // Ringpuffer-Füllzeiger auf das nächste Element setzen
buff[buffindex] := New_value; // aktuellen Wert in Ringpuffer schreiben
//Mittelwert über Pufferwerte berechnen
sum := 0.0;
FOR i := 0 TO 9 DO
sum := sum + buff[i];
END_FOR;
avg := sum / 10.0;
Das darfst Du doch selbst entscheiden, ob Du z.B.Ich muss der Steuerung ja auch irgendwie sagen, dass Sie nach 10 Zyklen den Mittelwert bilden soll oder?
Wenn Du allerdings nach der Methode "neuer_Mittelwert := (n * letzter_Mittelwert + neuer_Wert)/(n+1)" mittelst, stellt sich Deine Frage eigentlich gar nicht!?
Korrekt! Das ist eine "Glättung mit sparsamen Mitteln", ohne Array, ohne FIFO. Für viele Zwecke gut geeignet, aber kein Mittelwert über eine gegebene Anzahl von Messungen.Dieser Code ist leider kein korrekter gleitender Mittelwert. Eher entspricht dies einem Tiefpass.
i := (i+1) mod n ; // n: Anzahl der zu mittelnden Werte; i: Index 0..(n-1)
WertZuvor := Wert[i] ;
Wert[i] := WertAktuell ;
Summe := Summe - WertZuvor + WertAktuell ;
MittelWert := Summe / n ;
Formel für die Berechnung des Eingangswerts: Wert neu = Wert alt - Wert alt/Filterstufe + Eingangswert/Filterstufe
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?