Upload
melina-andrea-ziccor
View
93
Download
4
Embed Size (px)
DESCRIPTION
filtor, adaptivo
Citation preview
Dimel Arturo Contreras Martnez
FILTRO ADAPTATIVO
Es un dispositivo que intenta modelar la relacin entre seales en tiempo real de forma
iterativa.
Se diferencia de los filtros digitales comunes tipo IIR o FIR, en que stos tienen
coeficientes invariantes en el tiempo, mientras que un adaptativo puede cambiar su forma
de comportarse, es decir pueden cambiar sus coeficientes de acuerdo con un algoritmo
adaptativo. De hecho no se saben los coeficientes del filtro cuando se disea, stos
coeficientes son calculados cuando el filtro se implementa y se reajustan automticamente
en cada iteracin mientras dura su fase de aprendizaje.
El hecho de que estos filtros no sean invariantes temporales y que tampoco sean lineales
hace que su estudio sea ms complejo que el de un filtro digital, ya que no se pueden
aplicar, salvo en un par de excepciones, las transformaciones en frecuencia, dominio Z, etc.
CODIGO MATLAB PARA IMPLEMENTAR UN FILTRO ADAPTATIVO
clc; clear; close all nm=500 % Iteraciones %x = randn(1,nm); % Entrada del filtro x=cos(2*pi*1*(0:1/1000:3)); %entrada del filtro b = fir1(3,0.5); % Sistema FIR a identificar %n = 0.1*randn(1,nm); % Se?de ruido en la observaci? %d = filter(b,1,x)+n; % Se?deseada d=cos(2*pi*1*(0:1/1000:3)); mu = 0.08; % Paso del algoritmo LMS h = adaptfilt.lms(3,mu); [y,e] = filter(h,x,d); subplot(2,1,1); plot(1:length(d),[d;y;e]); title('Identificacion de un sistema FIR'); legend('Deseado','Salidat','Error'); xlabel('Tiempo'); ylabel('Valor de la se'); subplot(2,1,2); stem(h.Coefficients); legend('Actual','Estimado'); xlabel('Coeficiente #'); ylabel('Valor Coeficiente'); grid on;
figure
Dimel Arturo Contreras Martnez subplot 211 plot(x); subplot 212 plot(d);
0 500 1000 1500 2000 2500 3000 3500-2
-1
0
1
2Identificacion de un sistema FIR
Tiempo
Valo
r de la s
e
Deseado
Salidat
Error
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 30
0.2
0.4
0.6
0.8
Coeficiente #
Valo
r C
oeficie
nte
Actual
Dimel Arturo Contreras Martnez
Filtro de Wiener
En procesamiento de seales, el filtro de Wiener es un filtro propuesto por Norbert Wiener
en la dcada de 1940 y publicado en 1949. Su propsito es, utilizando mtodos estadsticos,
reducir el ruido presente en la seal de entrada de tal modo que la seal de salida del filtro
se aproxime lo ms posible (en el sentido cuadrtico medio) a una seal deseada (sin ruido).
El equivalente en tiempo discreto del trabajo de Wiener fue derivado independientemente
por Kolmogorov y publicado en 1941. Por esto, la teora es a veces referida como teora de
filtrado de Wiener-Kolmogorov.
PROGRAMA PARA IMPLEMENTAR UN FILTRO DE WIENER
function [e,y,h]=ale(d,mu,P,D); % % d ... seal deseada % mu .. paso de adaptacin % P ... Orden del filtro de wiener % D ... retardo del ALE % % Salidas % % e ... seal error % y ... estimacin seal deseada % h ... filtro de wiener % c=zeros(D+1,1); c(D+1)=1; x=filter(c,1,d); h=zeros(P,1);
0 500 1000 1500 2000 2500 3000 3500-1
-0.5
0
0.5
1
0 500 1000 1500 2000 2500 3000 3500-1
-0.5
0
0.5
1
Dimel Arturo Contreras Martnez %LMS
x=[zeros(P-1,1);x]; M=length(x); N=P; e=zeros(M-N+1,1); y=zeros(M-N+1,1); X=flipud(x(1:P)); y(1)=h'*X; e(1) = d(1) - y(1); h= h + mu*conj(e(1))*X; if M>1 for k=2:M-N+1; X=flipud(x(k:k+P-1)); y(k)=h'*X; e(k) = d(k) - y(k); h = h + mu*conj(e(k))*X; end; end;