Monday 20 November 2017

Promedio Móvil Ponderado Del Código Matlab


Necesito calcular una media móvil sobre una serie de datos, dentro de un bucle for. Tengo que obtener el promedio móvil en N9 días. El array Im computing in es 4 series de 365 valores (M), que en sí mismos son valores medios de otro conjunto de datos. Quiero trazar los valores medios de mis datos con el promedio móvil en una parcela. Busqué un poco sobre los promedios móviles y el comando conv y encontré algo que intenté implementar en mi código. Por lo tanto, básicamente, calculo mi media y lo trace con una media móvil (errónea). Escogí el valor de wts justo en el sitio de mathworks, por lo que es incorrecto. (Fuente: mathworks. nl/help/econ/moving-average-trend-estimation. html) Mi problema, sin embargo, es que no entiendo lo que este wts es. ¿Podría alguien explicar Si tiene algo que ver con los pesos de los valores: que no es válido en este caso. Todos los valores se ponderan igual. Y si estoy haciendo esto totalmente mal, podría obtener alguna ayuda con ella Mis más sinceras gracias. El uso de conv es una excelente manera de implementar un promedio móvil. En el código que está usando, wts es cuánto está pesando cada valor (como usted adivinó). La suma de ese vector siempre debe ser igual a uno. Si desea ponderar cada valor uniformemente y hacer un filtro N de tamaño N, entonces lo haría. Usar el argumento válido en conv resultará en tener menos valores en Ms que en M. Utilice lo mismo si no le importan los efectos de Relleno cero. Si tiene la caja de herramientas de procesamiento de señales, puede usar cconv si desea probar una media móvil circular. Algo así como usted debe leer la documentación conv y cconv para obtener más información si ya no lo ha hecho. Puede utilizar filtro para encontrar un promedio de ejecución sin utilizar un bucle for. Este ejemplo encuentra el promedio de ejecución de un vector de 16 elementos, usando un tamaño de ventana de 5. 2) suave como parte de la caja de herramientas de ajuste de curvas (que está disponible en la mayoría de los casos) yy suave (y) suaviza los datos en el vector de columna Y utilizando un filtro de media móvil. Los resultados se devuelven en el vector de columna yy. El intervalo por defecto para el promedio móvil es 5.I tiene una matriz de datos de series de tiempo para 8 variables con aproximadamente 2500 puntos (10 años de lunes a viernes) y desea calcular la media, la varianza, la asimetría y la curtosis en una media móvil base. Digamos cuadros 100 252 504 756 - Quisiera calcular las cuatro funciones arriba sobre sobre cada uno de los (tiempo-) cuadros, sobre una base diaria - así que la vuelta para el día 300 en el caso con el 100 marco del día, sería media Kurtosis de desviación de desviación del período day201-day300 (100 días en total). y así. Sé que esto significa que obtendría una salida de matriz, y el número de la primera trama de días sería NaNs, pero no puedo encontrar la indexación necesaria para hacer esto. Esta es una pregunta interesante porque creo que la solución óptima es diferente para la media que para las otras estadísticas de la muestra. He proporcionado un ejemplo de simulación a continuación que puede trabajar a través de. Primero, elija algunos parámetros arbitrarios y simule algunos datos: Para la media, use el filtro para obtener un promedio móvil: Originalmente pensé resolver este problema usando conv como sigue: Pero como PhilGoddard señaló en los comentarios, el enfoque de filtro evita la Necesidad del bucle. También tenga en cuenta que Ive elegido para hacer las fechas en la matriz de salida corresponden a las fechas en X para que en el trabajo posterior se puede utilizar los mismos subíndices para ambos. Así, las primeras observaciones de WindowLength-1 en MeanMA serán nan. Para la varianza, no puedo ver cómo utilizar filtro o conv o incluso una suma de ejecución para hacer las cosas más eficientes, por lo que en su lugar realizar el cálculo manualmente en cada iteración: Podemos acelerar ligeramente las cosas mediante la explotación del hecho de que ya hemos Calculó la media móvil media. Simplemente reemplace la línea de bucle dentro de lo anterior con: Sin embargo, dudo que esto haga mucha diferencia. Si alguien más puede ver una manera inteligente de usar filtro o conv para obtener la variación de la ventana móvil Id estar muy interesado en verlo. Dejo el caso de skewness y kurtosis al OP, ya que son esencialmente igual que el ejemplo de la varianza, pero con la función apropiada. Un último punto: si estuviera convirtiendo lo anterior en una función general, podría pasar una función anónima como uno de los argumentos, entonces tendría una rutina de promedio móvil que funciona para la elección arbitraria de las transformaciones. Final, punto final: Para una secuencia de longitudes de ventana, simplemente haga un bucle sobre el bloque de código completo para cada longitud de ventana. Sí, la función de filtro es realmente mejor para la media - pero yo quería hacer esto para varias funciones diferentes, no sólo la media. Acabo de publicar mi respuesta porque funcionó para mí y pensé que podría ayudar a alguien más. Ndash Dexter Morgan Apr 15 14 at 12: 40Documentación Este ejemplo muestra cómo usar filtros de media móvil y 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 un circuito abierto Medición de voltaje. 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. Selecciona tu pais

No comments:

Post a Comment