Az osszeget es a darabszamot nyilvantartod. Ha uj szam jon, az osszeget noveled vele, a darabszamot inkrementalod, es az uj atlag a ketto hanyadosa (osszeg/darabszam). Arra persze figyelni kell, hogy az osszeget eleg nagy szamkent abrazoljuk.
Amugy ha ilyesmi feladat van, altalaban ablakos csuszoatlag kell nekem, es egy sima alulatereszto szurovel szoktam megoldani. Az uj ertek az elozo ertek es az uj szam valamilyen sulyozott szamtani kozepe. (pl. potmetert teker a felhasznalo, de zajos a jel) Igy eleg az aktualis erteket szamontartani.
import math
#based on code and maths from here: https://en.wikipedia.org/wiki/Low-pass_filter
def get_alpha(sampling_freq,filter_freq):
"""Calculates an alpha value for a low pass filter.
sampling_freq and filter_freq are given in Hz
"""
delta_t=1.0/sampling_freq
temp=2.0*math.pi*delta_t*filter_freq
alpha=temp/(temp+1)
return alpha
def get_filter_freq(sampling_freq,alpha):
return (sampling_freq*alpha)/(2*math.pi*(1-alpha))
def low_pass_filter(alpha,value,prev_value):
return alpha*value+(1-alpha)*prev_value