Implementar la media móvil exponencial en Java

Esencialmente tengo una serie de valores como este:

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 matriz anterior está demasiado simplificada, estoy recopilando 1 valor por milisegundo en mi código real y necesito procesar la salida en un algoritmo que escribí para encontrar el pico más cercano antes de un punto en el tiempo. Mi lógica falla porque en mi ejemplo anterior,0.36 es el pico real, pero mi algoritmo miraría hacia atrás y vería el último número0.25 como el pico, ya que hay una disminución de0.24 antes de eso

El objetivo es tomar estos valores y aplicarles un algoritmo que los "suavizará" un poco para que tenga más valores lineales. (es decir: me gustaría que mis resultados sean curvos, no irregulares)

Me han dicho que aplique un filtro de media móvil exponencial a mis valores. ¿Cómo puedo hacer esto? Para mí es muy difícil leer ecuaciones matemáticas, trato mucho mejor con el código.

¿Cómo proceso valores en mi matriz, aplicando un cálculo de promedio móvil exponencial para igualarlos?

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

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

Respuestas a la pregunta(12)

Su respuesta a la pregunta