Wednesday 15 November 2017

Moviendo Un Matlab Medio Más Suave


¿Qué es el suavizado 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, cambie la ventana a la derecha por un elemento, tome media que se convierte en el elemento 2, 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 Sitio 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 la frecuencia (a veces llamado Periodograma de Danielle) es el mismo que el de ventana en el dominio del 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. Ver Kalman filtración vs Kalman suavizado, Wiener filtración 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 buena 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, sin ponderar la verdadera señal demasiado donde se desvíe 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). Respondida Dec 27 12 at 15: 1029 September, 2013 Media móvil por convolución ¿Qué es media móvil y para qué sirve? ¿Cómo se realiza el promedio móvil usando convolución? La media móvil es una operación sencilla utilizada generalmente para suprimir el ruido de una señal: 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 hace el promedio móvil es: Un ejemplo de uso es: La información, el código y los datos de esta página son para apoyar un artículo de The Black Art of Smoothing publicado en Electrical amp Automation Technology. Por David I. Wilson. El código presentado en esta página incluye algoritmos para: Filtros de Savitzky-Golay Filtros de Savitky-Golay Filtros Hodrick-Prescott en los entornos de desarrollo Matlab y Scicos. En ambos casos, no se requieren cajas de herramientas especiales. Matlab es un producto comercial, pero Scilab es un equivalente freeware. Nota: El código aquí se presenta cuotas isquot sin garantía expresa o implícita. Si está interesado en probar estas operaciones de suavizado en sus propios datos, haga lo siguiente: Si tiene Matlab (un producto comercial), descargue y descomprima los archivos de suavizado de Matlab. Ejecute el archivo de script smootherdemo. m. Usted debe ver parcelas algo como esto que es similar a las cifras en el artículo publicado. Si desea utilizar sus propios datos, coloque los pares (tiempo, datos) en una hoja de cálculo de Excel y edite el archivo smootherdemo para leer su propia hoja de cálculo de Excel. Tendrá que editar el archivo de secuencia de comandos y posiblemente ajustar los distintos parámetros de suavizado. Alternativamente, si prefiere usar el freeware Scilab, entonces: Descargue e instale Scilab (aproximadamente 13Mb). Tiene la opción de Windows, Linux o Mac. Descargue los archivos más suaves de Scilab y desempaquete en algún directorio conveniente Ejecute el archivo smootherdemo. sci. Matlab es un software comercial de software y prototipado científico popular entre muchos ingenieros. Matlab se vende en Nueva Zelanda por Hoare Research Software. Descargue y descomprima los archivos de suavizado Matlab en su directorio de trabajo, y ejecute el archivo de script de Matlab smootherdemo. m. Scilab es un paquete de software científico libre similar a, pero no exactamente compatible con, Matlab. Scilab está disponible para Linux, Windows y Mac y está disponible para su descarga desde aquí. (Aproximadamente 13Mb). Actualmente está siendo desarrollado por investigadores del INRIA y ENPC en Francia, y al igual que Matlab, incluye numerosas cajas de herramientas y un simulador de diagrama de bloques gráfico similar a Simulink llamado Scicos. Los siguientes archivos de datos se utilizaron en el artículo. Se proporcionan en formato Excel y texto en ascii recto con un encabezado de una fila.

No comments:

Post a Comment