informe n3 dsp

73
PRACTICA Nº3. FILTROS DIGITALES FILTROS CON RESPUESTA IMPULSIONAL FINITA- FILTROS CON RESPUESTA IMPULSIONAL INFINITA PRESENTADO POR: JHONATAN CASTRO CAMACHO COD: 2006134947 LINA MARIA CHARRY ROA COD: 2006134989 DIANA MARCELA ROJAS PARRA COD: 2006135917 TRABAJO PRESENTADO AL PROFESOR: VLADIMIR MOSQUERA CERQUERA, Ms. C. UNIVERSIDAD SURCOLOMBIANA FACULTAD DE INGENIERIA PROGRAMA DE INGENIERIA ELECTRONICA PROCESAMIENTO DIGITAL DE SEÑALES

Upload: spenuela

Post on 12-Apr-2015

69 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Informe N3 DSP

PRACTICA Nº3. FILTROS DIGITALES

FILTROS CON RESPUESTA IMPULSIONAL FINITA- FILTROS CON RESPUESTA IMPULSIONAL INFINITA

PRESENTADO POR:

JHONATAN CASTRO CAMACHO

COD: 2006134947

LINA MARIA CHARRY ROA

COD: 2006134989

DIANA MARCELA ROJAS PARRA

COD: 2006135917

TRABAJO PRESENTADO AL PROFESOR:

VLADIMIR MOSQUERA CERQUERA, Ms. C.

UNIVERSIDAD SURCOLOMBIANA

FACULTAD DE INGENIERIA

PROGRAMA DE INGENIERIA ELECTRONICA

PROCESAMIENTO DIGITAL DE SEÑALES

NEIVA- HUILA

2010

PRACTICA Nº3. FILTROS DIGITALES

Page 2: Informe N3 DSP

FILTROS CON RESPUESTA IMPULSIONAL FINITA- FILTROS CON RESPUESTA IMPULSIONAL INFINITA

OBJETIVOS:

- Diseñar filtros digitales FIR utilizando las técnicas de Ventanas, Muestreo en Frecuencia y el algoritmo Min-Max, Remex.

- Diseñar filtros digitales IIR utilizando las técnicas de transformación bilineal, invarianza impulsional y el método de Prony (mínimos cuadrados + Padé).

- Implementar a partir de filtros paso bajo, filtros paso altos digitales.

- Efectuar un análisis comparativo de las respuestas en magnitud y fase de filtros digitales FIR e IIR.

PROCEDIMIENTO:

1. Señal de Prueba

1.1- 1.2 Obtenga una señal discreta x(n) como combinación lineal de varias ondas seno de distinta frecuencia de la forma:

x (n )=A0+A1 sen (W 1nT )+A2 cos (W 2nT )−A3 sen (W 3nT )

donde :W i=2π F i

El script que permite una adecuada visualización para la señal x(n) es el siguiente:

% Señal discreta de la forma:% x(n)= A0+ A1*sen(W1nT)+ A2*cos(W2nT)-A3*sen(W3nT)% x(n)= A0+ A1*sen(2*pi*F1*nT)+ A2*cos(2*pi*F2*nT)-A3*sen(2*pi*F3*nT) A0= input('Ingrese el valor del coeficiente A0 : ');A1= input('Ingrese el valor del coeficiente A1 : ');A2= input('Ingrese el valor del coeficiente A2 : ');A3= input('Ingrese el valor del coeficiente A3 : '); F1= input('Ingrese el valor de la frecuencia F1: ');F2= input('Ingrese el valor de la frecuencia F2: ');F3= input('Ingrese el valor de la frecuencia F3: '); T= 1/(10*F3); n=0:T:1/(T*F1); x= A0+ A1*sin(2*pi*F1*n*T)+ A2*cos(2*pi*F2*n*T)-A3*sin(2*pi*F3*n*T);plot(n,x)title('Señal de Prueba');

Page 3: Informe N3 DSP

xlabel('n');ylabel('x(n)');grid on

Al probar para distintos valores Ai y Wi, tenemos:

i ¿x1 (n )→A0=5 , A1=5 , A2=2.5 , A3=10 ,W 1=2π 10 ,W 2=2π 100 ,W 3=2π 1000

La grafica obtenida es:

ii¿ x2 (n )→A0=10 , A1=15 , A2=30 , A3=15 ,W 1=2π 100 ,W 2=2π 2000 ,W 3=2π 5000

La grafica obtenida es:

iii¿ x3 (n )→A0=100 , A1=30 , A2=30 , A3=150 ,W 1=2π 2500 ,W 2=2π 3500 ,W 3=2π 5000

Page 4: Informe N3 DSP

La grafica obtenida es:

1.3 – 1.4. Al implementar una función que permita visualizar la señal de prueba x(n), su Transformada de Fourier y su diagrama de frecuencias, tenemos:

% Señal discreta de la forma:% x(n)= A0+ A1*sen(W1nT)+ A2*cos(W2nT)-A3*sen(W3nT)% x(n)= A0+ A1*sen(2*pi*F1*nT)+ A2*cos(2*pi*F2*nT)-A3*sen(2*pi*F3*nT) A0= input('Ingrese el valor del coeficiente A0 : ');A1= input('Ingrese el valor del coeficiente A1 : ');A2= input('Ingrese el valor del coeficiente A2 : ');A3= input('Ingrese el valor del coeficiente A3 : '); F1= input('Ingrese el valor de la frecuencia F1: ');F2= input('Ingrese el valor de la frecuencia F2: ');F3= input('Ingrese el valor de la frecuencia F3: '); T= 1/(6*F3); n=0:T:1/(T*F1); x= A0+ A1*sin(2*pi*F1*n*T)+ A2*cos(2*pi*F2*n*T)-A3*sin(2*pi*F3*n*T);x_normal= x/max(abs(x));subplot(3,1,1)plot(n,x)title('Señal de Prueba');xlabel('n');ylabel('x(n)');grid on % Transformada de Fourieresp=abs(fft(x_normal));nm=length(esp);delta= 1/(T*nm);eje_frec=0:delta:(1/T)-delta;subplot(3,1,2)stem(eje_frec,esp);title('Transformada de Fourier de la señal');

Page 5: Informe N3 DSP

xlabel('Frecuencia en Hertz');ylabel('Amplitud');grid on % Diagrama de frecuencias mag_x=abs(ifft(x_normal)); %magnitud del espectro de xnm1=length(mag_x); %numero de muestrasdelta1=1/(T*nm1);eje_frec1=0:delta1:(1/T)-delta1; subplot(3,1,3)stem(eje_frec1,mag_x);title('Componentes Frecuenciales en el Dominio Temporal');xlabel('Frecuencia en Hertz');ylabel('Magnitud de los componentes frecuenciales');grid on Obteniendo:Para i)

Para ii)

Para iii)

Page 6: Informe N3 DSP

2. Filtros FIR2.1. Diseño por ventanas:2.1.1 A través del siguiente script es posible visualizar la respuesta de un filtro FIR pasabanda:

b=fir1(48,[0.35 0.65]);% Orden igual a 48 utilizando ventana Hammingfreqz(b,1,512)legend('Respuesta en frecuencia del Filtro obtenido');

Obteniendo la grafica:

2.1.2. Al implementar dos filtros tipo paso bajo para eliminar componentes con frecuencias superiores a 2000 Hz, tenemos:

Filtro 1: Utilizando una ventana de Kaiser

%Filtro 1fs=2*10e3;Wn=(2*pi*2e3)/fs;N=40;B = fir1(N,Wn,kaiser(N+1,4));freqz(B,1,512)

Page 7: Informe N3 DSP

Filtro 2: Utilizando ventana rectangular

%Filtro 2 fs=2*10e3; Wn=(2*pi*2e3)/fs;N=40;B = fir1(N,Wn);freqz(B,1,512)

2.1.3 Al agregar mejoras al script anterior con el fin de poder visualizar en una misma ventana la respuesta impulsional y los espectros de magnitud y fase de los filtros obtenidos, tenemos:

Para el Filtro 1:

fs=2*10e3;Wn=(2*pi*2e3)/fs;N=40;B = fir1(N,Wn,kaiser(N+1,4),'noscale');freqz(B,1,512)[H,W]=freqz(B,1,512); figure(2)subplot(3,1,1)plot(W/pi,abs(H),'r');grid;title('Espectro en tension') subplot(3,1,2)plot(W/pi,unwrap(angle(H)),'g');grid;title('Espectro de fase') subplot(3,1,3)[h,t] = impz(B,1);plot(t,h);grid;title('Respuesta al impulso')

Page 8: Informe N3 DSP

Obteniendo la siguiente grafica:

Para el filtro 2:

fs=2*10e3;

Wn=(2*pi*2e3)/fs;N=40;B = fir1(N,Wn);freqz(B,1,512)[H,W]=freqz(B,1,512); figure(2)subplot(3,1,1)plot(W/pi,abs(H),'r');grid;title('Espectro en tension') subplot(3,1,2) plot(W/pi,unwrap(angle(H)),'g');grid;title('Espectro de fase') subplot(3,1,3)[h,t] = impz(B,1);plot(t,h);grid;

Page 9: Informe N3 DSP

title('Respuesta al impulso')

2.1.4. Al realizar una medición de los anchos de los lóbulos principales para cada banda, tenemos:

Consignando dichos resultados en una tabla:

Filtro Magnitud BP

Magnitud BR

Magnitud BT

Ancho Lóbulo

BP

Ancho Lóbulo

BR

Ancho Lóbulo

BT1 1 0 Cambia 0,56 0,32 0,112 1 0 Cambia 0,54 0,3 0,16

Es posible afirmar con base a los resultados obtenidos que las condiciones de diseño se satisfacen y que se presentan buenos resultados en cuanto al ancho de la banda pasante para el filtro con ventana de Kaiser.

2.1.5 Al realizar un script que permita de alguna manera filtrar las señales de prueba del punto 1.2 utilizando los filtros anteriormente diseñados y además mostrando dicha señal antes y después del proceso de filtrado con su respectivo diagrama de frecuencia, tenemos:

Con el filtro 1:

Page 10: Informe N3 DSP

% Señal de pruebaA0=10;A1=15;A2=30; A3=15;f1=100;f2=2000; f3=5000; W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3; %Definimos los tiemposFm=6*f3;T=1/Fm; n=0:T:1/(T*f1); x = A0 + A1*sin(W1*n*T) + A2*cos(W2*n*T) - A3*sin(W3*n*T);x1 = filter(B,1,x); figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on

%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de s xnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de s nm=length(trans); %número de muestras delta=Fm/nm;eje_frec=0:delta:Fm-delta; figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de Fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de Fourier después de filtrar');grid onpause;

Page 11: Informe N3 DSP

Con el filtro 2:

% Señal de pruebaA0=10; A1=15; A2=30; A3=15; f1=100; f2=2000; f3=5000; W1=2*pi*f1; W2=2*pi*f2; W3=2*pi*f3;

%Definimos los tiemposFm=3*f3; Tm=1/Fm;

n=0:Tm:1/f1;

x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(B,1,x);

figure(3); subplot(2,1,1) plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on

%Transformada de Fourier xnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de s

xnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de s

nm=length(trans); %número de muestras delta=Fm/nm;eje_frec=0:delta:Fm-delta;

figure(4) subplot(2,1,1) stem(eje_frec,trans); axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2) stem(eje_frec,trans1); axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');

Page 12: Informe N3 DSP

grid on

2.1.6 Es posible afirmar que existen ciertas ventajas al trabajar con filtros FIR en cuanto a que su diseño se puede realizar con fase perfectamente lineal, son incondicionalmente estables y su implementación a través de hardware resulta ser sencilla.

De acuerdo a lo trabajado en el unto 2.1.4, es posible decir que:

- A medida que la longitud del filtro “M” se incrementa, el numero de ondulaciones también aumenta afectando el ancho de las mismas de manera decremental.

- La altura de las ondulaciones mayores permanece constante, sin importar la longitud que posea el filtro.

- El lóbulo principal se hace mas angosto a medida que M aumente, representando de esta forma una caída mas aguda.

Todo lo dicho anteriormente justifica de alguna manera que los resultados obtenidos si coinciden con la teoría de filtros FIR.

2.2. Diseño por muestreo en Frecuencia:

2.2.1 A través del siguiente script es posible visualizar la respuesta de un filtro FIR junto a la respuesta deseada en frecuencia:

f=[0 0.6 0.6 1]; m=[1 1 0 0]; N=30;b=fir2(N,f,m);[h,w]=freqz(b,1,128);plot(f,m,w/pi,abs(h));legend('Filtro ideal','Filtro obtenido')title('Comparación de la magnitud de la respuesta en frecuencia');xlabel('Frecuencia'); ylabel('Amplitud');

Page 13: Informe N3 DSP

La grafica obtenida es:

2.2.2-2.2.3 Utilizando el método de diseño por muestreo en frecuencia es posible implementar 2 filtros paso bajo para eliminar componentes de x(n) con frecuencias superiores a 2000 Hz, tenemos:

% Filtro 1 por el método de muestreo en frecuenciasfs=2*10e3;Wn=(2*pi*2e3)/fs;N=40;B = fir2(N,[0 0.4 0.4 0.6 0.6 1],[1 1 1 0 0 0]);

figure(1)freqz(B,1,512)[H,W]=freqz(B,1,512);title('Filtro por el metodo de diseño de muestreo en frecuencia')

% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1) plot(W/pi,abs(H)); grid;title('Espectro en tension')

subplot(3,1,2) plot(W/pi,unwrap(angle(H))); grid;title('Espectro de fase')

subplot(3,1,3)[h,t] = impz(B,1);stem(t,h);grid;title('Respuesta al impulso')

% Señal de pruebaA0=10;A1=15; A2=30; A3=15; f1=100; f2=2000; f3=5000; W1=2*pi*f1; W2=2*pi*f2; W3=2*pi*f3;

%Definimos los tiemposFm=3*f3; Tm=1/Fm;

n=0:Tm:1/f1;

x = A0 + A1*sin(W1*n) + A2*cos(W2*n) - A3*sin(W3*n);

Page 14: Informe N3 DSP

x1 = filter(B,1,x);

figure(3); subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on

%Transformada de fourier xnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de s

xnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de s

nm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;

figure(4) subplot(2,1,1)stem(eje_frec,trans); axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

Obteniendo las siguientes graficas:

Page 15: Informe N3 DSP

Para el filtro 2:

% Filtro 2

fs=2*10e3;Wn=(2*pi*2e3)/fs;N=20;B = fir2(N,[0 0.4 0.4 0.6 0.6 1],[1 1 1 0 0 0]);

figure(1)freqz(B,1,512)[H,W]=freqz(B,1,512);title('Filtro por el método de muestreo en frecuencias')

% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')

subplot(3,1,2)plot(W/pi,unwrap(angle(H))); grid;title('Espectro de fase')

subplot(3,1,3)[h,t] = impz(B,1);stem(t,h);grid;title('Respuesta al impulso')

% Señal de pruebaA0=10; A1=15; A2=30; A3=15; f1=100; f2=2000; f3=5000; W1=2*pi*f1; W2=2*pi*f2; W3=2*pi*f3;

%Definimos los tiemposFm=3*f3;Tm=1/Fm;

n=0:Tm:1/f1;

x = A0 + A1*sin(W1*n) + A2*cos(W2*n) - A3*sin(W3*n);x1 = filter(B,1,x);

figure(3); subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on

Page 16: Informe N3 DSP

%Transformada de fourier xnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de s

xnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de s

nm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;

figure(4)subplot(2,1,1)stem(eje_frec,trans); axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1); axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

Page 17: Informe N3 DSP

2.2.4-2.2.6

Filtro Magnitud BP

Magnitud BR

Magnitud BT

Ancho Lóbulo

BP

Ancho Lóbulo

BR

Ancho Lóbulo

BT1 60 15 20 0,72 0,1 0,152 80 18 22 0,72 0,1 0,15

Es posible decir que a través de los resultados obtenidos que el método de muestreo en frecuencia permite tomar muestras del espectro de un filtro y así aproximarlo mediante M muestras. Dicho procedimiento garantiza un error mínimo al aproximar un conjunto finito de frecuencias equiespaciadas.

2.3. Diseño por criterio de min-max

2.3.1 El siguiente script permite calcular la respuesta en frecuencia de un filtro pasabanda de orden N=17.

f=[0 0.3 0.4 0.6 0.7 1];a=[0 0 1 1 0 0];n=17;b=remez(n,f,a);

[h w]=freqz(b,1,152);

plot(f,a,w/pi,abs(h));legend('filtro deseado','filtro obtenido')xlabel('frecuencia');ylabel('amplitud')

Page 18: Informe N3 DSP

1.4

1.2

filtro deseado

filtro obtenido

1

0.8

0.6

0.4

0.2

00 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

2.3.2 Usando el método de diseño por criterio min-max, implementamos dos filtros pasabajo para eliminar los componentes de x(n) con frecuencias superiores a 2000Hz, mostrando las señales h(n) y H(w) así:

% Filtro 1 por el método de criterio de min max fs=2*10e3;Wn=(2*pi*2e3)/fs; N=40;B = firpm(N,[0 0.1 0.2 0.3 0.4 0.5 0.6 1],[1 1 1 1 0 0 0 0]);

figure(1)freqz(B,1,512)[H,W]=freqz(B,1,512);title('Filtro por el método de diseño por ventanas')

% Diagramas de fase, magnitud y respuesta el impulso figure(2)subplot(3,1,1) plot(W/pi,abs(H)); grid;title('Espectro en tension')

subplot(3,1,2) plot(W/pi,unwrap(angle(H))); grid;title('Espectro de fase')

subplot(3,1,3)[h,t] = impz(B,1);stem(t,h);grid;title('Respuesta al impulso')

% Señal de pruebaA0=10;

Page 19: Informe N3 DSP

A1=15; A2=30; A3=15; f1=100; f2=2000; f3=5000; W1=2*pi*f1; W2=2*pi*f2; W3=2*pi*f3;

%Definimos los tiemposFm=3*f3; Tm=1/Fm;

n=0:Tm:1/f1;

x = A0 + A1*sin(W1*n) + A2*cos(W2*n) - A3*sin(W3*n);x1 = filter(B,1,x);

figure(3); subplot(2,1,1) plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on

%Transformada de fourier xnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de s

xnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de s

nm=length(trans); %número de muestras delta=Fm/nm;eje_frec=0:delta:Fm-delta;

figure(4) subplot(2,1,1) stem(eje_frec,trans); axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

Page 20: Informe N3 DSP

% Filtro 2 por el método de criterio de min max fs=2*10e3;Wn=(2*pi*2e3)/fs; N=20;B = firpm(N,[0 0.1 0.2 0.3 0.4 0.5 0.6 1],[1 1 1 1 0 0 0 0]);

figure(1)freqz(B,1,512)[H,W]=freqz(B,1,512);title('Filtro por el metodo de criterio de min max')

% Diagramas de fase, magnitud y respuesta el impulso figure(2)subplot(3,1,1) plot(W/pi,abs(H)); grid;title('Espectro en tension')

subplot(3,1,2) plot(W/pi,unwrap(angle(H))); grid;title('Espectro de fase')

subplot(3,1,3)[h,t] = impz(B,1);stem(t,h);grid;

Page 21: Informe N3 DSP

title('Respuesta al impulso')

% Señal de pruebaA0=10; A1=15; A2=30; A3=15; f1=100; f2=2000; f3=5000; W1=2*pi*f1; W2=2*pi*f2; W3=2*pi*f3;

%Definimos los tiemposFm=3*f3;Tm=1/Fm;

n=0:Tm:1/f1;

x = A0 + A1*sin(W1*n) + A2*cos(W2*n) - A3*sin(W3*n);x1 = filter(B,1,x);

figure(3); subplot(2,1,1) plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on

%Transformada de fourier xnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de s

xnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de s

nm=length(trans); %número de muestras delta=Fm/nm;eje_frec=0:delta:Fm-delta;

figure(4) subplot(2,1,1) stem(eje_frec,trans); axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2) stem(eje_frec,trans1); axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

Page 22: Informe N3 DSP

2.3.3 Realizamos un script que nos permita visualizar en una misma ventana la respuesta impulsional, los espectros de tensión y fase y los resultados son:

Para el filtro 1:

Page 23: Informe N3 DSP

Pha

se (

deg

ree

s)M

agn

itud

e (

dB

)

Para el filtro 2:

2Espectro en tensión

1

00 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Espectro de fase0

-10

-20

0.5

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Respuesta al impulso

0

-0.50 2 4 6 8 10 12 14 16 18 20

2.3.4 Consignamos en la tabla que se muestra más adelante los datos más importantes de los anteriores filtros:

Filtro 1:

Filtro por el metodo de diseño por ventanas50

0

-50

-1000 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0

-500

-1000

-15000 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Page 24: Informe N3 DSP

Pha

se (

degr

ees)

Mag

nitu

de (

dB)

Filtro 2:

Filtro por el metodo de criterio de min max50

0

-50

-1000 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0

-200

-400

-600

-8000 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Page 25: Informe N3 DSP

Filtro Magnitud BP

Magnitud BR

Magnitud BT

Ancho Lóbulo

BP

Ancho Lóbulo

BR

Ancho Lóbulo

BT1 52 8 20 0,4 0,05 0,12 50 18 22 0,43 0,1 0

2.3.5 Aplicamos los filtros pasabajos anteriormente usados, mostrando la señal antes y después del filtrado así:

Para el filtro 1:

Para el filtro 2:

2.4 Comparación

Page 26: Informe N3 DSP

A continuación, presentamos un cuadro comparativo que relaciona las características de filtrado obtenidas a través de las distintas técnicas de diseño utilizadas en la implementación de filtros FIR:

Tipo Complejidad Teórica

Precisión en la

frec corte

OscilacionesBP BT BR

Linealidad fase

Dificultad computaciona

l

Ventanas

Media 6,2% 0 2 3 Buena Sencilla

Muestreo en frec

Poca 27% 0 2 2 Muy Buena Sencilla

Criterio min-max

Alta 50% 1 2 6 Regular Sencilla

Es posible decir que el diseño a través de la técnica de Ventanas consiste en multiplicar la IDFT infinita por una función denominada ventana que realiza un truncamiento que la hace finita. Cada ventana posee un determinado ancho de banda y una determinada característica de atenuación.

La técnica de muestreo en frecuencia, consiste en determinar la RF del filtro deseado y obtener la RMU como la transformada inversa de ésta. El filtro obtenido tendrá una respuesta idéntica en las frecuencias de muestreo. La cantidad de muestras influye claramente en la fidelidad de la respuesta y en la atenuación conseguida. Si se toman muestras en la banda de transición se aumenta la discriminación sacrificando la selectividad.

La técnica de criterio de min-max consiste en determinar los coeficientes del filtro de tal manera que el valor del error sea mínimo en las Bandas de Paso y Banda de Atenuacion.

Page 27: Informe N3 DSP

3. FILTROS IIR

3.1 Diseño por transformación bilineal

3.1.1 Usando el método de transformación bilineal, implementamos dos filtros pasa bajo para eliminar las componentes de x(n) con frecuencias superiores a 2000Hz, así:

% Filtro 1 por el metodo de transformacion bilinearfs=2*10e3;Wn=(2*pi*2e3)/fs;N=30;[b,a] = butter(N,Wn,'s');[bz,az] = bilinear(b,a,0.5);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de transformacion bilinear')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');

Page 28: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-3000

-2000

-1000

0

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-300

-200

-100

0

100

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de transformacion bilinear

grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

% Filtro 2 por el metodo de transformacion bilinearfs=2*10e3;Wn=(2*pi*2e3)/fs;N=10;[b,a] = butter(N,Wn,'s');[bz,az] = bilinear(b,a,0.5);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de transformacion bilinear')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')

Page 29: Informe N3 DSP

subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

Page 30: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1000

-500

0

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-300

-200

-100

0

100

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de transformacion bilinear

3.1.2 Realizamos una función en matlab para visualizar en una misma ventana la respuesta impulsional, los espectros de tensión y fase de los filtros obtenidos anteriormente:

Para el filtro 1 Para el filtro 2

Page 31: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

1

2Espectro en tension

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-20

-10

0Espectro de fase

0 10 20 30 40 50 60 70-0.5

0

0.5Respuesta al impulso

3.1.3 Medimos en los espectros de fase y tensión del numeral anterior, la magnitud y el ancho de los lóbulos principales de cada banda.

3.1.4 Implementamos en matlab las gráficas de las señales antes y después del filtrado, así:

Para el filtro 1 Para el filtro 2

3.1.5 Análisis: El criterio que utiliza la transformación lineal es obtener el filtro digital

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

1

2Espectro en tension

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

-40

-20

0Espectro de fase

0 50 100 150 200 250-0.5

0

0.5Respuesta al impulso

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba antes de filtrar

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba despues de filtrar

Page 32: Informe N3 DSP

integrando la ecuación diferencial correspondiente al filtro analógico y realizando una aproximación numérica de la misma. A altas frecuencias, la compresión no lineal produce que la función de transferencia resulte distorsionada cuando se traslada al dominio T, es decir hay un error por aproximación.

3.2 Diseño por el Método de Prony

3.2.1 Usando el método de prony, implementamos dos filtros pasa bajo para eliminar las componentes de x(n) con frecuencias superiores a 2000Hz, así:

% Filtro 1 por el metodo de Pronyfs=2*10e3;Wn=(2*pi*2e3)/fs;N=30;[b,a] = butter(N,Wn);h = filter(b,a,[1 zeros(1,25)]);[bz az] = prony(h,N,N);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de Prony')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);

Page 33: Informe N3 DSP

subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-3000

-2000

-1000

0

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-30

-20

-10

0

10

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de Prony

% Filtro 2 por el metodo de Pronyfs=2*10e3;Wn=(2*pi*2e3)/fs;N=10;[b,a] = butter(N,Wn);h = filter(b,a,[1 zeros(1,25)]);[bz az] = prony(h,N,N);

Page 34: Informe N3 DSP

figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de Prony')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');

Page 35: Informe N3 DSP

subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1000

-500

0

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-400

-300

-200

-100

0

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de Prony

3.2.2 Realizamos una función en matlab para visualizar en una misma ventana la respuesta impulsional, los espectros de tensión y fase de los filtros obtenidos anteriormente:

Para el filtro 1 Para el filtro 2

3.2.3 Medimos en los espectros de fase y tensión del numeral anterior, la magnitud y el ancho de los lóbulos principales de cada banda.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

1

2Espectro en tension

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100

-50

0Espectro de fase

0 5 10 15 20 25 30-0.5

0

0.5Respuesta al impulso

Page 36: Informe N3 DSP

3.2.4 Implementamos en matlab las gráficas de las señales antes y después del filtrado, así:

Para el filtro 1 Para el filtro 2

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba antes de filtrar

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba despues de filtrar

3.2.5 Análisis: Una ventaja de esta técnica es que se pueden diseñar filtros directamente en el dominio de z. El Método de Prony es un algoritmo para encontrar un filtro IIR con una respuesta al impulso pre-escrita en el dominio del tiempo. Tiene aplicaciones en el diseño de filtros, el modelado de la señal exponencial, y la identificación del sistema (modelado paramétrico).

3.3 Diseño por Invarianza Impulsional

3.3.1 Usando el método de invarianza impulsional, implementamos dos filtros pasa bajo para eliminar las componentes de x(n) con frecuencias superiores a 2000Hz, así:

% Filtro 1 por el metodo de Invarianza impulsionalfs=2*10e3;Wn=(2*pi*2e3)/fs;N=30;

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba antes de filtrar

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba despues de filtrar

Page 37: Informe N3 DSP

[b,a] = butter(N,Wn,'s');[bz,az] = impinvar(b,a,0.5);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de la invarianza impulsional')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);

Page 38: Informe N3 DSP

axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1160

165

170

175

180

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 150

52

54

56

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de la invarianza impulsional

% Filtro 2 por el metodo de Invarianza impulsionalfs=2*10e3;Wn=(2*pi*2e3)/fs;N=10;[b,a] = butter(N,Wn,'s');[bz,az] = impinvar(b,a,0.5);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de Prony')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;

Page 39: Informe N3 DSP

A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 40])title('Transformada de fourier despues de filtrar');grid on

Page 40: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-800

-600

-400

-200

0

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-80

-60

-40

-20

0

Normalized Frequency ( rad/sample)M

agni

tude

(dB

)

Filtro por el metodo de Prony

3.3.2 Realizamos una función en matlab para visualizar en una misma ventana la respuesta impulsional, los espectros de tensión y fase de los filtros obtenidos anteriormente:

Para el filtro 1 Para el filtro 2

3.3.3 Medimos en los espectros de fase y tensión del numeral anterior, la magnitud y

el ancho de los lóbulos principales de cada banda.

3.3.4 Implementamos en matlab las gráficas de las señales antes y después del filtrado:

Para el filtro 1 Para el filtro 2

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

500

1000Espectro en tension

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 12.8

3

3.2Espectro de fase

0 50 100 150-500

0

500Respuesta al impulso

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba antes de filtrar

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba despues de filtrar

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-50

0

50

100Señal de prueba antes de filtrar

0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01-4

-2

0

2

4x 10

4 Señal de prueba despues de filtrar

Page 41: Informe N3 DSP

3.3.5 Análisis: Con esta técnica podemos encontrar un filtro digital cuya respuesta Impulsional sean muestras equiespaciadas de la respuesta Impulsional del filtro analógico. La respuesta en frecuencias del filtro digital consiste en la suma de infinitos términos de respuestas analógicas frecuenciales escaladas y desplazadas. La técnica de la repuesta Impulsional invariante puede distorsionar la forma de la respuesta frecuencial por el "aliasing" que se presenta siempre que existe muestreo.

3.4 Comparación:

3.5 Filtros Paso Altos IIR

3.5.1 A partir de los filtros obtenidos anteriormente, generamos filtros paso alto con frecuencia de corte de 2KHz:

% Filtro 1 por el metodo de transformacion bilinearfs=2*10e3;Wn=(2*pi*2e3)/fs;N=30;[b,a] = butter(N,Wn,'high','s');[bz,az] = bilinear(b,a,0.5);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de transformacion bilinear')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')

Page 42: Informe N3 DSP

% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 80])title('Transformada de fourier despues de filtrar');grid on

Page 43: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

5000

10000

15000

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-300

-200

-100

0

100

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de transformacion bilinear

3.5.2 Veremos el comportamiento del filtro anterior diseñándolo por los diferentes métodos de diseño de filtros:

% Filtro 1 por el metodo de transformacion bilinearfs=2*10e3;Wn=(2*pi*2e3)/fs;N=30;[b,a] = butter(N,Wn,'high','s');[bz,az] = bilinear(b,a,0.5);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de transformacion bilinear')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;

Page 44: Informe N3 DSP

f1=100;f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 80])title('Transformada de fourier despues de filtrar');grid on

Page 45: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

5000

10000

15000

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-300

-200

-100

0

100

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de transformacion bilinear

% Filtro 1 por el metodo de Pronyfs=2*10e3;Wn=(2*pi*2e3)/fs;N=30;[b,a] = butter(N,Wn,'high');h = filter(b,a,[1 zeros(1,25)]);[bz az] = prony(h,N,N);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de Prony')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;

Page 46: Informe N3 DSP

f2=2000;f3=5000;W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 50])title('Transformada de fourier despues de filtrar');grid on

Page 47: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4000

-2000

0

2000

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-30

-20

-10

0

10

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de Prony

% Filtro 1 por el metodo de Invarianza impulsionalfs=2*10e3;Wn=(2*pi*2e3)/fs;N=31;[b,a] = butter(N,Wn,'high','s');[bz,az] = impinvar(b,a,0.3);figure(1)freqz(bz,az,512)[H,W]=freqz(bz,az,512);title('Filtro por el metodo de la invarianza impulsional')% Diagramas de fase, magnitud y respuesta el impulsofigure(2)subplot(3,1,1)plot(W/pi,abs(H));grid;title('Espectro en tension')subplot(3,1,2)plot(W/pi,unwrap(angle(H)));grid;title('Espectro de fase')subplot(3,1,3)[h,t] = impz(bz,az);stem(t,h);grid;title('Respuesta al impulso')% Señal de pruebaA0=10;A1=15;A2=30;A3=15;f1=100;f2=2000;f3=5000;

Page 48: Informe N3 DSP

W1=2*pi*f1;W2=2*pi*f2;W3=2*pi*f3;%Definimos los tiemposFm=3*f3;Tm=1/Fm;n=0:Tm:1/f1;x = A0 + A1*sin(W1*n) + A2*sin(W2*n) - A3*sin(W3*n);x1 = filter(bz,az,x);figure(3);subplot(2,1,1)plot(n,x);title('Señal de prueba antes de filtrar');subplot(2,1,2)plot(n,x1);title('Señal de prueba despues de filtrar');grid on%Transformada de fourierxnorm=x/max(abs(x));trans=abs(fft(xnorm)); %magnitud del espectro de sxnorm1=x1/max(abs(x1));trans1=abs(fft(xnorm1)); %magnitud del espectro de snm=length(trans); %número de muestrasdelta=Fm/nm;eje_frec=0:delta:Fm-delta;figure(4)subplot(2,1,1)stem(eje_frec,trans);axis([0 6000 0 40])title('Transformada de fourier antes de filtrar');subplot(2,1,2)stem(eje_frec,trans1);axis([0 6000 0 80])title('Transformada de fourier despues de filtrar');grid on

Page 49: Informe N3 DSP

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1178

178.5

179

179.5

180

Normalized Frequency ( rad/sample)

Pha

se (

degr

ees)

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 162.2

62.4

62.6

62.8

63

Normalized Frequency ( rad/sample)

Mag

nitu

de (

dB)

Filtro por el metodo de la invarianza impulsional

Page 50: Informe N3 DSP

4. Herramienta de Diseño y Analisis de Filtros: FDATool

4.1 FILTROS FIR

4.1.1. Utilice la herramienta fdatool y calcule los filtros pasa-bajos con los mismos parámetros y características desarrolladas en las secciones 2.1 a 2.3. indique a que se debe las diferencias encontradas.

(2.1.1)Visualizar la Respuesta de un filtro FIR pasa banda con 0.35<w<0.65 de orden N=48 con una ventana Hamming de longitud N+1

ESPECTROS TENSION

ESPECTRO DE FASE

Page 51: Informe N3 DSP

RESPUESTA IMPULSIONAL

Page 52: Informe N3 DSP

(2.3.1)

Page 53: Informe N3 DSP

2.3.2 Usando el método de diseño por criterio min-max, implementamos dos filtros pasabajo para eliminar los componentes de x(n) con frecuencias superiores a 2000Hz

Page 54: Informe N3 DSP

Ventana Hamming

ESPECTROS TENSION

4.2 FILTROS IIR

FILTROS PASA BAJO

Ventana: BUTTERWORTH Wc=0.65 N=48

Respuesta impulsional

Page 55: Informe N3 DSP

DISEÑO POR EL METODO DE PRONY

El método prony está en el dominio del tiempo, tenemos un numerador de orden NB y denominador de orden NA y vector H, el filtro IIR nos regrese un vector NB+1 y NA+1 con vector B y A. Por medio de fdatool ingresar el numero de orden del numerador y denominador y el vector H. NA=30 NB=30 Wc=0.36

Page 56: Informe N3 DSP

Espectro de tensión y fase

FILTRO PASA ALTO

Ventana: BUTTERORTH Wc=0.35 N=48

Page 57: Informe N3 DSP

Por método de Prony

N=30 N=30 Wc=0.36

Respuesta impulsional

Page 58: Informe N3 DSP

Respuesta de tensión y de fase

El desarrollo de filtros pasa bajos y pasa altos tipos IIR, se facilitan con fdatool , los metodos empleados por el script y fdatool nos muestran la misma respuesta, pero en la segunda con mas detalles para poder observar la amplitud de los lóbulos y la anchura de estos.

5. Herramienta de procesamiento de señales: SPTool

5.1 Desde el ambiente de Matlab capture con ayuda del micrófono las voces de una persona masculina y femenina. Las señales deben ser muestreadas a 8000Hz, 8bits, durante 3segundos.

hombre = wavrecord(3*8000, 8000,1, 'uint8'); wavwrite(hombre,8000,32,'vozhombre')%a 32 para q sea tipo double voz_hombre=wavread('vozhombre','double'); t1 = 0:1/8000:23999/8000; plot(t1,voz_hombre) xlabel('tiempo (s)');

Page 59: Informe N3 DSP

ylabel('Amplitud'); title('Voz Hombre')

mujer = wavrecord(3*8000, 8000,1, 'uint8');wavwrite(mujer,8000,32,'vozmujer')%a 32 para q sea tipo doublevoz_mujer=wavread('vozmujer','double');t1 = 0:1/8000:23999/8000;plot(t1,voz_mujer)xlabel('tiempo (s)');ylabel('Amplitud');title('Voz Mujer')

Page 60: Informe N3 DSP

5.2 Invoque la herramienta SPTool desde la línea de comandos de Matlab e importe las señales grabadasHombre

Page 61: Informe N3 DSP

Mujer

5.3 Para cada una de las señales obtenidas en el numeral 5.1 obtenga la densidad espectral de potencia PSD.

Hombre

Mujer

Page 62: Informe N3 DSP

5.4 Para cada señal mida el ancho de banda y determine las frecuencias de mayor potencia espectral.

Hombre

BW=8000Hz Frec de mayor potencia espectral Amplitud=-12.87 f=271Hz Amplitud=-7.92 f=582Hz

Mujer:

BW=8000Hz Frec de mayor potencia espectral Amplitud=-18.19 f=1688HzAmplitud=-4.88 f=686Hz

5.5 Regrese al menú principal del SPTool y oprima el boton New Design dentro de la interfase Filter.

5.6 Diseñe un filtro FIR pasa bajo y un FIR pasa alto con la tecnica de enventanado usando Kaiser. La frecuencia de corte debe seleccionarse aproximadamente en la mitad del ancho de banda de las señales de voz. Asígnele nombres a los filtros que relacionen el tipo y método de diseño.

Filtro pasabajo por enventanado por kaiser

Page 63: Informe N3 DSP

Parámetros del filtro Apass=1 Astop=82 Fs=8000 Hz Fpass=1800 Hz Fstop=2200 Hz Coeficientes del filtro Num=[0.028 0.053 0.071 0.053 0.028] Den= [1.000 -2.026 2.148 -1.159 0.279]

Filtro FIR Pasa alto enventanado Kaiser

Page 64: Informe N3 DSP

Parámetros del filtro Apass=82 Astop=1 Fs=8000 Hz Fpass=1800 Hz Fstop=2200 Hz Coeficientes del filtro Num=[0.76 0.45]Den= [1.000 -2.026 2.148 -1.159 0.279]

5.7 Usando el SPTool, aplique cada uno de los filtros a las señales de voz. Para las señales filtradas, visualícelas en el dominio del tiempo, escuchelas y obtenga sus espectros.

Aplicando los filtros: LP para voz de mujer: Señal en el dominio del tiempo

Page 65: Informe N3 DSP

Densidad espectral de potencia

LP para voz de hombre:

Page 66: Informe N3 DSP

HP para voz mujer

Page 67: Informe N3 DSP