Ecco un'altra risposta che offre commenti su come Muis , Abdullah Al-Ageel e la risposta di Flip siano matematicamente la stessa cosa tranne che scritte in modo diverso.
Certo, abbiamo José Manuel Ramos analisi di che spiega come gli errori di arrotondamento influiscano su ciascuno in modo leggermente diverso, ma dipende dall'implementazione e cambierebbe in base a come ogni risposta è stata applicata al codice.
C'è tuttavia una differenza piuttosto grande
È in Muis 's N
, Flip 's k
e Abdullah Al-Ageel 's n
. Abdullah Al-Ageel non spiega esattamente cosa n
dovrebbe essere, ma N
ek
differisce in questo N
è " il numero di campioni su cui si desidera fare la media " mentre k
è il conteggio dei valori campionati. (Anche se ho dubbi sul fatto che chiamare N
il numero di campioni sia accurata.)
E qui arriviamo alla risposta di seguito. È essenzialmente la stessa vecchia media mobile ponderata esponenziale degli altri, quindi se stavi cercando un'alternativa, fermati qui.
Media mobile ponderata esponenziale
inizialmente:
average = 0
counter = 0
Per ogni valore:
counter += 1
average = average + (value - average) / min(counter, FACTOR)
La differenza è il file min(counter, FACTOR)
parte. Questo è come dire min(Flip's k, Muis's N)
.
FACTOR
è una costante che influisce sulla velocità con cui la media "raggiunge" l'ultima tendenza. Più piccolo è il numero, più velocemente. (A1
Non è più una media e diventa solo l'ultimo valore.)
Questa risposta richiede il contatore in esecuzione counter
. Se problematico, min(counter, FACTOR)
può essere sostituito con solo FACTOR
, trasformandolo nella risposta di Muis . Il problema con questa operazione è che la media mobile è influenzata da qualsiasi cosaaverage
venga inizializzata. Se è stato inizializzato su 0
, quello zero può impiegare molto tempo per uscire dalla media.
Come va a finire