You are on page 1of 6

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     El objetivo del filtrado de Wiener es
filtros lineales de mínimos cuadrados, determinar la respuesta impulsional h(k)
que pueden ser usados para predicció n, de forma que el error e(k) sea, en un
estimació n, interpolació n, filtrado de sentido estadístico, "lo má s pequeñ o
señ al y ruido, etc. Para diseñ arlos se posible". El criterio elegido es la
necesita tener un conocimiento previo minimizació n del valor cuadrá tico medio
apropiado de las propiedades del error
estadísticas de la señ al de entrada. El
problema reside en que este x = E{|e(n)|2}
conocimiento generalmente no se puede
obtener. En su lugar se usan filtros El filtro digital tiene una señ al de entrada
adaptativos, que hacen uso de los datos y produce una señ al de salida. El filtro
de entrada para aprender los datos será un filtro de Wiener si su respuesta
estadísticos requeridos. En cualquier impulsiva se elige para minimizar el
caso, la teoría de Wiener es importante error cuadrá tico medio. El error se define
para el presente estudio porque los como la diferencia entre la salida del
filtros adaptativos que será n empleados filtro y la respuesta deseada:
convergen asintó ticamente (en media)
en las soluciones de Wiener.

2. Filtro de Wiener
Cuando se trabaja con filtros de Wiener,
generalmente la respuesta deseada
En su forma má s general, consiste en una
existe só lo de forma conceptual. Las
señ al de entrada, f(k), una respuesta
propiedades estadísticas de la respuesta
deseada, d(k), y un filtro lineal de
deseada y sus relaciones estadísticas con
respuesta impulsional h*(k). Este filtro es
la señ al de entrada al filtro se asume que
alimentado por f(k) y produce a su salida
son conocidas por el diseñ ador.
g(k). La diferencia entre la señ al de salida
del filtro, g(k), y la señ al deseada, d(k), es
el error de la estimació n, e(k). 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.

La respuesta impulsiva del filtro de


Wiener se obtiene encontrando una
Fig.1 Filtro Digital Wiener 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 Con la solució n de Wiener se puede


respuesta impulsiva. Elevando al encontrar la funció n de transferencia del
cuadrado en ambas partes, se obtiene: 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
Sabiendo que: ecuació n en la expresió n del error se
obtiene el valor del mínimo MSE:

Se puede sustituir:
2.1. Tipos

Existen diversas estructuras para el


filtro de Wiener. Comenzaremos con el
caso en el que el filtro puede ser no
Si tomamos valor medio en ambos lados, causal y de duració n infinita, el filtro IIR
encontramos una expresió n para el error no causal. Posteriormente, añ adiremos la
cuadrá tico medio (MSE, mean square restricció n de causalidad, para obtener el
error): 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), proporcione una
estimació n de la señ al deseada, d(k), a
partir de una señ al de entrada, f(k), de
forma el valor cuadrá tico medio del error
Siendo Φmm la auto correlació n y Φmn la e(k), definido como la diferencia entre la
correlació n cruzada de dos señ ales m y n. señ al deseada d(k) y la salida actual g(k),
si derivamos con respecto a h, que es la sea mínimo.
respuesta impulsiva del filtro, e
igualamos a cero para minimizar el error: 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)


Esta es la ecuació n de Wiener-Hopf , que
en forma de convolució n queda: Tan cercana como sea posible, en sentido
cuadrá tico-medio, a la respuesta deseada
d(n).

El enunciado del problema es idéntico


Tomando transformada Z en ambas para filtros FIR y para IIR, pero existe
partes: una gran diferencia que cambia la
solució n.

2
Escuela Superior Politécnica de Chimborazo Ing. Electrónica Telecomunicaciones y Redes

Para el filtro FIR, existe un nú mero finito que el ruido de la señ al contaminada esté
de posibles coeficientes del filtro, lo suficientemente correlado con el ruido
mientras que con el filtro IIR, el nú mero de la fuente a la que tenemos acceso.
de incó gnitas, es decir, de valores de h(n) Usando, tal y como se explica en la ayuda
para todo n, es infinito. Vamos a de la funció n, el siguiente có digo,
considerar dos situaciones: podremos obtener un filtro de orden 'p'
con el que realizar una estimació n del
 Primero el caso en que no ruido aditivo de la señ al informació n,
aplicamos restricciones a la restando finalmente este a la señ al
solució n. Obtendremos que el contaminada.
filtro ó ptimo es, en general, no
causal, y por tanto, irrealizable: 
Filtro Wiener IIR no causal. % Calcula y devuelve los coeficientes de
 Posteriormente, aplicaremos la un filtro FIR por el método de
condició n de causalidad, y para % Wiener segú n la siguiente estructura:
ello forzaremos  h(n) a cero para %
valores de índice n negativos: % w = fWiener(x1,x2,p,N)
Filtro Wiener IIR causal. %
% Donde en 'w' se almacenan los
La funció n de transferencia del IIR en coeficientes del filtro FIR de Wiener. 'x1'
tiempo discreto es: % 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
Y del FIR es: 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 % Consideramos siempre muestras
frecuencial; en cambio, para el filtro reales, por lo que no tendremos en
causal, ú nicamente podremos cuenta
caracterizar el sistema en términos de % el conjugado de la matriz de
una factorizació n espectral. autocorrelació n.
% Cálculo de la autocorrelació n de 'x1' y
3. Programa en Matlab de la correlació n de 'x2' con
% 'x1'.
x1 = x1(1:N);
La siguiente funció n implementada en
x2 = x2(1:N);
MatLab se encarga de calcular los
autocorrx1 = xcorr(x1,'biased');
coeficientes de un filtro FIR segú n el
autocorrx1x2 = xcorr(x2,x1,'biased');
método de Wiener. Una utilidad puede
% Cálculo de la matriz de Wiener y del
ser la cancelación de ruido donde,
vector de términos independientes.
teniendo acceso a la fuente de ruido,
vWiener =
podemos conseguir el filtrado de la señ al
autocorrx1(ceil(length(autocorrx1)/2):c
contaminada, donde es imprescindible
eil(length(autocorrx1)/2)+p-1);

3
Escuela Superior Politécnica de Chimborazo Ing. Electrónica Telecomunicaciones y Redes

mWiener = toeplitz(vWiener); ecuació n. El operador "\" resuelve la


vWiener = ecuació n de mínimos cuadrados. Es
autocorrx1x2(ceil(length(autocorrx1x2) mucho má s conveniente que calcular
/2):ceil(length(autocorrx1x2)/2)+p-1);
vWiener = vWiener'; , ya que nadie nos asegura que la
% Obtenció n de los pará metros del filtro matriz de autocorrelació n tenga inversa.
de Wiener.
w = inv(mWiener)*vWiener;
r=xcorr(x);
R=toeplitz(r(N:N+P-1));
Generaremos un filtro de orden 15.
ptemp=xcorr(x,d);
P=15; p=ptemp(N:N+P-1);

La señ al deseada (señ al de referencia) es w=R\p


una sinusoide de frecuencia 0.45 y 200
muestras. w=

0.1208
N=200; 0.1070
k=1:N; 0.0905
w0=0.45; 0.0416
d=sin(w0*k)'; %Senal deseada -0.0104
-0.0574
La señ al a tratar es la señ al deseada con -0.0774
un ruido blanco de distribució n normal, -0.0922
varianza 1. -0.0831
-0.0703
-0.0269
eps=1; 0.0172
n=eps*randn(N,1); 0.0613
x=d+n; 0.0723
0.0783
plot(x,'r');
%hold on; Estos son los coeficientes que mejor
%plot(d) filtran el ruido de la señ al . Obviamente,
%hold off; la respuesta que te dará es diferente, ya
pause; 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=filter(w,1,x);

%plot(x,'r');
Calculamos la matriz R y el vector p y le %hold on;
decimos a Matlab que resuelva w de la plot(xrec);

4
Escuela Superior Politécnica de Chimborazo Ing. Electrónica Telecomunicaciones y Redes

hold on; hold on;


plot(d,'g'); plot(Xrec);
hold off; hold off;

No está mal, compará ndolo con la señ al Prueba variaciones de los pará metros de
original. Para entender el tipo de filtrado la señ al y del filtro y describe có mo
que realiza el filtro de Wiener, vamos a cambian los efectos del filtrado: prueba
ver la respuesta frecuencial del filtro diferentes ó rdenes (P=6, 50 y 200),
frente al espectro de la señ al que hemos diferentes nú meros de muestras (N=25 y
recibido: 1000), diferentes frecuencias (w0=0.2 y
1.0) y diferentes varianzas (eps=0.25 y
X=abs(fft(x,1024)); 5).
W=abs(fft(w,1024));
Comprueba el efecto de añ adir un offset
plot(X./max(X)); de 0.5 al ruido.
hold on;
plot(W./max(W),'r'); eps=1;
hold off; n=eps*randn(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, vemos que realmente el filtro ha
hecho un buen trabajo.

D=abs(fft(d,1024));
Xrec=abs(fft(xrec,1024));

plot(D,'g');

5
Escuela Superior Politécnica de Chimborazo Ing. Electrónica Telecomunicaciones y Redes

 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

 http://www.dma.fi.upm.es/doce
ncia/cursosanteriores/02-
03/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
4. Conclusiones  http://physionet.cps.unizar.es/~
eduardo/docencia/tds/librohtml
 En tecnología digital el diseñ o /adapt1.htm
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

You might also like