Вы находитесь на странице: 1из 32

EFECTO DE UN

SLI
SOBRE LA ENTRADA

FILTROS DIGITALES
(RECORDANDO)
MODELADO DE SISTEMAS
EN TIEMPO CONTINUO
Generalizacin para sistemas continuos

Ecuacin diferencial para un SLI: en orden descendente

Laplace: en orden descendente

Fourier: en orden descendente ( S = jw )


MODELADO DE SISTEMAS
EN TIEMPO DISCRETO
GENERALIZACIN PARA SISTEMAS DISCRETOS:

Asumiendo a(1) = 1

Ecuacin en diferencias para un SLI.


Salida = f ( entradas actual y pasadas , salidas pasadas )

PERO ..

Qu efecto produce un SLI sobre una entrada X[n] ?


Para responder, hagamos el siguiente ejercicio:

Ejercicio: Encuentre la seal de salida de los SLIs (a) y (b).


Utilizar como entrada una seal sinusoidal de 3 Hz con ruido

Seal + 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];
RESOLUCIN:
Seal + 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];
clear all Fs = 100;
close all t = 0:1/Fs:1;
Fs = 100;
x = sin(2*pi*t*3)+.25*rand*sin(2*pi*t*40); % seal + ruido
t = 0:1/Fs:1; plot(t,x)
x = sin(2*pi*t*3)+.25*rand*sin(2*pi*t*40); % seal + ruido
plot(t,x) % condiciones iniciales para el lazo de abajo
y(1)=x(1);
y(1)=x(1); % condicin inicial para el lazo de abajo y(2)=x(2);
for i=2:length(t)
y(i)=0.9*y(i-1)+0.1*x(i);
for i=3:length(t)
end y(i)=0.9*y(i-1)+0.05*x(i)+0.05*x(i-1);
end
plot(t,x) plot(t,x,t,y) % comparacin de entrada y salida
hold on
plot(t,y) % comparacin de entrada y salida
%Coinciden en los dos primeros valores:
%Coinciden en el primer valor:
Qu efecto produce un SLI sobre una entrada X[n] ?

Respuesta:
El SLI est suavizando a la entrada.
Entonces:
El SLI est actuando como un filtro digital .
GENERALIZACIN DE UN SISTEMA DISCRETO VISTO COMO FILTRO DIGITAL:

Asumiendo a(1) = 1 Salida = f ( entradas actual y pasadas , salidas pasadas )

Clculo de la salida, asumiendo condiciones iniciales = 0:

En matlab, esto es computado por la funcin FILTER


Representaciones grficas:

TRABAJA SOBRE LA FORMA DIRECTA TRANSPUESTA II:


LA FUNCIN FILTER: para evitar los clculos anteriores

TRABAJA SOBRE LA FORMA DIRECTA TRANSPUESTA II:

A = [a1 a2 ... an]; B = [b1 b2 ... bn] FILTER:


Y = filter (B, A, X) Dados A, B y X:
Y = filter (B, A, X, C.I) Obtiene la salida Y
LA FUNCIN FILTER: detalles de cmo trabaja?

A = [a1 a2 ... an]; B = [b1 b2 ... bn] FILTER:


Y = filter (B, A, X) Dados A, B y X:
Y = filter (B, A, X, C.I) Obtiene la salida Y
VISIN GLOBAL DE FILTROS DIGITALES CON MATLAB

Tanto los filtro FIR como IIR, pueden ser diseados en tres fases:
Fase 1: determinacin del orden del filtro requerido segn
condiciones de diseo (rizados, frecuencias de corte, etc).
Fase 2: determinacin de los coeficientes del filtro (funciones segn
el filtro a utilizar (yulewalk, remez, butter, etc)).
Fase 3: aplicacin de los parmetros anteriores al clculo de la salida
del filtro (funciones filter y filfilt).

- En esta vez solo veremos el diseo de filtros digitales desde la fase


2 asumiendo conocido el orden del filtro.
- En filtros IIR analgicos: s veremos desde la fase 1.
FUNCIONES DE MATLAB
PARA EL DISEO DE FILTROS IIR

IIR:
a) Filtro IIR digital (solo desde fase 2):
Fase 1: se conoce ya el orden del filtro (n)
Fase 2: clculo de los coeficientes: utilizar la siguiente instruccin:
[b,a] = yulewalk(n,f,m); % YuleWalker IIR Filter
Fase 3: salida del filtro utilizando los coeficientes calculados anteriormente:
x_filt=filter(b,a,x); % x: la seal a filtrar ; b,a: los coeficientes del filtro

b) Filtros IIR analgicos (desde fase 1):


Fase 1: El orden del filtro se calculara as segn el tipo de filtro a utilizar:
DISEO DE FILTROS IIR digitales

Clculo de coeficientes:
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)
Cul es la respuesta en frecuencia del filtro obtenido??? :
FREQZ:
Da la respuesta en frecuencia evaluada en N puntos (defecto:512)
equiespaciados de la mitad superior del crculo unidad
Fs: frec. muestreo
Freqz (B, A, N, Fs): Grafica el (mdulo y la fase) vs frecuencia
Ejercicio:

Disee un filtro multibanda con yulewalk y


grafique la respuesta de frecuencia deseada y
real.
Resolucin:

Disee 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


Diagrama de Bode:

% Obs: respuesta en mdulo: Filtro multibanda


% Obs: respuesta en fase: No Lineal
FILTROS IIR ANALGICOS:

CON FASE 1:

SIN FASE 1:
% Example: sin fase 1: %Chebyshev Type I
% Plot the frequency response curves [b,a] = cheby1(n,rp,wn); % Determine filter coefficients
% (in db) obtained from [h,f] = freqz(b,a,N,fs); % Determine filter spectrum
% an 8th-order lowpass filter using the Butterworth, subplot(2,2,2);
%Chebyshev Type I and II, and h = 20*log10(abs(h)); % Convert to db
% elliptic filters. Use a cutoff frequency of 200 Hz and semilogx(f,h,'k'); % Plot on semilog scale
% assume a sampling frequency %axis([100 1000 -80 10]); % Adjust axis for better visibility
% of 2 kHz. For all filters, the passband ripple should xlabel('Frequency (Hz)'); ylabel('X(f)(db)');
% be less than 3 db title('Chebyshev I');
% and the minimum stopband attenuation should be 60 db. %

% Frequency response of four 8th-order lowpass filters % Chebyshev Type II


% [b,a] = cheby2(n,rs,wn); % Determine filter coefficients
N = 256; % Spectrum number of points [h,f] = freqz(b,a,N,fs); % Determine filter spectrum
fs = 2000; % Sampling filter subplot(2,2,3);
n = 8; % Filter order h = 20*log10(abs(h)); % Convert to db
wn = 200/fs/2; % Filter cutoff frequency semilogx(f,h,'k'); % Plot on semilog scale
rp = 3; % Maximum passband ripple in db %axis([100 1000 -80 10]); % Adjust axis for better visi-
rs = 60; % Stopband attenuation in db % bility
% xlabel('Frequency (Hz)'); ylabel('X(f)(db)');
% title('Chebyshev II');
%Butterworth % Elliptic
[b,a] = butter(n,wn); % Determine filter coefficients [b,a] = ellip(n,rp,rs,wn); % Determine filter coefficients
[h,f] = freqz(b,a,N,fs); % Determine filter spectrum [h,f] = freqz(b,a,N,fs); % Determine filter spectrum
subplot(2,2,1); subplot(2,2,4);
h = 20*log10(abs(h)); % Convert to db h = 20*log10(abs(h)); % Convert to db
semilogx(f,h,'k'); % Plot on semilog scale semilogx(f,h,'k'); % Plot on semilog scale
%axis([100 1000 -80 10]); % Adjust axis for better visi- %axis([100 1000 -80 10]); % Adjust axis for better visi-
% bility % bility
xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); xlabel('Frequency (Hz)'); ylabel('X(f)(db)');
title('Butterworth'); title('Elliptic');
%
Ejemplo de filtros analgicos:
Ver ppt adicional sobre diseo de filtros
FUNCIONES DE MATLAB
PARA EL DISEO DE FILTROS FIR

FIR: Ventaja: son de fase lineal. Desventaja: requieren orden MAYOR que los IIR

Filtro digital (solo desde fase 2):


Fase 1: se conoce ya el orden del filtro (n)
Fase 2: clculo de los coeficientes: utilizar las siguientes posiblidades segn 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 seal a filtrar ; b,a=1: los coeficientes del filtro


EJEMPLO FILTROS FIR: usando FIR1

% Disee 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); % diseo 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');
DISEO 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')
OTRAS FUNCIONES DE MATLAB PARA FILTROS FIR
Ventaja: son de fase lineal. Desventaja: requieren orden MAYOR que los IIR

Clculo de coeficientes:

FASE 1
COMPARACIN: 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); % YuleWalker 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(Comparacin entre IIR y FIR del mismo orden')


legend('ideal','IIR','FIR')

%CONCLUSIN:

%FIR requieren orden MAYOR que los IIR


EJERCICIOS (I):

1. Crear una seal constituida por una chirp de frecuencias


(0-500 Hz) (en 2 seg), graficarla tanto en el tiempo como
en frecuencia.
Filtrar de modo que solamente se permita el paso a la
mitad baja de las frecuencias.
Repetir de modo que se permita solamente el paso de la
segunda mitad.
Repetir de modo que solo pasen las frecuencias entre
200 y 300 Hz.
2. Utilizar filtros para las seales bat y handel
SEAL CHIRP: (ver help chirp)
% 2 secs de chirp muestreada a 1kHz % 2 secs de chirp muestreada a 1kHz
% Inicie en DC y alcance 150Hz en t=1sec % Inicie en 100 Hz y alcance 200Hz en t=1sec
t=0:0.001:2; t=0:0.001:2;
y=chirp(t,0,1,150); figure; plot(t,y)
y=chirp(t,100,1,200); figure; plot(t,y)
Figure; specgram(y,256,1E3,256,250); figure; specgram(y,128,1E3,128,120);
SEAL murcilago:
% seal de murcilago: % load handel
% grabada con una frecuencia de muestreo de 230.4 kHz % sound(y,Fs)
%
close all;
clear all; % t=(0:length(y)-1)/Fs;
% plot(t,y)
load bat
sound(bat,23400)
t0=linspace(0,2500/2304,2500);
plot(t0,bat); xlabel('Time [ms]');
EJERCICIOS (II):

Estudiar el efecto del eco y decir si es o no factible eliminarlo


utilizando filtros.

Procedimiento:
- Comparar el espectro de potencias de las dos seales.
- Hacer un ecualizador de modo que el espectro de
potencias de la seal con eco se aproxime al espectro de
potencias de la seal sin eco.
- Se pudo quitar el eco?
TRABAJOS BIMESTRALES:

Realizar filtros FIR sin utilizar las funciones de Matlab (Remez)


Realizar filtros IIR sin utilizar las funciones de Matlab (Yule-Walker)
Efectos en tiempo real (I):
- Hablar por el micrfono y generar eco por los altavoces

Efectos en tiempo real (II):


- Hablar por el micrfono y distorsionar el sonido en los altavoces

Eliminacin de eco:
- Poner eco y luego quitarlo.
- Grabar sonido en una habitacin vaca: quitar eco.

Вам также может понравиться