Documentación Este ejemplo muestra cómo usar los filtros de media móvil y el remuestreo para aislar el efecto de componentes periódicos de la hora del día sobre las lecturas de temperatura por hora, así como eliminar el ruido de línea no deseado de una medida de voltaje en bucle abierto. El ejemplo también muestra cómo suavizar los niveles de una señal de reloj mientras se conservan los bordes usando un filtro mediano. El ejemplo también muestra cómo usar un filtro Hampel para eliminar grandes valores atípicos. Motivación El suavizado es cómo descubrimos patrones importantes en nuestros datos sin dejar de lado cosas que no son importantes (es decir, ruido). Utilizamos filtrado para realizar este suavizado. El objetivo de suavizar es producir cambios lentos en el valor de modo que sea más fácil ver tendencias en nuestros datos. A veces, cuando se examinan datos de entrada, es posible que desee suavizar los datos para ver una tendencia en la señal. En nuestro ejemplo tenemos un conjunto de lecturas de temperatura en Celsius tomadas cada hora en el Aeropuerto de Logan durante todo el mes de enero de 2011. Tenga en cuenta que podemos ver visualmente el efecto que tiene la hora del día sobre las lecturas de temperatura. Si sólo está interesado en la variación diaria de la temperatura durante el mes, las fluctuaciones horarias sólo contribuyen al ruido, lo que puede hacer que las variaciones diarias sean difíciles de discernir. Para eliminar el efecto de la hora del día, ahora queremos suavizar nuestros datos utilizando un filtro de media móvil. Un filtro de media móvil En su forma más simple, un filtro de media móvil de longitud N toma el promedio de cada N muestras consecutivas de la forma de onda. Para aplicar un filtro de media móvil a cada punto de datos, construimos nuestros coeficientes de nuestro filtro para que cada punto sea igualmente ponderado y aporte 1/24 a la media total. Esto nos da la temperatura promedio en cada período de 24 horas. Filter Delay Observe que la salida filtrada se retrasa aproximadamente doce horas. Esto se debe al hecho de que nuestro filtro de media móvil tiene un retraso. Cualquier filtro simétrico de longitud N tendrá un retardo de (N-1) / 2 muestras. Podemos dar cuenta de este retraso manualmente. Extracción de las diferencias promedio Alternativamente, también podemos usar el filtro del promedio móvil para obtener una mejor estimación de cómo el tiempo del día afecta la temperatura total. Para ello, primero, restar los datos suavizados de las mediciones de temperatura por hora. A continuación, segmentar los datos diferenciados en días y tomar el promedio durante los 31 días del mes. Extracción de la envolvente de pico A veces también nos gustaría tener una estimación que varía suavemente de cómo los altos y bajos de nuestra señal de temperatura cambian diariamente. Para ello, podemos usar la función de envolvente para conectar los máximos y mínimos extremos detectados en un subconjunto del período de 24 horas. En este ejemplo, aseguramos que haya al menos 16 horas entre cada extremo alto y extremo bajo. También podemos tener una idea de cómo los máximos y bajos son tendencia tomando el promedio entre los dos extremos. Filtros de Promedio Móvil Ponderado Otros tipos de filtros de media móvil no ponderan igualmente cada muestra. Otro filtro común sigue la expansión binomial de (1 / 2,1 / 2) n Este tipo de filtro se aproxima a una curva normal para valores grandes de n. Es útil para filtrar el ruido de alta frecuencia para n pequeños. Para encontrar los coeficientes para el filtro binomial, convolucione 1/2 1/2 con sí mismo y convierta iterativamente la salida con 1/2 1/2 un número prescrito de veces. En este ejemplo, utilice cinco iteraciones totales. Otro filtro algo similar al filtro de expansión gaussiano es el filtro de media móvil exponencial. Este tipo de filtro de promedio móvil ponderado es fácil de construir y no requiere un tamaño de ventana grande. Ajusta un filtro de media móvil ponderado exponencialmente por un parámetro alfa entre cero y uno. Un valor más alto de alfa tendrá menos suavizado. Amplíe las lecturas durante un día. Seleccione su paísMoving Average Filter (MA filter) Loading. El filtro de media móvil es un simple filtro FIR de paso bajo (respuesta de impulso finito) comúnmente utilizado para suavizar una matriz de datos / señal muestreados. Se toman M muestras de entrada a la vez y tomar el promedio de esas M-muestras y produce un solo punto de salida. Se trata de una simple LPF (Low Pass Filter) estructura que viene práctico para los científicos y los ingenieros para filtrar el componente ruidoso no deseado de los datos previstos. A medida que aumenta la longitud del filtro (el parámetro M) aumenta la suavidad de la salida, mientras que las transiciones bruscas en los datos se hacen cada vez más contundentes. Esto implica que este filtro tiene excelente respuesta en el dominio del tiempo pero una respuesta de frecuencia pobre. El filtro MA realiza tres funciones importantes: 1) toma M puntos de entrada, calcula el promedio de esos puntos M y produce un único punto de salida. 2) Debido al cálculo / cálculos involucrados. El filtro introduce una cantidad definida de retardo 3) El filtro actúa como un filtro de paso bajo (con una respuesta de dominio de frecuencia pobre y una buena respuesta de dominio de tiempo). Código Matlab: El siguiente código matlab simula la respuesta en el dominio del tiempo de un filtro M-point Moving Average y también traza la respuesta de frecuencia para varias longitudes de filtro. Respuesta de Dominio de Tiempo: En la primera trama, tenemos la entrada que va en el filtro de media móvil. La entrada es ruidosa y nuestro objetivo es reducir el ruido. La siguiente figura es la respuesta de salida de un filtro de media móvil de 3 puntos. Puede deducirse de la figura que el filtro de media móvil de 3 puntos no ha hecho mucho en filtrar el ruido. Aumentamos los grifos de filtro a 51 puntos y podemos ver que el ruido en la salida se ha reducido mucho, que se representa en la siguiente figura. Aumentamos los grifos más allá de 101 y 501 y podemos observar que aunque el ruido sea casi cero, las transiciones se atenuan drásticamente (observe la pendiente en cada lado de la señal y compárelas con la transición ideal de pared de ladrillo en Nuestra entrada). Respuesta de Frecuencia: A partir de la respuesta de frecuencia se puede afirmar que el roll-off es muy lento y la atenuación de banda de parada no es buena. Dada esta atenuación de banda de parada, claramente, el filtro de media móvil no puede separar una banda de frecuencias de otra. Como sabemos que un buen rendimiento en el dominio del tiempo da como resultado un rendimiento pobre en el dominio de la frecuencia, y viceversa. En resumen, el promedio móvil es un filtro de suavizado excepcionalmente bueno (la acción en el dominio del tiempo), pero un filtro de paso bajo excepcionalmente malo (la acción en el dominio de la frecuencia) Enlaces externos: Libros recomendados: Sidebar principal I tienen un rango de fechas Y una medición en cada una de esas fechas. Me gustaría calcular una media móvil exponencial para cada una de las fechas. Alguien sabe cómo hacer esto Im nuevo a python. No parece que los promedios están incorporados en la biblioteca estándar de python, lo que me parece un poco extraño. Tal vez no estoy buscando en el lugar correcto. Por lo tanto, dado el siguiente código, cómo podría calcular el promedio móvil ponderado de los puntos de IQ para las fechas de calendario (theres probablemente una mejor manera de estructurar los datos, cualquier consejo sería apreciado) preguntó Jan 28 09 at 18:01 My python is a Un poco oxidado (cualquier persona puede sentirse libre de editar este código para hacer correcciones, si he estropeado la sintaxis de alguna manera), pero aquí va. Esta función se mueve hacia atrás, desde el final de la lista hasta el principio, calculando la media móvil exponencial para cada valor, trabajando hacia atrás hasta que el coeficiente de peso para un elemento sea menor que la epsilon dada. Al final de la función, invierte los valores antes de devolver la lista (para que estén en el orden correcto para la persona que llama). (NOTA LATERAL: si estaba usando un lenguaje distinto de python, la Id crea primero una matriz vacía de tamaño completo y luego la relleno hacia atrás para que no tenga que invertirla al final, pero no creo que se pueda declarar Una gran matriz vacía en python. Y en las listas de python, añadiendo es mucho menos costoso que prepending, por lo que he construido la lista en orden inverso. Por favor, corrija si Im mal.) El argumento alfa es el factor de desintegración en cada iteración. Por ejemplo, si usó un alfa de 0.5, entonces el valor promedio móvil de hoy estaría compuesto de los siguientes valores ponderados: Por supuesto, si usted tiene una enorme variedad de valores, los valores de diez o quince días no van a contribuir mucho Promedio ponderado de hoy. El argumento epsilon le permite establecer un punto de corte, debajo del cual dejará de preocuparse por valores antiguos (ya que su contribución al valor de hoy será insignificante). Youd invocar la función algo como esto: No sé Python, pero para la parte de promediación, quiere decir un filtro de paso bajo exponencialmente decaimiento de la forma donde alfa dt / tau, dt el timestep de El filtro, tau la constante de tiempo del filtro (la variable-timestep forma de esto es como sigue, sólo el clip dt / tau para no ser más de 1,0) Si desea filtrar algo como una fecha, asegúrese de convertir a un Cantidad de punto flotante como de segundos desde el 1 de enero de 1970.
No comments:
Post a Comment