esencialmente que tienen una matriz de valores de esta manera:media móvil exponencial de 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 matriz anterior se simplifica, estoy recogiendo 1 Valor por milisegundo en mi código real y necesito para 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úmero 0.25
como el pico, ya que hay una disminución de 0.24
antes.
El objetivo es tomar estos valores y aplicar un algoritmo a los que va a "suave" hacia fuera un poco, así que tengo los valores más lineales. (Es decir: Me gustaría que mis resultados sean curvas, no jaggedy)
Me han dicho que para aplicar un filtro de media móvil exponencial de mis valores. ¿Cómo puedo hacer esto? Es realmente difícil para mí leer ecuaciones matemáticas, me ocupo mucho mejor del código.
¿Cómo proceso los valores en mi matriz, aplicando un cálculo de la media móvil exponencial para igualar a cabo?
float[] mydata = ...
mySmoothedData = exponentialMovingAverage(mydata, 0.5);
float[] exponentialMovingAverage(float[] input, float alpha) {
// what do I do here?
return result;
}
De hecho, la EMA es la _easiest_ promedio de código (siempre que tenga un lugar para almacenar el estado de estado como un movimiento de Java objeto) porque no necesita hacer una administración de estado compleja. –
Así que esencialmente solo 'para (flotar amigo: entrada) {salida [índice] = ema.average (amigo); } '? –
@TKKocheran: Bastante. ¿No es agradable cuando las cosas pueden ser simples? (Si comienza con una nueva secuencia, obtenga un nuevo promediador). Tenga en cuenta que los primeros términos de la secuencia promediada saltan un poco debido a los efectos de frontera, pero también los obtiene con otros promedios móviles. Sin embargo, una buena ventaja es que puede ajustar la lógica del promedio móvil en el promediador y experimentar sin perturbar demasiado el resto del programa. –