filtro wiener

15
FILTRO WIENER

Upload: sofia-asadovay

Post on 30-Jul-2015

1.005 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Filtro wiener

FILTRO WIENER

Page 2: Filtro wiener

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.

Los filtros adaptativos hacen uso de los datos de entrada para aprender los datos estadísticos de la señal.

Page 3: Filtro wiener

Filtro de Wiener

Consiste en una señal de entrada, f(k), una respuesta deseada, d(k), y un filtro lineal de respuesta impulsional h*(k).

Page 4: Filtro wiener

Características:

El objetivo del filtrado de Wiener es determinar la respuesta impulsional de forma que el error sea, en un sentido estadístico, "lo más pequeño posible".

La respuesta impulsiva del filtro de Wiener se obtiene encontrando una expresión para el error cuadrático medio y minimizándola con respecto a la respuesta impulsiva.

Page 5: Filtro wiener

La diferencia entre la señal de salida y la

señal deseada es el error de la estimación, e(k), así:

A parir de la ecuación anterior se obtiene el valor del mínimo MSE (Mean Square Error):

Siendo Φmm la auto correlación y Φmn la correlación cruzada de dos señales m y n.

Page 6: Filtro wiener

TiposExisten diversas estructuras para el filtro de Wiener. Filtro IIR no causalFiltro IIR causal. Filtro FIR.

Filtro de Wiener  IIRNuestro propósito es diseñar un filtro h(n) que produzca una salida:

y(n) = x(n) * h(n)

Tan cercana como sea posible a la respuesta deseada d(n).

Page 7: Filtro wiener

Vamos a considerar dos situaciones:

Cuando no se aplican restricciones a la solución, obtendremos que el filtro óptimo es, en general, no causal, y por tanto, irrealizable: Filtro IIR no causal

Cuando se aplica la condición de causalidad, y para ello forzamos  h(n) a cero para valores de índice n negativos: Filtro IIR causal.

Page 8: Filtro wiener

La función de transferencia del IIR en

tiempo discreto es:

Y del FIR es:

Page 9: Filtro wiener

Programación 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 cancelación de ruido donde, teniendo acceso a la fuente de ruido, podemos conseguir el filtrado de la señal contaminada, donde es imprescindible que el ruido de la señal contaminada esté lo suficientemente correlado con el ruido de la fuente a la que tenemos acceso.

Page 10: Filtro wiener

El siguiente código calcula y devuelve los coeficientes de un filtro FIR por el

método de Wiener:

% w = fWiener(x1,x2,p,N)

Donde en 'w' se almacenan los coeficientes del filtro FIR '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.

function [w] = fWiener(x1,x2,p,N)

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');

Page 11: Filtro wiener

Cálculo de la matriz de Wiener y del vector de términos independientes.

vWiener = autocorrx1(ceil(length(autocorrx1)/2):ceil(length(autocorrx1)/2)+p-1);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;k=1:N;w0=0.45;d=sin(w0*k)'; %Senal deseada

Page 12: Filtro wiener

La señal a tratar es la señal deseada con un ruido blanco de distribución

normal, varianza 1.

eps=1;n=eps*randn(N,1);x=d+n;

plot(x,'r');%hold on;%plot(d)%hold off;pause;

Page 13: Filtro wiener

Calculamos la matriz R y el vector p .

r=xcorr(x);R=toeplitz(r(N:N+P-1));

ptemp=xcorr(x,d);p=ptemp(N:N+P-1);

w=R\p

Los valores que se almacenan en w 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.

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');%hold on;plot(xrec);hold on;plot(d,'g');hold off;

Page 14: Filtro wiener

Como podemos observar en la siguiente figura, ya filtrada por el

método de Wiener y comparando con la señal original, a disminuido considerablemente el ruido.

Page 15: Filtro wiener

Conclusiones

El objetivo del filtro Wiener es determinar la respuesta impulsional de forma que el error sea lo más pequeño posible.

El filtro se basa en el principio de ortogonalidad de datos que consiste en derivar e igualar a cero la función.

En tecnología digital el diseño mediante filtros FIR, se implementa en las aplicaciones de procesado de señales, desde receptores de comunicaciones, codificadores de fuente, etc. Todos los sistemas incluyen de un modo u otro un filtro de Wiener.