Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I Parte Uno
1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1 ¿Que es un filtro? 7
1.2 Filtro Digital 7
1.3 Tipos de filtros 8
1.3.1 De acuerdo con la parte del espectro que dejan pasar y que atenúan hay: . . . . 8
1.3.2 De acuerdo con su orden: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.3 De acuerdo con el tipo de respuesta ante entrada unitaria: . . . . . . . . . . . . . . . . . 8
1.3.4 De acuerdo con la estructura con que se implementa: . . . . . . . . . . . . . . . . . . . . . 8
1.4 Expresión general de un filtro 8
1.5 Ejemplo del diseño de un filtro 9
2 Análisis en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Sistemas digitales (Filtros digitales) 11
2.2 Muestreo y Reconstrucción de señales. 14
2.3 Diseño de FILTROS digitales con MATLAB 21
II Parte Tres
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Referencias 39
I
Parte Uno
1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1 ¿Que es un filtro?
1.2 Filtro Digital
1.3 Tipos de filtros
1.4 Expresión general de un filtro
1.5 Ejemplo del diseño de un filtro
2 Análisis en MATLAB . . . . . . . . . . . . . . . . . . 11
2.1 Sistemas digitales (Filtros digitales)
2.2 Muestreo y Reconstrucción de señales.
2.3 Diseño de FILTROS digitales con MATLAB
1. Introducción
Los filtros digitales tienen como entrada una señal analógica o digital y en su salida tienen otra señal
analógica o digital, pudiendo haber cambiado en amplitud, frecuencia o fase dependiendo de las
características del filtro digital.
El filtrado digital es parte del procesado de señal digital. Se le da la denominación de digital más por
su funcionamiento interno que por su dependencia del tipo de señal a filtrar, así podríamos llamar filtro
digital tanto a un filtro que realiza el procesado de señales digitales como a otro que lo haga de señales
analógicas.
Comúnmente se usa para atenuar o amplificar algunas frecuencias. Por ejemplo, se puede implementar
un sistema para controlar los tonos graves y agudos de cualquier sistema de audio.
El procesamiento interno y la entrada del filtro serán digitales, por lo que puede ser necesario una
conversión analógica-digital o digital-analógica para uso de filtros digitales con señales analógicas.
8 Capítulo 1. Introducción
Un tema muy importante es considerar las limitaciones del filtro de entrada debido a que la señal debe
poder ser reconstruida, ver Teorema de muestreo de Nyquist-Shannon.
1.3.1 De acuerdo con la parte del espectro que dejan pasar y que atenúan hay:
Un filtro paso alto (HPF) es un tipo de filtro electrónico en cuya respuesta en frecuencia se atenúan
los componentes de baja frecuencia pero no los de alta frecuencia, éstas incluso pueden amplificarse
en los filtros activos. La alta o baja frecuencia es un término relativo que dependerá del diseño y de
la aplicación. En particular la función de transferencia de un filtro pasa alta de primer orden corresponde
Un filtro paso bajo corresponde a un filtro electrónico caracterizado por permitir el paso de las frecuen-
cias más bajas y atenuar las frecuencias más altas.1 El filtro requiere de dos terminales de entrada y
dos de salida, de una caja negra, también denominada cuadripolo o bipuerto, así todas las frecuencias
se pueden presentar a la entrada, pero a la salida solo estarán presentes las que permita pasar el filtro.
De la teoría se obtiene que los filtros están caracterizados por sus funciones de transferencia, así
cualquier configuración de elementos activos o pasivos que consigan cierta función de transferencia
serán considerados un filtro de cierto tipo.
Un filtro paso banda es un tipo de filtro electrónico que deja pasar un determinado rango de frecuencias
de una señal y atenúa el paso del resto.
IIR es una sigla en inglés para Infinite Impulse Response o Respuesta infinita al impulso. Se trata de
un tipo de filtros digitales en el que, como su nombre indica, si la entrada es una señal impulso, la
salida tendrá un número infinito de términos no nulos, es decir, nunca vuelve al reposo.
M
∑ bk z−k
k=0
H(z) = N
(1.4.1)
∑ ak z−k
k=0
Y en dominio de n:
N M
y[n] = ∑ bk x(n − k) − ∑ ak x(n − k) (1.4.2)
k=−0 k=−0
Los coeficientes ak y bk son los que definen el filtro, por lo tanto el diseño consiste en calcularlos.
Con estas especificaciones se elige un filtro FIR. El diseño se puede hacer manualmente o con la
ayuda de un ordenador. En este ejemplo el método de diseño será el de Remez. En Matlab se obtienen
los coeficientes que definen el filtro, que en la ecuación anterior se llaman a y b (el numerador es la
variable b y el denominador solo tiene un término que es 1, como corresponde a un filtro FIR):
Figura 1.5.1: En la figura se muestra el aspecto del filtro en el centro. En la parte superior se muestra la señal
que se quiere filtrar y en la parte inferior la señal filtrada (se trata de un electrocardiograma).
2. Análisis en MATLAB
1
2 clear,clc, close all;
3 bn=[0.3 0.6 0.3];
4 an=[1 0 0.9];
5 x=zeros(1,100);
6 x(1)=1;y = filter(bn,an,x);
7 stem(y)
8 title('y[n]');
2.1.2
1.2
Resolvemos la ecuación anterior para n=1 hasta 5 ,cuando x[n] = d[n],suponiendo las condiciones
iniciales de reposo y[0] = y[−1] = 0.
n=1
y[1] + 0,9y[−1] = 0,3x[1] + 0,6x[0] + 0,3x[−1]
y[1] = 0,6
12 Capítulo 2. Análisis en MATLAB
n=2
y[2] + 0,9y[0] = 0,3x[2] + 0,6x[1] + 0,3x[0]
y[1] = 0,3
n=3
y[3] + 0,9y[1] = 0,3x[3] + 0,6x[2] + 0,3x[1]
y[1] = −0,54
n=4
y[4] + 0,9y[2] = 0,3x[4] + 0,6x[3] + 0,3x[2]
y[1] = −0,27
n=5
y[5] + 0,9y[3] = 0,3x[5] + 0,6x[4] + 0,3x[1]
y[1] = 0,486
Los valores de y[n] para n = {0, 1, 2, 3, 4, 5} serán
y[n] = {0,6 0,3 − 0,54 − 0,27 0,486}
2.1.3
1.3
calculamos mediante la funcion filter la respuesta al impulso h(n) correspondiente al sistema descrito
por la siguiente ecuación:
π 1
y[n] = 1,8cos( )y[n − 1] + 0,81y[n − 2] = x[n] + x[n − 1] (2.1.1)
16 2
2.1 Sistemas digitales (Filtros digitales) 13
para −10 < n < 10 ,y la respuesta a la funcion escalon u(n). Representamos graficamente la salida y
determinamos su valor constante que alcanza la salida (valor que llamaremos H0) para n > oo.
Verificar, en su caso, que coincide con el valor determinado analíticamente. NOTA La respuesta
constante ,H0, cuando n->00, se denomina respuesta estacionaria. Compruebe gráficamente usando la
función diff (vease help) que la derivada de la respuesta a la función escalón es la respuesta al pulso
unitario.
1
2 clear,clc, close all;
3 t=−10:1:100;
4 bn=[1 0.5];
5 an=[1 −1.8*cos(pi/16) 0.81];
6 u=ones(1,100);
7 u(1:10)=0;
8 y1 = filter(bn,an,u);
9 d=zeros(1,100);
10 d(1)=1;
11 y = filter(bn,an,d);
12
13 stem(y1)
14 title('y1[n]');
15 figure;
16
17 stem(y)
18 title('y[n]');
19 figure;
20
21 y2=diff(y1);
22 stem(y2)
23 title('y2[n]');
Figura 2.1.2
14 Capítulo 2. Análisis en MATLAB
Figura 2.1.3
Figura 2.1.4
y(t) en el intervalo [−40ms, 40ms] utilizando una variable independiente t evaluada cada dt = 1/(10 ∗
f s) para que conseguir mediante el comando plot (t, y) una representación adecuada. Represente la
respuesta del filtro h(t). Considere las muestras y[n] que corresponden al muestreo con T s = 1/ f s A
partir de la secuencia y[n] y la función h(t) represente el proceso de reconstrucción que se corresponde
con la aplicación de un filtro pasa baja con una frecuencia de corte f c = 120Hz. Para comprobar el
proceso de reconstrucción se deber representar en un gráfico simultáneamente la señal çontinua", las
muestras tomadas con f s = 250Hz , y la señal reconstruida.
1 clear,clc,close all
2
3 Fs=2500;
4 f0=100;
5 fc=120;
6 wc=2*pi*fc;
7 As=1;
8 ti=−40*10^−3
9 tf=40*10^−3
10 t=ti:1/Fs:tf;
11 h=wc*(As/pi)*sinc(wc*t/pi);
12 y=cos(2*pi*f0*t);
13 H=fft(h);
14 Y=fft(y);
15 G=Y.*H;
16 g=ifft(G);
17
18 plot(t,y)
19 title('Original')
20 figure;
21
22 stem(t,y)
23 title('Muestreada')
24 figure;
25
26 plot(t,g)
27 title('Reconstruida')
2.2.2
2.2
Repita el ejercicio anterior utilizando la función conv de Matlab que permite realizar la convolución
lineal de dos señales. Se pretende calcular la convolución y(t) = x(t) ∗ h(t) que se corresponde con
aplicar el filtro pasa baja en el mundo de frecuencia Y (w) = X(w)H(w).
1
2 clear,clc,close all
3
4 Fs=2500;
5 f0=100;
6 fc=120;
7 wc=2*pi*fc;
8 As=1;
9 ti=−40*10^−3;
10 tf=40*10^−3;
11 t=ti:1/Fs:tf;
12 t1=2*ti:1/Fs:2*tf;
13 h=wc*(As/pi)*sinc(wc*t/pi);
16 Capítulo 2. Análisis en MATLAB
14 y=cos(2*pi*f0*t);
15 c=conv(h,y);
16
17 plot(t,y)
18 title('Original')
19 figure
20
2.2 Muestreo y Reconstrucción de señales. 17
21 plot(t1,c)
22 axis([ti tf −3000 3000])
23 title('Convolucion lineal')
2.2.3
18 Capítulo 2. Análisis en MATLAB
2.3
Varié la frecuencia de corte del filtro fc1= 50 Hz, fc2= 100Hz , fc3= 150Hz, fc4=125Hz y explique los
resultados.
1 clear,clc,close all
2
3 Fs=2500;
4 f0=100;
5 fc=125; %% Tenemos las diferentes frecuencias {50 100 150 125}
6 wc=2*pi*fc;
7 As=1;
8 ti=−40*10^−3;
9 tf=40*10^−3;
10 t=ti:1/Fs:tf;
11 h=wc*(As/pi)*sinc(wc*t/pi);
12 y=cos(2*pi*f0*t);
13 H=fft(h);
14 Y=fft(y);
15 G=Y.*H;
16 g=ifft(G);
17
18 plot(t,g)
19 title('fc=125')
2.2 Muestreo y Reconstrucción de señales. 19
La señal de 50 Hz tiene un comportamiento distinto a los demás debido a que en dicho filtro se tiene
que la frecuencia f0=100Hz y si la frecuencia del filtro viene a ser fc=50Hz, es decir, menor que la
frecuencia de entrada dicho filtro no funciona.
Descripcion
[A,B,C,D] = ellip() diseña un filtro elíptico digital de paso bajo, paso alto, paso de banda o supresión y
devuelve las matrices que especifican su representación de espacio de estado.
1
2 clear all; clc;
3 [A,B,C,D] = ellip(4,3,40,[570 630]/4096);
4 d = designfilt('bandpassiir','FilterOrder',4, ...
5 'PassbandFrequency1',570,'PassbandFrequency2',630, ...
6 'PassbandRipple',3, ...
7 'StopbandAttenuation1',40,'StopbandAttenuation2',40, ...
8 'SampleRate',8192);
9
10 sos = ss2sos(A,B,C,D);
11 fvt = fvtool(sos,d,'Fs',8192);
12 legend(fvt,'ellip','designfilt')
2.3.2
3.2
Matlab incorpora la función freqz (ver help) que calcula la función de transferencia H(w).
1
2 b0 = 0.05634;
22 Capítulo 2. Análisis en MATLAB
3 b1 = [1 1];
4 b2 = [1 −1.0166 1];
5 a1 = [1 −0.683];
6 a2 = [1 −1.4461 0.7957];
7 b = b0*conv(b1,b2);
8 a = conv(a1,a2);
9 [h,w] = freqz(b,a,'whole',2001);
10
11 plot(w/pi,20*log10(abs(h)))
12 ax = gca; ax.YLim = [−100 20]; ax.XTick = 0:.5:2;
13 xlabel('Normalized Frequency (\times\pi rad/sample)')
14 ylabel('Magnitude (dB)')
2.3.3
3.3
A partir de los vectores b y a obtenidos, construya la función H(w) siguiendo el procedimiento del
ejercicio 4.1.4 y represente H(w) en función de w en el intervalo 0, p. Compruebe que se obtiene el
mismó resultado que utilizando la funcion freqz.
1
2 clear all; clc;
3 sf1 = 0.1; pf1 = 0.35;
4 pf2 = 0.8; sf2 = 0.9;
5 pb = linspace(pf1,pf2,1e3)*pi;
6 bp = designfilt('bandpassfir', ...
7 'StopbandAttenuation1',40, 'StopbandFrequency1',sf1,...
8 'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ...
9 'StopbandFrequency2',sf2,'StopbandAttenuation2',30);
10 [h,w] = freqz(bp,1024); hpb = freqz(bp,pb);
11 subplot(2,1,1)
2.3 Diseño de FILTROS digitales con MATLAB 23
12 plot(w/pi,abs(h),pb/pi,abs(hpb),'.−')
13 axis([0 1 −1 2])
14 legend('Response','Passband','Location','South')
15 ylabel('Magnitude')
16 subplot(2,1,2)
17 plot(w/pi,db(h),pb/pi,db(hpb),'.−')
18 axis([0 1 −60 10])
19 xlabel('Normalized Frequency (\times\pi rad/sample)')
20 ylabel('Magnitude (dB)')
2.3.4
3.4
Considere que la señal de entrada esta formada por la suma de dos señales sinusoidales de frecuencia
200 y 800 Hz respectivamente. Usando la función filter compruebe que a la salida ha desaparecido la
componente de 800 Hz.
1
2 Fs=8192;
3 d=fdesign.lowpass('N,Fp,Ap,Ast',4,600,0.5,20,Fs);
4 h=design(d,'ellip');
5 [num,den]=tf(h);
6 t=0:1/Fs:0.02;
7 x=sin(2*pi*200*t)+sin(2*pi*800*t);
8 y=filter(num,den,x);
9 N=2^nextpow2(length(t));
10 f=0:Fs/N:(Fs*(N−1))/N;
11 X=abs(fft(x,N));
12 Y=abs(fft(y,N));
13 plot(t,x,t,y);
24 Capítulo 2. Análisis en MATLAB
14 xlabel('Tiempo (s)');
15 ylabel('Amplitud');
16 grid on
17 figure;
18 plot(f,X,f,Y);
19 xlabel('Frecuencia (Hz)');
20 ylabel('Magnitud');
21 grid on
Aquí se compara la señal a la entrada del filtro (gráfica azul) y la función de salida filtrada (gráfica
verde).
Al igual que la gráfica anterior aquí se compara la respuesta en frecuencia en la cual podemos ver
fácilmente la atenuación que se da en la frecuencia de 800 Hz.
2.3.5
2.3 Diseño de FILTROS digitales con MATLAB 25
3.5
Manteniendo la frecuencia de corte en la función ellip modificar uno a uno los parámetros N, Rp y Rs.
Use la función freqz para representar las caracteristicas H(w) del filtro y estudie su dependencia con
los parámetros anteriores.
1
2 clear all; clc;
3 [A,B,C,D] = ellip(4,3,40,[570 630]/4096);
4 d = designfilt('bandpassiir','FilterOrder',4, ...
5 'PassbandFrequency1',570,'PassbandFrequency2',630, ...
6 'PassbandRipple',3, ...
7 'StopbandAttenuation1',40,'StopbandAttenuation2',40, ...
8 'SampleRate',8192);
9
10 sos = ss2sos(A,B,C,D);
11 fvt = fvtool(sos,d,'Fs',8192);
12 legend(fvt,'ellip','designfilt')
En los primeros órdenes se tiene un Rp=5 esto con el objeto que se observe mejor el comportamiento
del rizado en la banda de paso y de ello se concluye que se tiene un número de máximos y mínimos en
la banda de paso (siendo el último de estos un máximo siempre) igual al número de orden del filtro.
26 Capítulo 2. Análisis en MATLAB
En los órdenes más superiores se usa un Rp=0.5, y se puede ver que al ir aumentando el orden los
valles se van desplazando más en dirección a la frecuencia de corte lo cual en ciertos ordenes genera
una mayor atenuación una banda de transición más pequeña en algunos órdenes, sin embargo para
2.3 Diseño de FILTROS digitales con MATLAB 27
otros esto no sucede. También al seguir subiendo el orden se ve que los órdenes pares y los órdenes
impares empiezan a tener un comportamiento similar.
28 Capítulo 2. Análisis en MATLAB
4.8 Diseñe un
filtro suprime-banda de orden N=6 con frecuencia de paso de 300 y 500 Hz , suponiendo que la señal
de entrada será muestrada a una frecuencia de 8192 Hz. Represente H(w). Considere que la señal de
entrada esta formada por la suma de tres señales sinusoidales de frecuencia 100,400 y 600 Hz
respectivamente. Usando la función filter se debe comprobar que a la salida ha desaparecido la co
En la banda de paso se observa como al disminuir Rp se tiene una respuesta mucho más plana en dicha
banda, lo que ocurre también en la banda de supresión es un desplazamiento de los valles estos se
alejan de la banda de paso en consecuencia la banda de transición es más ancha y no será y tan buena
la atenuación.
Para N=4 y Rp=0.5 constantes y variando Rs:
Lo que se ve inmediatamente es que la consecuencia de tener una mayor atenuación en la banda de
supresión es que se hace más ancha la banda de transición es decir no se podría filtrar frecuencias que
se encuentren cercanas a la frecuencia de corte.
2.3.6
2.3 Diseño de FILTROS digitales con MATLAB 29
3.6
Diseñe un filtro pasa-alta de orden N=6 con frecuencia de corte de 600 Hz , suponiendo que la
señal de entrada será muestrada a una frecuencia de 8192 Hz. Represente H(w). Considere que la
30 Capítulo 2. Análisis en MATLAB
señal de entrada esta formada por la suma de dos señale sinusoidales de frecuencia 200 y 800 Hz
respectivamente. Usando la función filter compruebe que a la salida ha desaparecido la componente de
2.3 Diseño de FILTROS digitales con MATLAB 31
200Hz,
2.3 Diseño de FILTROS digitales con MATLAB 33
1
2 clc
3 close all
4 clear
5 Fs= 8192; %frecuencia de muestreo
6 d = fdesign.highpass('N,Fp,Ast,Ap',6,600,20,0.8,Fs);
7 h = design(d,'ellip');
8 [num1,den1]=tf(h);
9 t=0:1/Fs:5*10^−3;
10 x = sin(2*pi*200*t)+4*sin(2*pi*800*t);
11 y =filter(num1,den1,x);
12 N=2^nextpow2(length(y));
13 F = 0:Fs/N:Fs*(N−1)/N;
14 X=abs(fft(x,N));
15 Y=abs(fft(y,N));
16 plot(F,X,'g','linewidth',2)
17 hold on
18 plot(F,Y,'b','linewidth',2)
19 grid on
2.3.7
3.7
Diseñe un filtro pasa-banda de orden N=6 con frecuencia de paso de 300 y 500 Hz , suponiendo que
la señal de entrada será muestrada a una frecuencia de 8192 Hz. Represente H(w). Considere que la
señal de entrada esta formada por la suma de tres señales sinusoidales de frecuencia 100,400 y 600 Hz
respectivamente. Usando la función filter compruebe que a la salida ha desaparecido la componente de
100 y de 600 Hz.
1
2 clc
3 close all
4 clear
5 Fs= 8192; %frecuencia de muestreo
6 d = fdesign.bandpass('N,Fst1,Fp1,Fp2,Fst2,Ap',6,200,250,550,650,0.8,8192);
7 h=design(d,'ellip');
34 Capítulo 2. Análisis en MATLAB
8 [num1,den1]=tf(h);
9 t=0:1/Fs:5*10^−3;
10 x = 8*sin(2*pi*100*t)+4*sin(2*pi*400*t)+6*sin(2*pi*600*t);
11 y =filter(num1,den1,x);
12 N=2^nextpow2(length(y));
13 F = 0:Fs/N:Fs*(N−1)/N;
14 X=abs(fft(x,N));
15 Y=abs(fft(y,N));
16 plot(F,X,'g','linewidth',3)
17 hold on
18 plot(F,Y,'b','linewidth',3)
19 grid on
2.3.8
3.8
Diseñe un filtro suprime-banda de orden N=6 con frecuencia de paso de 300 y 500 Hz , suponiendo
que la señal de entrada será muestrada a una frecuencia de 8192 Hz. Represente H(w). Considere que
la señal de entrada esta formada por la suma de tres señales sinusoidales de frecuencia 100,400 y 600
Hz respectivamente. Usando la función filter se debe comprobar que a la salida ha desaparecido la
componente de 400 Hz.
1
2 d=fdesign.bandstop('N,Fp1,Fst1,Fst2,Fp2,Ap',6,250,300,500,600,0.8,8192);
3 h=design(d,'ellip');
4 [num1,den1]=tf(h);
5 t=0:1/Fs:5*10^−3;
6 x = 8*sin(2*pi*100*t)+4*sin(2*pi*400*t)+6*sin(2*pi*600*t);
2.3 Diseño de FILTROS digitales con MATLAB 35
7 y =filter(num1,den1,x);
8 N=2^nextpow2(length(y));
9 F = 0:Fs/N:Fs*(N−1)/N;
10 X=abs(fft(x,N));
11 Y=abs(fft(y,N));
12 plot(F,X,'g','linewidth',3)
13 hold on
14 plot(F,Y,'b','linewidth',3)
15 grid on
36 Capítulo 2. Análisis en MATLAB
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Referencias
Bibliografía
Referencias
[Con07] Alicia Casanueva López Constantino Pérez Vega José Zamanillo Sáinz de la Maza. Sistemas
de Telecomunicaciones. 7.a edición. Eujoa Artes Gráficas, 2007. ISBN: 9788481024548
(véase página 39).
[Gam] Segundo Gamarra. Transmisión Digital en Banda Base. Departamento de Posgrado - Fa-
cultad de Ingeniería Eléctrica y Electrónica - Universidad Nacional de Ingeniería (véase
página 39).
[Ric08] Michael Rice. Digital Communications: A Discrete-Time Approach. 1.a edición. Prentice
Hall, 2008. ISBN: 0130304972 (véase página 39).
[Sim15] Simulink. Software de MATLAB. 2015 (véase página 39).
[Vás15] Sergio Gallardo Vásquez. Elementos de Sistemas de Telecomunicaciones. 1.a edición.
Ediciones Paraninfo S.A., 2015. ISBN: 902995240 (véase página 39).
[Veg] Constantino Pérez Vega. Capítulo 7 - Modulación de Pulsos. Departamento de Ingeniería
de Comunicaciones - Universidad de Cantabria (véase página 39).