Filtros FIR, filtros IIR y la ecuación de diferencia de coeficiente constante lineal Filtros de media móvil causal (FIR) Hemos discutido sistemas en los que cada muestra de la salida es una suma ponderada de (cierta de) las muestras de la entrada. Tomemos un sistema de suma ponderada causal, donde causal significa que una muestra de salida dada depende solamente de la muestra de entrada actual y de otros insumos más temprano en la secuencia. Ni los sistemas lineales en general, ni los sistemas finitos de respuesta al impulso en particular, necesitan ser causales. Sin embargo, la causalidad es conveniente para una especie de análisis que se va a explorar en breve. Si simbolizamos las entradas como valores de un vector x. Y las salidas como valores correspondientes de un vector y. Entonces tal sistema se puede escribir como cuando los valores de b son pesos aplicados a las muestras de entrada actuales y anteriores para obtener la muestra de salida actual. Podemos pensar en la expresión como una ecuación, con el signo de igual signo que es igual, o como una instrucción de procedimiento, con el signo de igual signo de asignación. Permite escribir la expresión para cada muestra de salida como un bucle MATLAB de sentencias de asignación, donde x es un vector N-length de muestras de entrada, yb es un vector M-length de pesos. Para tratar el caso especial al principio, incorporaremos x en un vector más largo xhat cuyas primeras muestras M-1 son cero. Escribiremos la suma ponderada para cada y (n) como un producto interno, y haremos algunas manipulaciones de las entradas (como invertir b) para este fin. Este tipo de sistema es a menudo llamado un filtro de media móvil, por razones obvias. De nuestras discusiones anteriores, debe ser obvio que tal sistema es lineal y invariable del turno. Por supuesto, sería mucho más rápido usar la función de convolución de MATLAB conv () en lugar de nuestro mafilt (). En lugar de considerar las primeras muestras M-1 de la entrada como cero, podríamos considerarlas como las mismas que las muestras M-1 pasadas. Esto es lo mismo que tratar la entrada como periódica. Utilice bien cmafilt () como el nombre de la función, una pequeña modificación de la función mafilt () anterior. En la determinación de la respuesta de impulso de un sistema, generalmente no hay diferencia entre estos dos, ya que todas las muestras no iniciales de la entrada son cero: Dado que un sistema de este tipo es lineal y invariante por turnos, sabemos que su efecto en cualquier Sinusoid será sólo a escala y cambiarlo. Aquí es importante que utilicemos la versión circular. La versión circularmente convoluida se desplaza y se escala un poco, mientras que la versión con convolución ordinaria se distorsiona al principio. Vamos a ver cuál es el escalado y desplazamiento exactos usando fft: Tanto la entrada como la salida tienen amplitud sólo en las frecuencias 1 y -1, que es como debería ser, dado que la entrada era una sinusoide y el sistema era lineal. Los valores de salida son mayores en una relación de 10.6251 / 8 1.3281. Esta es la ganancia del sistema. ¿Qué pasa con la fase? Sólo necesitamos mirar donde la amplitud es distinta de cero: La entrada tiene una fase de pi / 2, como pedimos. La fase de salida se desplaza por 1,0594 adicionales (con signo opuesto para la frecuencia negativa), o alrededor de 1/6 de un ciclo a la derecha, como podemos ver en el gráfico. Ahora vamos a intentar una sinusoide con la misma frecuencia (1), pero en lugar de la amplitud 1 y fase pi / 2, vamos a intentar la amplitud 1,5 y la fase 0. Sabemos que sólo la frecuencia 1 y -1 tendrá una amplitud no nula, Basta con mirarlos: de nuevo la relación de amplitud (15.9377 / 12.0000) es 1.3281 - y en cuanto a la fase se desplaza nuevamente hacia 1.0594. Si estos ejemplos son típicos, podemos predecir el efecto de nuestro sistema (respuesta al impulso .1.2 .3 .4 .5) en cualquier sinusoide con frecuencia 1 - la amplitud se incrementará en un factor de 1,3281 y la fase (frecuencia positiva) se desplazará en 1,0594. Podríamos pasar a calcular el efecto de este sistema sobre sinusoides de otras frecuencias por los mismos métodos. Pero hay una manera mucho más simple, y una que establece el punto general. Dado que la convolución (circular) en el dominio del tiempo significa la multiplicación en el dominio de la frecuencia, de ello se deduce que, en otras palabras, la DFT de la respuesta de impulso es la relación de la DFT de la salida a la DFT de la entrada. En esta relación los coeficientes de DFT son números complejos. Desde abs (c1 / c2) abs (c1) / abs (c2) para todos los números complejos c1, c2, esta ecuación nos dice que el espectro de amplitud de la respuesta de impulso siempre será la relación entre el espectro de amplitud de la salida a la De la entrada. En el caso del espectro de fase, ángulo (c1 / c2) ángulo (c1) - ángulo (c2) para todos c1, c2 (con la condición de que las fases que se diferencian por n2pi se consideran iguales). Por lo tanto, el espectro de fase de la respuesta de impulso siempre será la diferencia entre los espectros de fase de la salida y la entrada (con las correcciones de 2pi que sean necesarias para mantener el resultado entre - pi y pi). Podemos ver los efectos de fase más claramente si desempolvamos la representación de fase, es decir, si añadimos varios múltiplos de 2pi como sea necesario para minimizar los saltos que son producidos por la naturaleza periódica de la función angle (). Aunque la amplitud y la fase se usan generalmente para la presentación gráfica e incluso tabular, ya que son una manera intuitiva de pensar sobre los efectos de un sistema en los diversos componentes de frecuencia de su entrada, los complejos coeficientes de Fourier son más útiles algebraicamente, ya que permiten La expresión simple de la relación El enfoque general que acabamos de ver funcionará con filtros arbitrarios del tipo esbozado, en los que cada muestra de salida es una suma ponderada de algún conjunto de muestras de entrada. Como se mencionó anteriormente, a menudo se les llama filtros de Respuesta de Impulso Finito, ya que la respuesta de impulso es de tamaño finito, oa veces filtros de Promedio Móvil. Podemos determinar las características de respuesta de frecuencia de dicho filtro a partir de la FFT de su respuesta de impulso, y también podemos diseñar nuevos filtros con características deseadas por IFFT a partir de una especificación de la respuesta de frecuencia. Filtros Autoregresivos (IIR) No tendría mucho sentido tener nombres para los filtros FIR a menos que hubiera algún otro tipo de distinción, por lo que aquellos que han estudiado la pragmática no se sorprenderán al saber que hay de hecho otro tipo principal Del filtro lineal tiempo-invariante. Estos filtros a veces se llaman recursivos porque el valor de salidas anteriores (así como entradas anteriores) importa, aunque los algoritmos generalmente se escriben usando construcciones iterativas. También se les llama Filtros de Respuesta a Impulsos Infinitos (IIR), porque en general su respuesta a un impulso permanece para siempre. También a veces se les llama filtros auto-regresivos, porque los coeficientes pueden considerarse como el resultado de hacer una regresión lineal para expresar valores de señal en función de valores de señal anteriores. La relación de los filtros FIR y IIR se puede ver claramente en una ecuación de diferencia de coeficiente constante lineal, es decir, establecer una suma ponderada de salidas igual a una suma ponderada de entradas. Esto es como la ecuación que dimos anteriormente para el filtro FIR causal, excepto que además de la suma ponderada de entradas, también tenemos una suma ponderada de salidas. Si queremos pensar en esto como un procedimiento para generar muestras de salida, necesitamos reorganizar la ecuación para obtener una expresión para la muestra de salida actual y (n), Adoptando la convención de que a (1) 1 (por ejemplo, escalando otra como Y bs), podemos deshacernos del término 1 / a (1): y (n) b (1) x (n) b (2) x (n-1). B (Nb _ {1}) _ {x} (n - nb) - a (2) y (n - 1) -. - a (Na1) y (n-na) Si todos los a (n) distintos de a (1) son cero, esto reduce a nuestro viejo amigo el filtro FIR causal. Este es el caso general de un filtro (causal) LTI, y es implementado por el filtro de función MATLAB. Veamos el caso en que los coeficientes b distintos de b (1) son cero (en lugar del caso FIR, donde a (n) son cero): En este caso, la muestra de salida corriente y (n) se calcula como (N-1), y (n-2), etc. Para tener una idea de lo que sucede con estos filtros, comencemos con el caso en el que: Es decir, la muestra de salida actual es la suma de la muestra de entrada actual y la mitad de la muestra de salida anterior. Bueno, tome un impulso de entrada a través de unos pasos de tiempo, uno a la vez. Debe quedar claro en este punto que podemos escribir fácilmente una expresión para el valor de la muestra n-ésima salida: es justo (si MATLAB contado desde 0, esto sería simplemente .5n). Puesto que lo que estamos calculando es la respuesta de impulso del sistema, hemos demostrado por ejemplo que la respuesta de impulso puede de hecho tener infinitas muestras no cero. Para implementar este filtro trivial de primer orden en MATLAB, podríamos usar filtro. La llamada se verá así: y el resultado es: ¿Es este negocio realmente todavía lineal? Podemos ver esto empíricamente: Para un enfoque más general, considere el valor de una muestra de salida y (n). Por sustitución sucesiva podríamos escribir esto como Esto es como nuestro viejo amigo la forma convolución-suma de un filtro FIR, con la respuesta impulsiva proporcionada por la expresión .5k. Y la longitud de la respuesta de impulso es infinita. Así, los mismos argumentos que utilizamos para demostrar que los filtros FIR eran lineales ahora se aplicarán aquí. Hasta ahora esto puede parecer un montón de alboroto sobre no mucho. ¿Qué es toda esta línea de investigación para bien responder a esta pregunta en etapas, a partir de un ejemplo. No es una gran sorpresa que podamos calcular un exponencial muestreado por multiplicación recursiva. Veamos un filtro recursivo que hace algo menos obvio. Esta vez también lo convierten en un filtro de segundo orden, de modo que la llamada al filtro será de la forma. Permite establecer el segundo coeficiente de salida a2 a -2cos (2pi / 40) y el tercer coeficiente de salida a3 a 1, y mirar La respuesta al impulso. No muy útil como filtro, en realidad, pero genera una onda sinusoidal muestreada (de un impulso) con tres multiplicaciones por muestra. Para entender cómo y por qué lo hace, y cómo se pueden diseñar y analizar los filtros recursivos en El caso más general, tenemos que dar un paso atrás y echar un vistazo a algunas otras propiedades de los números complejos, en el camino a la comprensión de la transformación z. La media móvil exponencial es un tipo de filtro IIR que es fácil de implementar en C y utiliza Recursos mínimos. A diferencia de un promedio móvil simple, no requiere un buffer RAM para almacenar muestras anteriores. Sólo tiene que almacenar un valor (el promedio anterior). Una media móvil exponencial se expresa como la siguiente ecuación: avgn (en alfa) avgn-1 (1-alfa). Implementar esta ecuación utilizando matemáticas en coma flotante es sencillo, pero el uso de variables de punto fijo es un poco complicado. El fragmento de código aquí utiliza enteros con signo de 32 bits para el promedio y los valores de entrada. Los valores intermedios necesitan utilizar matemáticas de 64 bits para evitar errores de desbordamiento. Los valores alfa cercanos a cero representan promedios pesados mientras que el valor alfa de uno no tiene promedios. Comentarios: En la línea donde temp0 se calcula, creo que el final de la línea debe leer (65535 - alfa) De lo contrario un alfa de 1 incluiría incorrectamente el promedio anterior así como el nuevo valor. Documentación Este ejemplo muestra cómo usar el movimiento Media de los filtros y el remuestreo para aislar el efecto de los componentes periódicos de la hora del día en las lecturas de temperatura por hora, así como eliminar el ruido de línea no deseados de una medida de tensión de bucle abierto. 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