Cómo Calcular El Promedio Móvil Simple En Matlab
Utilizando MATLAB, ¿cómo puedo encontrar el promedio móvil de 3 días de una columna específica de una matriz y añadir el promedio móvil a esa matriz? Estoy tratando de calcular el promedio móvil de 3 días de abajo hacia arriba de la matriz. He proporcionado mi código: Dada la siguiente matriz a y máscara: He intentado implementar el comando conv pero estoy recibiendo un error. Aquí está el comando conv que he estado tratando de usar en la segunda columna de la matriz a: La salida que deseo se da en la siguiente matriz: Si usted tiene alguna sugerencia, lo agradecería mucho. Gracias Por la columna 2 de la matriz a, estoy calculando el promedio móvil de 3 días de la siguiente manera y colocando el resultado en la columna 4 de la matriz a (I renombrado matriz a como 39desiredOutput39 sólo por ilustración). El promedio de 3 días de 17, 14, 11 es 14 el promedio de 3 días de 14, 11, 8 es 11 el promedio de 3 días de 11, 8, 5 es 8 y el promedio de 3 días de 8, 5, 2 es 5. No hay valor en las 2 filas inferiores para la cuarta columna porque el cálculo para la media móvil de 3 días comienza en la parte inferior. La salida 39valid39 no se mostrará hasta al menos 17, 14 y 11. Esperamos que esto tiene sentido ndash Aaron Jun 12 13 at 1:28 1 Respuesta En general, sería de ayuda si se muestra el error. En este caso usted está haciendo dos cosas mal: Primero su convolución necesita ser dividido por tres (o la longitud de la media móvil) Segundo, observe el tamaño de c. Usted no puede apenas caber c en a. La forma típica de obtener un promedio móvil sería usar lo mismo: pero eso no se parece a lo que quieres. En cambio, se ven obligados a utilizar un par de líneas: Ive tiene un vector y quiero calcular el promedio móvil de la misma (utilizando una ventana de 5 de ancho). Por ejemplo, si el vector en cuestión es 1,2,3,4,5,6,7,8. Entonces la primera entrada del vector resultante debe ser la suma de todas las entradas en 1,2,3,4,5 (es decir, 15) la segunda entrada del vector resultante debe ser la suma de todas las entradas en 2,3,4, 5,6 (es decir, 20) etc. Al final, el vector resultante debe ser 15,20,25,30. ¿Cómo puedo hacerlo? La función conv está justo en tu callejón: Benchmark Tres respuestas, tres métodos diferentes. Aquí hay un punto de referencia rápido (diferentes tamaños de entrada, anchura de ventana fija de 5) usando timeit sentirse libre de meter agujeros en ella (en los comentarios) si usted piensa que necesita ser refinado. Conv surge como el enfoque más rápido su cerca de dos veces más rápido que las monedas acercarse (utilizando filtro). Y cerca de cuatro veces más rápido que el de Luis Mendos (usando cumsum). Aquí hay otro punto de referencia (tamaño de entrada fijo de 1 a 4. diferentes anchos de ventana). Aquí, Luis Mendos enfoque cumsum surge como el ganador claro, porque su complejidad se rige principalmente por la longitud de la entrada y es insensible a la anchura de la ventana. Conclusión Para resumir, debe usar el método conv si su ventana es relativamente pequeña, use el enfoque cumsum si su ventana es relativamente grande. ¿Cuál es el promedio móvil y para qué sirve? ¿Cómo se realiza el promedio móvil usando la convolución? El promedio móvil es una operación sencilla que se utiliza generalmente para suprimir el ruido de una señal: se establece el valor De cada punto a la media de los valores en su vecindario. Por una fórmula: Aquí x es la entrada yy es la señal de salida, mientras que el tamaño de la ventana es w, se supone que es impar. La fórmula anterior describe una operación simétrica: las muestras se toman de ambos lados del punto real. A continuación se muestra un ejemplo de la vida real. El punto en el que se coloca la ventana es en realidad rojo. Valores fuera de x se supone que son ceros: Para jugar y ver los efectos de la media móvil, echar un vistazo a esta demostración interactiva. Cómo hacerlo por convolución Como puede haber reconocido, calcular el promedio móvil simple es similar a la convolución: en ambos casos se desliza una ventana a lo largo de la señal y se resumen los elementos de la ventana. Por lo tanto, darle un intento de hacer lo mismo mediante la convolución. Utilice los siguientes parámetros: La salida deseada es: Como primera aproximación, intentemos lo que obtenemos convolucionando la señal x con el k kernel siguiente: La salida es exactamente tres veces mayor que la esperada. También puede verse que los valores de salida son el resumen de los tres elementos de la ventana. Es porque durante la convolución la ventana se desliza a lo largo, todos los elementos en él se multiplican por uno y luego se resumen: yk 1 cdot x 1 cdot x 1 cdot x Para obtener los valores deseados de y. La salida será dividida por 3: Por una fórmula que incluye la división: Pero no sería óptimo hacer la división durante la convolución Aquí viene la idea reorganizando la ecuación: Así que usaremos el k kernel siguiente: De esta manera vamos a Obtener la salida deseada: En general: si queremos hacer el promedio móvil por convolución teniendo un tamaño de ventana de w. Utilizaremos el siguiente núcleo k: Una función simple que realiza el promedio móvil es: Un ejemplo de uso es:
Comments
Post a Comment