1. Procesamiento de señales, imágenes y visión artificial con MatLab “ Quien no se resuelve a cultivar el hábito de pensar, se pierde el mayor placer de la vida” Thomas A. Edison
2. EFECTO DE UN SLI SOBRE LA ENTRADA FILTROS DIGITALES
3. GENERALIZACIÓN PARA SISTEMAS DISCRETOS: Asumiendo a(1) = 1 Ecuación en diferencias para un SLI . Salida = f ( entradas actual y pasadas , salidas pasadas ) Qué efecto produce un SLI sobre una entrada X[n] ?
4. Ejercicio: Encuentre la señal de salida de los SLI’s (a) y (b). Utilizar como entrada una señal sinusoidal de 3 Hz con ruido Señal + ruido a) y[n]=0.9*y[n-1]+0.1*x[n]; b) y [n] =0.9*y [n-1] +0.05*x [n] +0.05*x [n-1] ; Para responder, hagamos el siguiente ejercicio: Como observamos, la salida del Sistema, es decir la respuesta del Mismo depende directamente De la señal de entrada
5. EN LAS SIGUIENTES DIAPOSITIVAS SE PRESENTA LA SOLUCION AL PROBLEMA PLANTEADO Señal + ruido
9. CONCLUSION: Los anteriores SLI están “suavizando” a la entrada. Entonces: El SLI está actuando como un filtro digital …. Para tener un filtro digital, solo se requiere de los coeficientes.
10. GENERALIZACIÓN DE UN SISTEMA DISCRETO VISTO COMO FILTRO DIGITAL: Asumiendo a(1) = 1 Salida = f ( entradas actual y pasadas , salidas pasadas ) Cálculo de la salida, asumiendo condiciones iniciales = 0: En matlab, esto es computado por la función FILTER
11. LA FUNCIÓN FILTER: hace la función del lazo “ f or” que vimos en la resolución de los problemas antes planteados. Si se desea filtrar la señal X a través de un filtro de coeficientes A y B, se utiliza la función FILTER. A la salida se tiene la señal filtrada Y: A = [a1 a2 ... an]; B = [b1 b2 ... bn] Y = filter (B, A, X) Y = filter (B, A, X, C.I ) FILTER: Dados A, B y X: Obtiene la salida Y
12.
13. 2. Filtros analógicos: tenemos filtros a) Máximamente planos o sin rizados (Butterworth), b) Con rizado en la banda de paso (Chevyshev I), c) Con rizado en la banda de supresión(Chevyshev II), d) Con rizado tanto en la banda de paso como en la de supresión (Elíptico).
14.
15. Obtiene los coef. A y B al resolver las ecuaciones modificadas de Yule-Walker n: orden del filtro F: vector [fo f1 f2 ... Fmax] / Fmax; Fmax = fs / 2 M: vector [mo m1 m2 ... m] (ganancia) Cálculo de coeficientes: DISEÑO DE FILTROS IIR digitales Es importante recordar que los vectores M y F deben tener la misma longitud
16. Cuál es la respuesta en frecuencia real del filtro obtenido??? : FREQZ: Da la respuesta en frecuencia evaluada en N puntos (defecto:512) equiespaciados de la mitad superior del círculo unidad Fs: frec. muestreo Freqz (B, A, N, Fs): Grafica el (módulo y la fase) vs frecuencia
17. Diseñe un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real. Ejercicio:
18. Diseñe un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real. m = [0 0 1 1 0 0 1 1 0 0]; f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1]; [b,a] = yulewalk(10,f,m); [h,w] = freqz(b,a,128); plot(f,m,w/pi,abs(h)) title('Respuestas ideal y real (magnitud: escala lineal)') Figure % Respuesta en frecuencia: % Diagrama de Bode % (respuesta en magnitud y en fase): %ver respuesta en frecuencia en 128 puntos freqz(b,a,128); %Obs: la frec. Está normalizada title(‘Diagrama de Bode(magnitud: escala en dB)') % Obs: respuesta en fase: No Lineal Resolución: Es importante no olvidar que, en este par de vectores solo es necesario indicar los puntos críticos de la señal que filtaremos
19. Diagrama de Bode: % Obs: respuesta en módulo: Filtro multibanda % Obs: respuesta en fase: No Lineal
24. Resultados: Grafico 1 Grafico 2 Primer tono Grafico 2 segundo tono Grafico 2 tercer tono
25. FIR: Filtro digital (solo desde fase 2): Fase 1: se conoce ya el orden del filtro (n) Fase 2: cálculo de los coeficientes: utilizar las siguientes posiblidades según el caso: b = fir1 (n, wn, type, ventana); % n = orden del filtro; wn= vector de frecuencias normalizado, type= high (pasa alta), stop (elimina banda) % ventana = blackman, hamming, hanning, etc) b = fir2 (n, f, A, ventana); % n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias b = remez (n, f, A); % CASI SIMILAR AL FIR2 % n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias Fase 3: salida del filtro utilizando el coeficiente calculado anteriormente: x_filt=filter(b, 1 ,x); % x: la señal a filtrar ; b, a=1 : los coeficientes del filtro FILTROS DIGITALES TIPO FIR: Ventaja : son de fase lineal. Desventaja : requieren orden MAYOR que los IIR
26. % Diseñe un filtro pasa banda entre 5 y 15 Hz. % Asuma una frecuencia de muestreo de 100 Hz. % Orden del filtro = 128 % clear all; close all; fs = 100; % frecuencia de muestreo Fmax = fs/2; order = 128; % Orden del filtro wn = [5 15]/ Fmax; % vector de ftrecuencias b = fir1 (order,wn); % diseño del filtro FIR, % Respuesta en frecuencia: % Diagrama de Bode freqz(b,1,512,100); % Plot modulo de h: [h,freq] = freqz(b,1,512,100); figure plot(freq,abs(h),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f)'); figure plot(freq,20*log10(abs(h)),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f) en dB'); EJEMPLO FILTROS FIR: usando FIR1
27. DISEÑO DE UN FILTRO FIR (USANDO FIR2) DE ORDEN 12 Y SU RESPUESTA EN FRECUENCIA % EJEMPLO FILTROS FIR: usando FIR2 close all; clear all; n = 12; % orden f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia m = [0 0 1 1 0 0]; b1 = fir2 (n,f,m); % FIR rectangular window filter h1 = freqz(b1,1,256); plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title('FIR utilizando FIR2') legend('ideal','FIR') En este tipo de filtros es necesario recordar que, mientras mayor es el orden del filtro mejor calidad tendrá, es decir, mas vertical será la caída, pero no olvidar que eso requiere de mejor hardware
28. OTRAS FUNCIONES DE MATLAB PARA FILTROS FIR Cálculo de coeficientes: Ventaja : son de fase lineal. Desventaja : requieren orden MAYOR que los IIR FASE 1
29. COMPARACIÓN: FILTROS IIR (YULEWALK) Y FIR (FIR2) Y SU RESPUESTA EN FRECUENCIA close all; clear all; n = 12; % orden f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia m = [0 0 1 1 0 0]; [b,a] = yulewalk (n,f,m); % Yule–Walker IIR Filter h = freqz(b,a,256); b1 = fir2 (n,f,m); % FIR rectangular window filter h1 = freqz(b1,1,256); plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h),'--b'); % Plot: Yule-Walker filter hold on plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title(‘Comparación entre IIR y FIR del mismo orden') legend('ideal','IIR','FIR') %CONCLUSIÓN: %FIR requieren orden MAYOR que los IIR
30.
31.
32.
33. CON FASE 1: incluye la determinación del orden del filtro SIN FASE 1: se supone ya conocido el orden del filtro FUNCIONES DE MATLAB PARA EL DISEÑO DE FILTROS ANALÓGICOS
34. % Example: sin fase 1: % Plot the frequency response curves % (in db) obtained from % an 8th-order lowpass filter using the Butterworth, %Chebyshev Type I and II, and % elliptic filters. Use a cutoff frequency of 200 Hz and % assume a sampling frequency % of 2 kHz. For all filters, the passband ripple should % be less than 3 db % and the minimum stopband attenuation should be 60 db. % Frequency response of four 8th-order lowpass filters % N = 256; % Spectrum number of points fs = 2000; % Sampling filter n = 8; % Filter order wn = 200/fs/2; % Filter cutoff frequency rp = 3; % Maximum passband ripple in db rs = 60; % Stopband attenuation in db % % %Butterworth [b,a] = butter(n,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,1); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi- % bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Butterworth'); % %Chebyshev Type I [b,a] = cheby1(n,rp,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,2); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visibility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Chebyshev I'); % % Chebyshev Type II [b,a] = cheby2(n,rs,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,3); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi- % bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Chebyshev II'); % Elliptic [b,a] = ellip(n,rp,rs,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,4); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi- % bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Elliptic');
35. Ejemplo de filtros analógicos: Ver ppt adicional sobre diseño de filtros