Logo del sito i2viu

MEDIA TRA NUMERI
© by Vittorio Crapella - i2viu

 
 
Utile nella programmazione con Microcontrollori o linguaggi per PC.
 
A scuola ci hanno insegnato che la media deriva dalla somma di tutti i valori diviso per il numero dei valori.
Questo metodo comporta il dover memorizzare tutti i valori, sommarli, contarli e poi
 
Media = (N1 + N2 + ... +Nx) / x
 
Questo per certe applicazioni comporta spreco di memoria soprattutto con i micro. Esiste il metodo, che vado ad illustrare, che tiene solo il numero delle letture effettuate e il valore della media Istantanea così in ogni momento la media istantanea è pure la media finale fin li ottenuta senza dover fare altri calcoli di somme e divisione.
 
In pratica supponiamo ad esempio di leggere valori con ADC di un micro e di volere poi la media delle letture effettuate.
 
La prima lettura N1 è anche la media M
Dopo la seconda lettura N2, la media si ottiene con M1=(N2-M)/2 + M
Butto N1 e N2 non servono più e poi metto M1 in M e butto anche M1 e ricordo il numero di letture fatte =2
Dopo la terza lettura N3, la terza media si ottiene con M1=(N3-M)/3 + M
Butto N3 che non serve più e poi metto M1 in M e butto anche M1 e ricordo  il numero di letture fatte = 3
occupo solo due byte e continuo:
 
Mx = [Nx – M] / X + M
 
Esempio numerico:
Prima lettura N1= 89 = M
Seconda lettura N2=32 M1=(N2-M)/2+M=(32-89)/2+89= -28,5+89=60,5
Tengo solo M=M1 = 60,5
Terza lettura N3 = 45 M1=(N3-M)/3+M = (45-60,5)/3+60,5 = 55,3
Tengo solo M=M1 = 55,3
Quarta lettura N4 = 71 M1=(N4-M)/4+M = (71-55,3)/4+55,3 = 59,3
Tengo solo M=M1 = 59,3
Quinta lettura N5 = 26 M1=(N5-M)/5+M = (26-59,3)/5+59,3 = 52,6
Tengo solo M=M1  = 52,6
Sesta lettura N6 = 53 M1=(N6-M)/6+M = (53-52,6)/6+52,6 = 52,6
Tengo solo M=M1  = 52,6
Settima lettura N7 = 68 M1=(N7-M)/7+M = (68-52,6)/7+52,6 = 54,8
 
Media =M1 = 54,8
 
Con il metodo tradizionale sarebbe stata:
 
Media = (89 + 32 + 45 + 71 + 26 + 53 + 68) / 7 = 384/7 = 54,8

Guido Pegna docente di Fisica all'università di Cagliari mi ha scritto:

"...Mi viene da fare una sola osservazione; una elementare elaborazione della formula generale porta a:

Mx = [ Nx + (x-1)M]/x

che mi sembra possa essere programmata ugualmente bene...."    Guido Pegna su Facebook
 

Disclaimer     INDEX             Torna indietro