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 su lugar, se ve obligado a utilizar un par de líneas: Tengo que calcular un promedio móvil en 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), los cuales 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. Así que, 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 como Usted debe leer la documentación conv y cconv para más información si ya no ha. ¿Qué es el alisamiento y cómo puedo hacerlo Tengo una matriz en Matlab que es el espectro de magnitud de una señal de voz (la magnitud de 128 puntos de FFT ). Cómo puedo suavizar esto usando un promedio móvil De lo que entiendo, debo tomar un tamaño de la ventana de un cierto número de elementos, toma el promedio, y éste se convierte en el nuevo 1r elemento. A continuación, desplace la ventana hacia la derecha por un elemento, tome el promedio que se convierte en el segundo elemento, y así sucesivamente. ¿Es así como funciona? No estoy seguro de mí mismo ya que si lo hago, en mi resultado final tendré menos de 128 elementos. Entonces, ¿cómo funciona y cómo ayuda a suavizar los puntos de datos O hay alguna otra manera que puedo hacer suavizado de los datos solicitados Oct 15 12 a las 6:30 migrado de stackoverflow Oct 15 12 at 14:51 Esta pregunta vino de nuestro Para programadores profesionales y entusiastas. Para un espectro que probablemente desee promedio conjunto (en la dimensión del tiempo) espectro múltiple en lugar de un promedio de ejecución a lo largo del eje de frecuencia de un solo espectro ndash endolith Oct 16 12 a 1:04 endolith ambas son técnicas válidas. El promedio en el dominio de frecuencia (a veces llamado un Periodograma de Danielle) es el mismo que el de ventana en el dominio de tiempo. El promedio de los periodogramas múltiples (quotspectraquot) es un intento de imitar el promedio del conjunto requerido del Periodograma verdadero (esto se llama Periodograma Welch). Además, como cuestión de semántica, yo diría que quotsmoothingquot es el filtrado de paso bajo no causal. Véase Kalman filtración vs Kalman suavizado, Wiener filtrado v Wiener suavizado, etc Hay una distinción no trivial y depende de la aplicación. El alisado se puede hacer de muchas maneras, pero en términos muy básicos y generales significa que incluso una señal, mezclando sus elementos con sus vecinos. Usted mancha / desdibujar la señal un poco con el fin de deshacerse del ruido. Por ejemplo, una técnica de suavizado muy simple sería recalcular cada elemento de señal f (t) a 0.8 del valor original, más 0.1 de cada uno de sus vecinos: Observe cómo los factores de multiplicación, o pesos, se suman a uno. Así que si la señal es bastante constante, suavizado no cambia mucho. Pero si la señal contenía un repentino cambio brusco, entonces la contribución de sus vecinos ayudará a aclarar ese ruido un poco. Los pesos que utilice en esta función de recálculo se pueden denominar kernel. Una función Gaussiana unidimensional o cualquier otro kernel básico debe hacer en su caso. Buen ejemplo de un tipo particular de suavizado: Arriba: señal sin pulir Abajo: señal suavizada Ejemplos de algunos núcleos: Además de la agradable respuesta de Junuxx me gustaría dejar unas cuantas notas. El suavizado está relacionado con el filtrado (por desgracia bastante vago artículo de Wikipedia) - debe elegir el más suave en función de sus propiedades. Uno de mis favoritos es el filtro mediano. Este es un ejemplo de un filtro no lineal. Tiene algunas propiedades interesantes, conserva bordes y es bastante robusto bajo ruido grande. Si usted tiene un modelo de cómo su señal se comporta un filtro de Kalman vale la pena mirar. Su suavizado es en realidad una estimación bayesiana de máxima verosimilitud de la señal basada en observaciones. Respondió Oct 15 12 at 11:07 1 para mencionar el kalman filtro ndash Diego 13/12 a las 18:48 Suavizado implica el uso de información de muestras vecinas con el fin de cambiar la relación entre muestras vecinas. Para vectores finitos, en los extremos, no hay información vecina a un lado. Sus opciones son: no suavizar / filtrar los extremos, aceptar un vector suavizado resultante más corto, componer datos y suavizar con eso (depende de la precisión / utilidad de cualquier predicción de los extremos), o tal vez utilizando diferentes núcleos de suavizado asimétrico en los extremos (Que termina acortando el contenido de la información en la señal de todos modos). Respondió Oct 15 12 at 19:44 Otros han mencionado cómo hacer suavizado, Id me gustaría mencionar por qué funciona el alisado. Si superamuestra correctamente su señal, variará relativamente poco de una muestra a la siguiente (puntos de tiempo de muestra, píxeles, etc.), y se espera que tenga una apariencia suave general. En otras palabras, su señal contiene pocas frecuencias altas, es decir, componentes de señal que varían a una velocidad similar a su frecuencia de muestreo. Sin embargo, las mediciones son a menudo corrompidas por el ruido. En una primera aproximación, usualmente consideramos que el ruido sigue una distribución gaussiana con media cero y una desviación estándar determinada que se añade simplemente encima de la señal. Para reducir el ruido en nuestra señal, comúnmente hacemos los siguientes cuatro supuestos: el ruido es aleatorio, no está correlacionado entre muestras, tiene una media de cero y la señal está suficientemente sobremuestreada. Con estas suposiciones, podemos usar un filtro de promedio deslizante. Considérese, por ejemplo, tres muestras consecutivas. Puesto que la señal está altamente sobremuestreada, la señal subyacente se puede considerar que cambia linealmente, lo que significa que el promedio de la señal a través de las tres muestras sería igual a la señal verdadera en la muestra central. En contraste, el ruido tiene un cero medio y no está correlacionado, lo que significa que su promedio debe tender a cero. Por lo tanto, podemos aplicar un filtro de media de deslizamiento de tres muestras, en el que reemplazar cada muestra con el promedio entre sí y sus dos vecinos adyacentes. Por supuesto, cuanto más grande hacemos la ventana, más ruido promediaremos a cero, pero menos nuestra suposición de linealidad de la señal verdadera se mantiene. Por lo tanto, tenemos que hacer un trade-off. Una manera de intentar sacar lo mejor de ambos mundos es usar un promedio ponderado, donde le daremos a las muestras más alejadas pesos más pequeños, de modo que los efectos de ruido promedio de los rangos más grandes, mientras que no pondera la señal verdadera demasiado donde se desvía de nuestra linealidad suposición. La forma de poner los pesos depende del ruido, la señal y la eficiencia computacional, y, por supuesto, el equilibrio entre eliminar el ruido y cortar la señal. Tenga en cuenta que en los últimos años se ha trabajado mucho para relajar algunos de los cuatro supuestos, por ejemplo, diseñando esquemas de suavizado con ventanas de filtro variable (difusión anisotrópica) o esquemas que realmente no usan ventanas (Medios no locales). Respondió Dec 27 12 at 15:10
No comments:
Post a Comment