Escuela Superior Politécnica de Chimborazo
Ing. Electrónica Telecomunicaciones y Redes
FILTRO WIENER L. Caiza, S. Asadovay, M. Tixi, L. Martínez ESPOCH , Riobamba- Ecuador
1.
Introducción
Los filtros de Wiener son los mejores filtros lineales de mínimos cuadrados, que pueden ser usados para predicción, estimación, interpolación, filtrado de señal y ruido, etc. Para diseñarlos se necesita tener un conocimiento previo apropiado de las propiedades estadísticas de la señal de entrada. El problema reside en que este conocimiento generalmente no se puede obtener. En su lugar se usan filtros adaptativos, que hacen uso de los datos de entrada para aprender los datos estadísticos requeridos. En cualquier caso, la teoría de Wiener es importante para el presente estudio porque los filtros adaptativos que serán empleados convergen asintóticamente (en media) en las soluciones de Wiener. 2.
Filtro de Wiener
En su forma más general, consiste en una señal de entrada, f(k), f(k), una respuesta deseada, d(k), d(k), y un filtro lineal de respuesta impulsional h*(k). h*(k). Este filtro es alimentado por f(k) por f(k) y produce a su salida . La diferencia entre la señal señal de salida g(k). g(k) del filtro, g(k), g(k), y la señal deseada, d(k), d(k), es el error de la estimación, e(k). e(k).
El objetivo del filtrado de Wiener es determinar la respuesta impulsional h(k) de forma que el error e(k) sea, en un sentido estadístico, "lo más pequeño posible". El criterio elegido es la minimización del valor cuadrático medio del error x = E {|e(n) {|e(n)||2} El filtro digital tiene una señal de entrada y produce una señal de salida. El filtro será un filtro de Wiener si su respuesta impulsiva se elige para minimizar el error cuadrático medio. El error se define como la diferencia entre la salida del filtro y la respuesta deseada:
Cuando se trabaja con filtros de Wiener, generalmente la respuesta deseada existe sólo de forma conceptual. Las propiedades estadísticas de la respuesta deseada y sus relaciones relaci ones estadísticas estadí sticas con la señal de entrada al filtro se asume que son conocidas por el diseñador. La situación es bastante diferente cuando se trata con filtros adaptativos. En éstos, la respuesta deseada existe como una señal que puede ser obtenida como entrada en tiempo real al algoritmo adaptativo, para conseguir aprender y adaptarse. Los filtros de Wiener no aprenden. Su diseño es fijo, basado en un primer conocimiento estadístico.
Fig.1 Filtro Digital Wiener
La respuesta impulsiva del filtro de Wiener se obtiene encontrando una expresión para el error cuadrático medio 1
Escuela Superior Politécnica de Chimborazo
Ing. Electrónica Telecomunicaciones y Redes
y minimizándola con respecto a la respuesta impulsiva. Elevando al cuadrado en ambas partes, se obtiene:
Con la solución de Wiener se puede encontrar la función de transferencia del filtro H*(z) a partir de la transformada z de la función de autocorrelación de la señal de entrada, de la correlación cruzada de la señal de entrada, y de la respuesta deseada. Si se sustituye esta ecuación en la expresión del error se obtiene el valor del mínimo MSE:
Sabiendo que:
Se puede sustituir: 2.1.
Si tomamos valor medio en ambos lados, encontramos una expresión para el error cuadrático medio (MSE, mean square error):
Siendo mm la auto correlación y mn la correlación cruzada de dos señales m y n. si derivamos con respecto a h, que es la respuesta impulsiva del filtro, e igualamos a cero para minimizar el error:
Tipos
Existen diversas estructuras para el filtro de Wiener. Comenzaremos con el caso en el que el filtro puede ser no causal y de duración infinita, el filtro IIR no causal. Posteriormente, añadiremos la restricción de causalidad, para obtener el filtro IIR causal. Por último, la restricción de longitud finita nos conducirá al filtro FIR. Recordamos que nuestro objetivo es diseñar un filtro lineal en tiempo discreto tal que su salida, g(k), g(k), proporcione una estimación de la señal deseada, d(k), d(k), a partir de una señal de entrada, f(k), f(k), de forma el valor cuadrático medio del error e(k), e(k), definido como la diferencia entre la señal deseada d(k) y la salida actual g(k) actual g(k),, sea mínimo. 2.1.1.
Filtro de Wiener IIR
Nuestro propósito es diseñar un filtro h(n) que produzca una salida:
y(n) = x(n) * h(n) * h(n)
Esta es la ecuación de Wiener-Hopf , que en forma de convolución queda:
Tomando transformada Z en ambas partes:
Tan cercana como sea posible, en sentido cuadrático-medio, a la respuesta deseada d(n). d(n). El enunciado del problema es idéntico para filtros FIR y para IIR, pero existe una gran diferencia que cambia la solución.
2
Escuela Superior Politécnica de Chimborazo
Para el filtro FIR, existe un número finito de posibles coeficientes del filtro, mientras que con el filtro IIR, el número de incógnitas, es decir, de valores de h(n) para todo n, es infinito. Vamos a considerar dos situaciones: y
y
Primero el caso en que no aplicamos restricciones a la solución. Obtendremos que el filtro óptimo es, en general, no causal, y por tanto, irrealizable: Filtro Wiener IIR no causal. Posteriormente, aplicaremos la condición de causalidad, y para ello forzaremos h(n) a cero para valores de índice n negativos: Filtro Wiener IIR causal.
La función de transferencia del IIR en tiempo discreto es:
Y del FIR es:
Ing. Electrónica Telecomunicaciones y Redes
que el ruido de la señal contaminada esté lo suficientemente correlado con el ruido de la fuente a la que tenemos acceso. Usando, tal y como se explica en la ayuda de la función, el siguiente código, podremos obtener un filtro de orden 'p' con el que realizar una estimación del ruido aditivo de la señal información, restando finalmente este a la señal contaminada.
% Calcula y devuelve los coeficientes de
un filtro FIR por el método de % Wiener según la siguiente estructura: % % w = fWiener(x1,x2,p,N) % % Donde en 'w' se almacenan los
coeficientes del filtro FIR de Wiener. 'x1' % se corresponde con, en el caso de
cancelación de ruido, la señal % contaminada y, 'x2' con el ruido procedente de la fuente de ruido. Es % necesario que 'x1' y 'x2' se encuentren lo más correlados posible. El % orden del filtro deseado se pasa a través del parámetro 'p' y, ' N' % indica finalmente el número de muestras de las que queremos hacer uso de % las señales 'x1' y 'x2' para la obtención del filtro (para funcionamiento % óptimo, N = length(x1)). function [w] = fWiener(x1,x2,p,N)
En el primer caso, encontraremos una expresión sencilla para la respuesta frecuencial; en cambio, para el filtro causal, únicamente podremos caracterizar el sistema en términos de una factorización espectral. 3.
Programa en Matlab
La siguiente función implementada en MatLab se encarga de calcular los coeficientes de un filtro FIR según el método de Wiener. Una utilidad puede ser la cancel ació ación de ruido donde, teniendo acceso a la fuente de ruido, podemos conseguir el filtrado de la señal contaminada, donde es imprescindible
% Consideramos siempre muestras
reales, por lo que no tendremos en cuenta % el conjugado de la matriz de autocorrelación. % Cálculo de la autocorrelación de 'x1' y de la correlación de 'x2' con % 'x1'. x1 = x1(1:N); x2 = x2(1:N); autocorrx1 = xcorr(x1,'biased'); autocorrx1x2 = xcorr(x2,x1,'biased'); % Cálculo de la matriz de Wiener y del vector de términos independientes. vWiener = autocorrx1(ceil(length(autocorrx1)/2):c eil(length(autocorrx1)/2)+p-1); 3
Escuela Superior Politécnica de Chimborazo
mWiener = toeplitz(vWiener); vWiener = autocorrx1x2(ceil(length(autocorrx1x2) /2):ceil(length(autocorrx1x2)/2)+p-1); vWiener = vWiener'; % Obtención de los parámetros del filtro de Wiener. w = inv(mWiener)*vWiener; Generaremos un filtro de orden 15. P=15;
La señal deseada (señal de referencia) es una sinusoide de frecuencia 0.45 y 200 muestras.
N =200; =200; k =1: =1:N ; w 0=0.45; 0=0.45; d =s =sin(w 0*k)' ; %Senal desead a La señal a tratar es la señal deseada con un ruido blanco de distribución normal, varianza 1.
eps=1; n=eps*r andn(N,1 ) ; x =d+n ; plot(x,'r') ; %hold on ; %plot(d) %hold off ; pause ;
Ing. Electrónica Telecomunicaciones y Redes
ecuación. El operador "\" resuelve la ecuación de mínimos cuadrados. Es mucho más conveniente que calcular , ya que nadie nos asegura que la matriz de autocorrelación tenga inversa. r = x corr(x) ; R=toepl itz(r(N :N+P-1 P-1 )) ; ptemp= x corr(x,d) ; p= ptemp(N :N+P-1 ) ; w =R\ p w = 0.1208 0.1070 0.0905 0.0416 -0.0104 -0.0574 -0.0774 -0.0922 -0.0831 -0.0703 -0.0269 0.0172 0.0613 0.0723 0.0783
Estos son los coeficientes que mejor filtran el ruido de la señal . Obviamente, la respuesta que te dará es diferente, ya que no estamos utilizando la matriz de autocorrelación real, sino una estimación en base a las muestras de que disponemos, que cambian cada vez que creamos la señal x al tener una componente aleatoria. Vamos a ver cómo queda la señal después de filtrarla con nuestro filtro recién calculado, y lo compararemos con la señal deseada. xrec= f ilter(w,1 ,x) ;
Calculamos la matriz R y el vector p y le decimos a Matlab que resuelva w de la
%plot(x,'r') ; %hold on ; plot(xrec ) ; 4
Escuela Superior Politécnica de Chimborazo
Ing. Electrónica Telecomunicaciones y Redes
hold on ; plot(d,'g') ; hold off ;
hold on ; plot( X re rec ) ; hold off ;
No
está mal, comparándolo con la señal original. Para entender el tipo de filtrado que realiza el filtro de Wiener, vamos a ver la respuesta frecuencial del filtro frente al espectro de la señal que hemos recibido: X =abs(fft(x, 1024 )) ;
Prueba variaciones de los parámetros de la señal y del filtro y describe cómo cambian los efectos del filtrado: prueba diferentes órdenes (P=6, 50 y 200), diferentes números de muestras (N=25 y 1000), diferentes frecuencias (w0=0.2 y 1.0) y diferentes varianzas (eps=0.25 y 5).
W =abs(fft(w, 1024 )) ; plot( X ./ ./ ma x( X )) ; hold on ; plot(W ./ ./ ma x(W),'r') ; hold off ;
Comprueba el efecto de añadir un offset de 0.5 al ruido. eps=1; n=eps*r andn(N,1 )+0.5; A continuación se muestra un ejemplo de la utilización del filtro Wiener en procesamiento de imágenes.
Si vemos el espectro de la señal después de filtrarla, y la comparamos con la señal deseada, deseada, vemos que realmente el filtro ha hecho un buen trabajo. D=abs(fft(d,1024 )) ; rec=abs(fft(xre c ,1024 )) ; X re plot(D,'g') ; 5
Escuela Superior Politécnica de Chimborazo
Ing. Electrónica Telecomunicaciones y Redes
y
y
Para el estudio del filtro Wiener es necesario tener previos conocimientos de Estadística y Transformada Z. Al programar en Matlab, tomar en cuenta que la matriz de correlación debe tener su inversa.
6. Referencias y
y
y
y
4. y
y
y
Conclusiones
http://www.dma.fi.upm.es/doce ncia/cursosanteriores/0203/segundociclo/redesdeneuron as/Temas/7FiltrosAdaptativos.p df http://physionet.cps.unizar.es/~ eduardo/docencia/tds/librohtml /adapt1.htm http://physionet.cps.unizar.es/~ eduardo/docencia/tds/librohtml /adapt1.htm http://physionet.cps.unizar.es/~ eduardo/docencia/tds/librohtml /adapt1.htm
En tecnología digital el diseño mediante filtros FIR, el filtrado MSE se implementa en prácticamente todas las aplicaciones de procesado de señal. Desde receptores de comunicaciones, codificadores de fuente, prospección acústica, etc. todos los sistemas incluyen de un modo u otro un filtro de Wiener. El filtro se basa en el principio de ortogonalidad de datos que consiste en derivar e igualar a cero la función. Esto ha permitido descubrir un método de conocer las prestaciones del filtro antes de proceder a su diseño. Se ha utilizado una herramienta Simulink y Matlab que permite al usuario concentrarse en los problemas del algoritmo más que en los de su implementación, pues le oculta a éste detalles de la misma.
5. Recomendaciones
6