I essenzialmente hanno una matrice di valori simili:Implementazione media mobile esponenziale in Java
0.25, 0.24, 0.27, 0.26, 0.29, 0.34, 0.32, 0.36, 0.32, 0.28, 0.25, 0.24, 0.25
La matrice di cui sopra è semplificato eccessivamente, sto raccogliendo 1 valore per millisecondo nel mio codice vero e devo elaborare la uscita su un algoritmo che ho scritto per trovare il picco più vicino prima di un punto nel tempo. La mia logica non riesce perché nel mio esempio sopra, il picco reale è 0.36
, ma il mio algoritmo guarderebbe indietro e vedrà l'ultimo numero 0.25
come il picco, poiché c'è una diminuzione a prima di esso.
L'obiettivo è di prendere questi valori e applicare un algoritmo a loro che li "li uniformi" un po 'in modo da avere più valori lineari. (es .: vorrei che i miei risultati fossero sinuosi, non frastagliati)
Mi è stato detto di applicare un filtro esponenziale a media mobile ai miei valori. Come posso fare questo? È davvero difficile per me leggere equazioni matematiche, mi occupo molto meglio del codice.
Come si elaborano i valori nel mio array, applicando un calcolo della media mobile esponenziale per eliminarli?
float[] mydata = ...
mySmoothedData = exponentialMovingAverage(mydata, 0.5);
float[] exponentialMovingAverage(float[] input, float alpha) {
// what do I do here?
return result;
}
Infatti, l'EMA è la _easiest_ media in codice (a patto di avere un posto per memorizzare lo stato dello stato come un Java in movimento oggetto) perché non è necessario eseguire una gestione dello stato complessa. –
Quindi in sostanza sono semplicemente 'for (float dude: input) {output [index] = ema.average (dude); } '? –
@TKKocheran: praticamente. Non è bello quando le cose possono essere semplici? (Se si inizia con una nuova sequenza, ottenere un nuovo media.) Si noti che i primi termini della sequenza media salteranno un po 'a causa degli effetti di confine, ma si otterranno anche quelli con altre medie mobili. Tuttavia, un buon vantaggio è che puoi avvolgere la media mobile della media nel mediatore e sperimentare senza disturbare troppo il resto del tuo programma. –