Sunday 22 October 2017

Ventana Gaussiana Media Móvil


Variaciones en el promedio móvil El filtro de media móvil es más o menos perfecto para suavizar datos en presencia de ruido, si la información útil en sus datos está completamente en el dominio del tiempo. En ese caso, usted no cuida sobre su funcionamiento bastante pobre en el dominio de la frecuencia. La Figura 1 muestra las respuestas de impulso, paso y frecuencia del filtro básico de media móvil (con tres muestras adicionales en ambos lados que no forman parte de las respuestas de impulso y paso, para mayor claridad). Sin embargo, a veces hay que trabajar con datos para los cuales ambos dominios son importantes. Para esos casos, hay versiones ponderadas del promedio móvil que son más o menos equivalentes en el dominio del tiempo, pero que tienen un rendimiento mucho mejor en el dominio de la frecuencia. Promedio móvil repetido Lo primero que puede hacer para mejorar la respuesta de frecuencia de la media móvil es aplicarla varias veces. Después de dos repeticiones, esto equivale a una ponderación triangular de los coeficientes (Figura 2). Dado que la aplicación del mismo filtro dobla su efecto dos veces, el primer lóbulo lateral de la respuesta de frecuencia es sólo la mitad de alto que el de la figura 1. La razón de la forma triangular es que el promedio móvil es una convolución con un pulso rectangular. Su aplicación dos veces provoca una convolución de este impulso rectangular consigo mismo, dando como resultado una ventana triangular para el filtro combinado. Obsérvese que he tomado la misma longitud de filtro en la Figura 2 que en la Figura 1, desplazando de ese modo el primer cero de la respuesta de frecuencia. Una verdadera convolución del filtro rectangular original habría resultado en un filtro más largo y habría mantenido los ceros exactamente en el mismo lugar, por supuesto. Si el filtro de media móvil se repite varias veces, sus coeficientes convergen a una ventana gaussiana (Figura 3) debido al teorema del límite central. Por supuesto, un Gaussiano real se extiende infinitamente en ambas direcciones, por lo que no hay otra opción que cortarla en algún momento (o tal vez multiplicarla por una segunda ventana). Además, debe elegirse la desviación estándar del gaussiano. Para esta ilustración (y para la implementación del Diseñador de filtros), he adoptado la configuración predeterminada de MATLAB. En la práctica, es posible que desee simplemente aplicar repetidamente la media móvil en lugar de aplicar una ventana gaussiana. Cuando se implementa recursivamente, el promedio móvil es muy eficiente. Mientras que la ventana gaussiana debe ser implementada por convolución. Ventana Blackman Otra posibilidad es elegir una de las funciones de ventana clásica que se utilizan para los filtros de ventana-sinc, y utilizarlo como un núcleo de filtro (ver la excelente página de Wikipedia en las funciones de la ventana). Como ejemplo, he elegido la ventana de Blackman (Figura 4). Esto mejora aún más la atenuación de la banda de parada, al mismo tiempo que muestra una respuesta de dominio de tiempo suave sin ningún tipo de sondeo o sobresalto. En conclusión, si necesita suavizar los datos pero necesita un mejor desempeño de frecuencia que el promedio móvil básico tiene para ofrecer, varias alternativas están disponibles. Herramienta de diseño de filtros Este artículo se complementa con una herramienta de diseño de filtros. Experimente con las diferentes funciones de la ventana y la longitud del filtro, y vea el efecto en la respuesta de frecuencia. Pruébelo ahora El científico y los ingenieros dirigen el procesamiento de señales digitales Por Steven W. Smith, Ph. D. En un mundo perfecto, los diseñadores de filtros sólo tendrían que ocuparse de la información codificada en el dominio del tiempo o en el dominio de la frecuencia, pero nunca una mezcla de los dos en la misma señal. Desafortunadamente, hay algunas aplicaciones donde ambos dominios son simultáneamente importantes. Por ejemplo, las señales de televisión caen en esta categoría desagradable. La información de vídeo se codifica en el dominio de tiempo, es decir, la forma de la forma de onda corresponde a los patrones de brillo en la imagen. Sin embargo, durante la transmisión, la señal de vídeo se trata según su composición de frecuencia, tal como su anchura de banda total, cómo se añaden las ondas portadoras para el sonido y el color del amplificador, restauración de amplificación de eliminación del componente de CC, etc. Se entiende mejor en el dominio de la frecuencia, incluso si la información de las señales está codificada en el dominio del tiempo. Por ejemplo, el monitor de temperatura en un experimento científico podría estar contaminado con 60 hercios de las líneas eléctricas, 30 kHz de una fuente de alimentación de conmutación, o 1320 kHz de una emisora ​​local de radio AM. Los familiares del filtro de media móvil tienen un mejor rendimiento en el dominio de la frecuencia, y pueden ser útiles en estas aplicaciones de dominio mixto. Los filtros de media móvil de paso múltiple implican pasar la señal de entrada a través de un filtro de media móvil dos o más veces. La figura 15-3a muestra el núcleo del filtro resultante de una, dos y cuatro pasadas. Dos pasadas son equivalentes a usar un núcleo de filtro triangular (un núcleo de filtro rectangular convolucionado con sí mismo). Después de cuatro o más pases, el kernel de filtro equivalente parece un Gaussiano (recuerde el Teorema del Límite Central). Como se muestra en (b), múltiples pasadas producen una respuesta de paso en forma de s, en comparación con la línea recta de la única pasada. Las respuestas de frecuencia en (c) y (d) están dadas por la Ec. 15-2 multiplicado por sí mismo para cada pase. Es decir, cada vez que la convolución del dominio da como resultado una multiplicación de los espectros de frecuencia. La figura 15-4 muestra la respuesta en frecuencia de otros dos familiares del filtro de media móvil. Cuando un Gaussiano puro es usado como un núcleo de filtro, la respuesta de frecuencia es también Gaussiana, como se discutió en el Capítulo 11. El Gaussiano es importante porque es la respuesta de impulso de muchos sistemas naturales y artificiales. Por ejemplo, un breve impulso de luz que entra en una línea de transmisión de fibra óptica larga saldrá como un pulso gaussiano, debido a las diferentes trayectorias tomadas por los fotones dentro de la fibra. El kernel de filtro gaussiano también se utiliza ampliamente en el procesamiento de imágenes porque tiene propiedades únicas que permiten convoluciones bidimensionales rápidas (véase el Capítulo 24). La segunda respuesta de frecuencia en la Fig. 15-4 corresponde a usar una ventana de Blackman como un núcleo de filtro. (El término ventana no tiene significado aquí es simplemente parte del nombre aceptado de esta curva). La forma exacta de la ventana de Blackman se da en el Capítulo 16 (Ec. 16-2, Fig. 16-2) sin embargo, se parece mucho a un Gaussiano. ¿Cómo son estos parientes del filtro de media móvil mejor que el filtro de media móvil en sí Tres maneras: En primer lugar, y lo más importante, estos filtros tienen mejor atenuación de banda de detención que el filtro de media móvil. En segundo lugar, los granos de filtro se estrechan hasta una amplitud más pequeña cerca de los extremos. Recuerde que cada punto en la señal de salida es una suma ponderada de un grupo de muestras de la entrada. Si el núcleo del filtro se estrecha, las muestras en la señal de entrada que están más alejadas reciben menos peso que las cercanas. En tercer lugar, las respuestas de paso son curvas suaves, en lugar de la línea recta brusca de la media móvil. Estos últimos dos son generalmente de beneficio limitado, aunque usted puede ser que encuentre aplicaciones donde son ventajas genuinas. El filtro de media móvil y sus familiares son todos aproximadamente iguales en la reducción del ruido aleatorio mientras que mantiene una respuesta aguda del paso. La ambigüedad radica en cómo se mide el tiempo de subida de la respuesta escalonada. Si el tiempo de subida se mide de 0 a 100 del paso, el filtro de media móvil es lo mejor que puede hacer, como se mostró anteriormente. En comparación, medir el tiempo de subida de 10 a 90 hace que la ventana de Blackman sea mejor que el filtro de media móvil. El punto es, esto es sólo disputas teóricas considerar estos filtros iguales en este parámetro. La mayor diferencia en estos filtros es la velocidad de ejecución. Utilizando un algoritmo recursivo (descrito a continuación), el filtro de media móvil funcionará como un rayo en su computadora. De hecho, es el filtro digital más rápido disponible. Múltiples pases del promedio móvil serán correspondientemente más lentos, pero aún así muy rápidos. En comparación, los filtros Gaussiano y Blackman son extremadamente lentos, porque deben usar convolución. Piense un factor de diez veces el número de puntos en el núcleo del filtro (basado en la multiplicación es aproximadamente 10 veces más lento que la adición). Por ejemplo, espere que un Gaussiano de 100 puntos sea 1000 veces más lento que un promedio móvil usando la recursión. Esta versión HTML de se proporciona por conveniencia, pero no es el mejor formato para el libro. En particular, algunos de los símbolos no se representan correctamente. Es posible que prefiera leer la versión en PDF. ChapterXA08XA0XA0Filtrado y convolución En este capítulo se presenta una de las ideas más importantes y útiles relacionadas con el procesamiento de señales: el teorema de la convolución. Pero antes de que podamos entender el teorema de la convolución, tenemos que entender la convolución. IX2019ll empieza con un ejemplo simple, alisando, y weX2019ll ir desde allí. El código de este capítulo está en chap08.ipynb. Que se encuentra en el repositorio de este libro (véase SectionXA0 0.2). También puedes verlo en tinyurl / thinkdsp08. 8.1XA0XA0Smoothing Figura 8.1: Precio de cierre diario de las acciones de Facebook y un promedio móvil de 30 días. El suavizado es una operación que intenta eliminar las variaciones a corto plazo de una señal para revelar tendencias a largo plazo. Por ejemplo, si traza cambios diarios en el precio de una acción, parecería ruidoso que un operador de suavizado pudiera hacer más fácil ver si el precio estaba subiendo o bajando en el tiempo. Un algoritmo de suavizado común es un promedio móvil, que calcula la media de los n valores anteriores, para algún valor de n. Por ejemplo, FigureXA0 8.1 muestra el precio de cierre diario de Facebook del 17 de mayo de 2012 al 8 de diciembre de 2015. La línea gris es la información en bruto, la línea más oscura muestra el promedio móvil de 30 días. El suavizado elimina los cambios más extremos y facilita ver tendencias a largo plazo. Las operaciones de suavizado también se aplican a las señales de sonido. Como ejemplo, IX2019ll comienza con una onda cuadrada a 440 Hz. Como vimos en SectionXA0 2.2. Los armónicos de una onda cuadrada caen lentamente, por lo que contiene muchos componentes de alta frecuencia. Primero IX2019ll construir la señal y dos ondas: la onda es una rebanada de 1 segundo del segmento de la señal es una porción más corta IX2019ll uso para trazar. Para calcular el promedio móvil de esta señal, IX2019ll utiliza una ventana similar a los de SectionXA0 3.7. Anteriormente se utilizó una ventana de Hamming para evitar la fuga espectral causada por la discontinuidad al principio y al final de una señal. En términos más generales, podemos usar ventanas para calcular la suma ponderada de muestras en una onda. Por ejemplo, para calcular una media móvil, IX2019ll crear una ventana con 11 elementos y normalizar para que los elementos se suman a 1. Ahora puedo calcular el promedio de los primeros 11 elementos mediante la multiplicación de la ventana por la matriz de onda: acolchado es un Versión de la ventana con ceros añadidos al final por lo que es la misma longitud que segment. ys. La adición de ceros como esto se llama relleno. Prod es el producto de la ventana y el conjunto de ondas. La suma de los productos elementwise es la media de los primeros 11 elementos de la matriz. Dado que estos elementos son todos -1, su promedio es -1. Figura 8.2: Una señal cuadrada a 400 Hz (gris) y una media móvil de 11 elementos. Para calcular el siguiente elemento de la media móvil, rodamos la ventana, que desplaza a la derecha y envuelve uno de los ceros desde el extremo hacia el principio. Cuando multiplicamos la ventana laminada y la matriz de ondas, obtenemos el promedio de los próximos 11 elementos de la matriz de ondas, empezando por la segunda. El resultado es -1 de nuevo. Podemos calcular el resto de los elementos de la misma manera. La siguiente función envuelve el código que hemos visto hasta ahora en un bucle y almacena los resultados en una matriz. Suavizada es la matriz que contendrá los resultados acolchados es una matriz que contiene la ventana y suficientes ceros para tener longitud N y laminado es una copia de relleno que se desplaza a la derecha por un elemento cada vez a través del bucle. Dentro del bucle, multiplicamos ys por laminado para seleccionar 11 elementos y sumarlos. FigureXA0 8.2 muestra el resultado de una onda cuadrada. La línea gris es la señal original, la línea más oscura es la señal suavizada. La señal suavizada comienza a subir cuando el borde delantero de la ventana alcanza la primera transición y se nivela cuando la ventana cruza la transición. Como resultado, las transiciones son menos abruptas, y las esquinas menos agudas. Si escuchas la señal suavizada, suena menos buzzy y ligeramente amortiguado. 8.2XA0XA0Convolution La operación que acabamos de realizar X2013 aplicando una función de ventana a cada segmento superpuesto de una onda X2013 se llama convolución. Convolución es una operación tan común que NumPy proporciona una implementación que es más simple y más rápido que mi versión: np. convolve calcula la convolución de la matriz de onda y la ventana. El indicador de modo válido indica que sólo debe calcular valores cuando la ventana y la matriz de ondas se superponen completamente, por lo que se detiene cuando el borde derecho de la ventana llega al final de la matriz de ondas. Aparte de eso, el resultado es el mismo que en FigureXA0 8.2. En realidad, hay otra diferencia. El bucle de la sección anterior calcula la correlación cruzada. (F XA0X22C6XA0 g) n XA0XA0 El suavizado hace que las transiciones en una señal cuadrada sean menos abruptas y hace que el sonido quede suavemente amortiguado. LetX2019s ver qué efecto tiene esta operación en el espectro. Primero, IX2019ll traza el espectro de la onda original: Entonces la onda suavizada: El indicador de modo mismo indica que el resultado debe tener la misma longitud que la entrada. En este ejemplo, incluirá algunos valores que X201Cwrap aroundX201D, pero thatX2019s está bien por ahora. FigureXA0 8.3 muestra el resultado. La frecuencia fundamental es casi sin cambios los primeros armónicos se atenúan, y los armónicos más altos son casi eliminados. Por lo tanto, el suavizado tiene el efecto de un filtro de paso bajo, que vimos en SectionXA0 1.5 y SectionXA0 4.4. Para ver cuánto se ha atenuado cada componente, podemos calcular la relación de los dos espectros: proporción es la relación de la amplitud antes y después del suavizado. Cuando los amperios son pequeños, esta proporción puede ser grande y ruidosa, por lo que por simplicidad establezco la relación a 0 excepto donde están los armónicos. Figura 8.4: Relación de espectros para la onda cuadrada, antes y después del alisado. FigureXA0 8.4 muestra el resultado. Como era de esperar, la relación es alta para las frecuencias bajas y baja a una frecuencia de corte cerca de 4000 Hz. Pero hay otra característica que no esperábamos: por encima del punto de corte, la relación rebote entre 0 y 0.2. Figura 8.5: Relación de espectros para la onda cuadrada, antes y después del alisado, junto con la DFT de la ventana de suavizado. La respuesta es el teorema de la convolución. DFT (f) XA0XA0 DFT (f) XA0XB7XA0 DFT (g) XA0 donde f es una matriz de ondas y g es una ventana. En palabras, el teorema de la convolución dice que si convolvemos f y g. Y luego calcular la DFT, obtenemos la misma respuesta que el cálculo de la DFT de fyg. Y luego multiplicando los resultados por elementos. Cuando aplicamos una operación como convolución a una onda una onda, decimos que estamos trabajando en el dominio del tiempo. Porque la onda es una función del tiempo. Cuando aplicamos una operación como la multiplicación a la DFT, estamos trabajando en el dominio de la frecuencia. Porque la DFT es una función de la frecuencia. Usando estos términos, podemos afirmar el Teorema de la Convolución de manera más concisa: La convolución en el dominio del tiempo corresponde a la multiplicación en el dominio de la frecuencia. Y eso explica FigureXA0 8.4. Porque cuando convolvemos una onda y una ventana, multiplicamos el espectro de la onda con el espectro de la ventana. Para ver cómo funciona, podemos calcular la DFT de la ventana: acolchada contiene la ventana de suavizado, rellenada con ceros a la misma longitud que la onda dftwindow contiene la DFT de relleno. Figura 8.5 muestra el resultado, junto con las razones que calculamos en la sección anterior. Las relaciones son exactamente las amplitudes en dftwindow. XA0 / XA0 abs (DFT (f)) XA0XA0 abs (DFT (g)) XA0 En este contexto, el DFT de una ventana se denomina filtro. Para cualquier ventana de convolución en el dominio del tiempo, hay un filtro correspondiente en el dominio de la frecuencia. Y para cualquier filtro que pueda expresarse mediante la multiplicación por elementos en el dominio de la frecuencia, hay una ventana correspondiente. 8.5XA0XA0Filtro gaussiano En SectionXA0 8.2 presenté definiciones de correlación cruzada y convolución, y vimos que son casi iguales, excepto que en convolución la ventana se invierte. Ahora que tenemos un algoritmo eficiente para la convolución, también podemos usarlo para calcular correlaciones cruzadas y autocorrelaciones. Utilizando los datos de la sección anterior, podemos calcular los precios de las acciones de Facebook de autocorrelación: Con modeX2019sameX2019. El resultado tiene la misma longitud que cerca. Correspondientes a retardos de X2212 N / 2 a N / 2X22121. La línea gris en FigureXA0 8.8 muestra el resultado. Excepto en el intervalo 0. No hay picos, por lo que no hay comportamiento periódico aparente en esta señal. Sin embargo, la función de autocorrelación disminuye lentamente, lo que sugiere que esta señal se asemeja al ruido rosa, como vimos en la Sección XA0 5.3. Para calcular la autocorrelación usando la convolución, tenemos que poner la señal en cero para duplicar la longitud. Este truco es necesario porque la FFT se basa en la suposición de que la señal es periódica que es, que envuelve desde el final hasta el principio. Con datos de series de tiempo como este, esa suposición no es válida. Agregar ceros y, a continuación, recortar los resultados, elimina los valores falsos. Además, recuerde que la convolución invierte la dirección de la ventana. Para cancelar ese efecto, invertimos la dirección de la ventana antes de llamar a fftconvolve. Utilizando np. flipud. Que invierte una matriz NumPy. El resultado es una vista de la matriz, no una copia, por lo que esta operación es rápida. El resultado de fftconvolve tiene longitud 2 N. De éstos, el primero y el último N / 2 son válidos, el resto son el resultado de relleno cero. Para seleccionar el elemento válido, rodamos los resultados y seleccionamos el primer N. correspondiente a retrasos de X2212 N / 2 a N / 2X22121. Como se muestra en la Figura 8.8, los resultados de fftautocorr y np. correlate son idénticos (con unos 9 dígitos de precisión). Observe que las correlaciones en FigureXA0 8.8 son números grandes que podríamos normalizar (entre -1 y 1) como se muestra en SectionXA0 5.6. La estrategia que usamos aquí para la auto-correlación también funciona para la correlación cruzada. Una vez más, usted tiene que preparar las señales moviendo una y relleno ambos, y entonces usted tiene que recortar las partes inválidas del resultado. Este relleno y recorte es una molestia, pero thatX2019s por qué las bibliotecas como NumPy proporcionan funciones para hacerlo por usted. 8.8XA0XA0Exercicios Las soluciones a estos ejercicios están en chap08soln. ipynb. EjercicioXA01 XA0XA0 El cuaderno de este capítulo es chap08.ipynb. Léalo y ejecuta el código. Contiene un widget interactivo que le permite experimentar con los parámetros de la ventana gaussiana para ver qué efecto tienen en la frecuencia de corte. ¿Qué pasa cuando aumentas el ancho del Gaussiano, std, sin aumentar el número de elementos en la ventana? M ExerciseXA02 XA0XA0 En este capítulo afirmo que la transformada de Fourier de una curva gaussiana es también una curva gaussiana. Para las transformaciones discretas de Fourier, esta relación es aproximadamente verdadera. Pruébelo por algunos ejemplos. Ejercicio XA03 XA0XA0 Si realizó los ejercicios del capítulo XA0 3, se vio el efecto de la ventana de Hamming y algunas de las otras ventanas proporcionadas por NumPy, en la fuga espectral. Podemos tener una idea del efecto de estas ventanas mirando sus DFT. Además de la ventana gaussiana que hemos utilizado en este capítulo, crear una ventana de Hamming con el mismo tamaño. Zero-pad las ventanas y trazar sus DFTs. Qué ventana actúa como un mejor filtro de paso bajo Puede ser útil trazar los DFT en una escala de log. Experimente con unas pocas ventanas diferentes y algunos tamaños diferentes. ¿Estás usando uno de nuestros libros en una clase? Quiero saberlo. Por favor, considere completar esta breve encuesta.

No comments:

Post a Comment