Implémentation de la moyenne mobile exponentielle en Java

J'ai essentiellement un tableau de valeurs comme ceci:

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

Le tableau ci-dessus est simplifiée à l'extrême, je suis la collecte de 1 valeur par milliseconde dans mon code et j'ai besoin de traiter la sortie sur un algorithme que j'ai écrit pour trouver la plus proche de pointe avant un point dans le temps. Ma logique échoue parce que dans mon exemple ci-dessus, 0.36 est le pic réel, mais mon algorithme regarder en arrière et voir le tout dernier numéro de 0.25 comme le pic, comme il y a une diminution de 0.24 avant.

L'objectif est de prendre ces valeurs et d'appliquer un algorithme qui va "lisser" un peu de sorte que j'ai plus de valeurs linéaires. (c'est à dire: je voudrais que mes résultats sinueuse, pas jaggedy)

J'ai dit à appliquer une moyenne mobile exponentielle de filtre à mes valeurs. Comment puis-je faire cela? C'est vraiment dur pour moi de lire des équations mathématiques, je m'occupe beaucoup mieux avec code.

Comment puis-je traiter des valeurs dans mon tableau, l'application d'une moyenne mobile exponentielle de calcul à même de les sortir de là?

float[] mydata = ...
mySmoothedData = exponentialMovingAverage(mydata, 0.5);

float[] exponentialMovingAverage(float[] input, float alpha) {
    //what do I do here?
    return result;
}

source d'informationauteur Naftuli Kay