Академический Документы
Профессиональный Документы
Культура Документы
Grupo 3
Filtros en Matlab
Jan Bacca Rodrguez
jbaccar@unal.edu.co
Of: 411-201
Respuesta en Frecuencia de
Sistemas LTI
Matlab permite calcular numricamente la
respuesta en frecuencia de sistemas
continuos y discretos para valores discretos
de frecuencia.
La respuesta en frecuencia de un sistema es
la transformada de Fourier de su respuesta
impulso.
Los comandos freqs and freqz permiten
evaluar la respuesta en frecuencia de
sistemas
descritos
por
ecuaciones
diferenciales o de diferencia sin tener la
respuesta impulso.
freqs
H = freqs (b, a, w) calcula la
respuesta en frecuencia del sistema en
tiempo continuo descrito por la ecuacin:
N
a
k 0
N k
d k y(t ) M
d k x (t )
bM k
k
k
dt
dt
k 0
a, b: vectores de coeficientes de la
ecuacin diferencial. El primer elemento
de cada vector corresponde a la
derivada ms alta.
freqs
w: vector de frecuencias donde H(j)
ser calculada.
freqs (b, a, w) sin argumentos de
salida grafica la magnitud y fase de
H(j) .
Si no se especifica w, matlab escoge un
vector de 200 frecuencias donde calcular
H(j) .
Si se reemplaza w por un nmero entero
freqz
[H,w] = freqz (b, a, N) calcula la
respuesta en frecuencia del sistema en
tiempo discreto descrito por la ecuacin:
N
a y n k b x n k
k 0
k 0
a, b: vectores de coeficientes de la
freqz
N: Nmero de frecuencias
uniformemente distribuidas entre 0 y
en las que se calcular H(ej). Si N no se
especifica se usan 512 puntos.
[H, w]=freqz (b, a, N,whole) usa
N puntos entre 0 y 2 .
H = freqz (b, a, w): w es el vector
de frecuencias donde se calcular H(ej).
[H, f] = freqz (b, a, N, fs): fs
es la frecuencia de muestreo de la seal
H = freqz (b, a, F, fs): F es el
vector de frecuencias (Hz) donde se
calcular H(ej).
Diseo de filtros
Matlab emplea las mismas funciones
para disear filtros analgicos y filtros
digitales IIR
Una funcin para cada familia
Las funciones de transferencia de los
filtros diseados son:
B s b1s n b2 s n 1 ... bn 1
H s
n
A s
s a2 s n 1 ... an 1
B z b1 b2 z 1 ... bn 1 z n
H z
A z 1 a2 z 1 ... an 1 z n
Caractersticas en
frecuencia
Ap: Mxima
atenuacin
permitida en la
banda de paso
As: Mnima
atenuacin en la
banda de rechazo
p: Lmite de la
banda de paso
s: Lmite de la
banda de rechazo
Filtros de Butterworth
[b,a]=butter(n,Wn): Disea un filtro
de Butterworth pasabajos digital de
orden n y frecuencia de corte Wn*pi.
[b,a]=butter(n,Wn,s): Disea un
filtro de Butterworth analgico (Wn rad/s)
[b,a]=butter(n,Wn,tipo): El
parmetro tipopermite disear otros
tipos de filtros
low, high, bandpass, stop
Filtros de Butterworth
La misma funcin se puede usar para
obtener los polos y ceros del filtro o su
representacin en variables de estado:
[z,p,k]= butter(n,Wn)
[A,B,C,D]= butter(n,Wn)
[N,Wn]=
buttord(Wp,Ws,Rp,Rs)/,s) Calcula
el orden y la frecuencia de corte del filtro
Para pasabanda y rechazabanda, Wp y Ws
son vectores de dos componentes
Ejemplo
Disee un filtro butterworth
pasabajos con las siguientes
caractersticas:
Ap = 2.5dB
As = 60dB
fp = 1kHz, p = 6283 rad/s
fs = 5kHz, s = 3141 rad/s
Ejemplo
Para hallar el orden del filtro usamos:
[N, Wn] = buttord(Wp,Ws,Rp,Rs,'s')
Resultando en:
N = 5
Wn = 7.8913e+03
fn = 1.2559e+03
Que coinciden con los valores
encontrados anteriormente
Ejemplo
8000
6000
4000
2000
0
-2000
-4000
-6000
-8000
-8000 -6000 -4000 -2000
Ejemplo
Y para hallar la funcin de
transferencia:
[b,a] = butter(N,Wn,'s')
b =
1.0e+19 *[0 0 0 0 0 3.0602]
a = [1 2.5537e+04 3.2607e+08
2.5731e+12 1.2549e+16 3.0602e+19]
3.06 1019
H (s) 5
s 2.55 10 4 s 4 3.26 108 s 3 2.57 1012 s 2 1.25 1016 s 3.06 1019
Ejemplo
Podemos observar la respuesta en frecuencia
usando: freqs(b,a)
0
Magnitude
10
-2
10
-4
10
-6
10
10
10
Frequency (rad/s)
10
10
Phase (degrees)
200
100
0
-100
-200 2
10
10
Frequency (rad/s)
10
10
Filtros de Chebyshev I y II
cheby1(n,R,Wp)/,s): Disea un
filtro Chebyshev tipo I, pasabajos.
n: orden
R: dB de ripple en la banda de paso
Wp: Frecuencia lmite para la banda de
paso (Wp*pi para filtros digitales).
Se puede usar con los mismos parmetros
de salida que la anterior: [b,a],
[z,p,k], [A,B,C,D]
Para generar diferentes respuestas
tambin se puede usar el parmtero
tipo
Filtros de Chebyshev I y II
[N, Wp] = cheb1ord(Wp, Ws, Rp,
Rs)/,s): Calcula el orden y la
Ejemplo
Disee filtros pasabajos de
Chebyshev tipo I y II con las
siguientes caractersticas:
Ap = 2.5dB
As = 60dB
fp = 1kHz, p = 6283 rad/s
fs = 5kHz, s = 3141 rad/s
Ejemplo
El orden debe ser el mismo para los
dos filtros
[NCI, WpCI] = cheb1ord(Wp, Ws,
Rp, Rs,'s')
[NCII, WsCII] = cheb2ord(Wp, Ws,
Rp, Rs,'s')
NCI = 4
WpCI = 6.2832e+03
NCII = 4
WsCII = 2.2133e+04
Ejemplo
Para hallar los polos y
ceros
[zCI,pCI,kCI] =
cheby1(NCI,Rp,WpCI
,'s')
[zCII,pCII,kCII] =
cheby2(NCII,Rs,WsC
II,'s')
x 10
6
Polos Chebyshev I
Polos Chebyshev II
Ceros Chebyshev II
-2
-4
-6
-6000
-4000
-2000
Ejemplo
Y para las funciones de transferencia:
[bCI,aCI] =
cheby1(NCI,Rp,WpCI,'s')
[bCII,aCII]=cheby2(NCII,Rs,WsCII,
's')
2.20 1014
H I ( s) 4
s 4.03 103 s 3 4.76 107 s 2 1.12 1011 s 2.94 1014
1 10 3 s 4 1.94 10 15 s 3 3.92 106 s 2 4.84 10 7 s 1.92 1015
H II ( s )
s 4 1.71 10 4 s 3 1.47 108 s 2 7.41 1011 s 1.92 1015
Ejemplo
0
10
10
-1
10
Magnitude
Magnitude
-2
10
-4
10
-2
10
-3
10
-4
10
-6
-5
10
10
Frequency (rad/s)
10
10
10
10
200
200
150
150
100
100
Phase (degrees)
Phase (degrees)
10
50
0
-50
0
-50
-100
-150
-150
3
10
Frequency (rad/s)
10
10
10
50
-100
-200 2
10
10
Frequency (rad/s)
-200 3
10
10
Frequency (rad/s)
10
Ejemplo
Disee un filtro elptico pasabajos
con las siguientes caractersticas:
Ap = 2.5dB
As = 60dB
fp = 1kHz, p = 6283 rad/s
fs = 5kHz, s = 3141 rad/s
Ejemplo
[NE, WpE] = ellipord(Wp, Ws, Rp,
Rs,'s');
[zE,pE,kE] = ellip(NE,Rp,Rs,
WpE,'s')
[bE,aE] = ellip(NE,Rp,Rs,WpE,'s')
NE = 3
WpE =6.2832e+03
77.99 s 2 1.77 10 11 s 7.18 1010
H (s) 3
s 4.14 103 s 2 3.84 10 7 s 7.18 1010
Ejemplo
0
10
4
Magnitude
x 10
3
2
-5
10
10
10
Frequency (rad/s)
10
10
200
Phase (degrees)
-1
-2
-3
-2000 -1500 -1000 -500
100
0
-100
-200 2
10
10
Frequency (rad/s)
10
10
Filtros de Bessel
besself(n,Wo): Disea un filtro de
Bessel analgico de orden n, Wo es la
frecuencia lmite para la que el retardo
de grupo es constante.
La salida puede tener las 3 formas
vistas anteriormente.
Solo se pueden disear filtros
analgicos pasabajos
Ejemplo
Se construy un filtro de Bessel de orden 5 con
caractersticas similares a las de los ejemplos
anteriores.
Ap = 2.5dB, As = 60dB, fp = 1kHz, fs = 5kHz
[zB,pB,kB] = besself(5,Wp)
[bB, aB] = besself(5,Wp);
9.79 1018
H (s) 5
s 2.39 10 4 s 4 2.67 108 s 3 1.711012 s 2 6.13 1015 s 9.79 1018
Ejemplo
0
10
6000
-2
Magnitude
10
4000
-4
10
-6
10
2000
-8
10
10
10
Frequency (rad/s)
10
10
200
Phase (degrees)
-2000
-4000
-6000
-6000
-4000
-2000
100
0
-100
-200 2
10
10
Frequency (rad/s)
10
10
Diseo de FIR/RIF
H z B z b1 b2 z 1 ... bn 1 z n
Diseo de FIR/RIF
Wn debe ser un vector de 2 posiciones para
los tipos bandpass y stop
Wn puede tener ms de dos posiciones, en
cuyo caso se alternan las bandas de paso y
rechazo.
En este caso el parmetro tipo toma los
valores
'DC-1: Comienza con una banda de paso
'DC-0: Comienza con una banda de
rechazo
Diseo de FIR/RIF
La funcin fir1 usa una ventana
hamming
Las ventanas ms comunes se generan
con las funciones:
w = hamming(L)
w = hann(L)
w = blackman(N)
w = bartlett(N)
En todos los casos el parmetro de
entrada es el tamao de la ventana
Ejemplo
Disear pasabajos FIR con frecuencia
de corte Wc = 1 de 21 coeficientes
usando las ventanas ms conocidas.
0.35
N = 20;
WR = ones(N+1,1);
WHn = hann(N+1);
WBl = blackman(N+1);
WBa = bartlett(N+1);
Wn = 1/pi;
Rectangular
Hamming
Hanning
Blackman
Bartlett
0.3
0.25
0.2
0.15
0.1
BR = fir1(N,Wn,WR);
BHm = fir1(N,Wn);
BHn = fir1(N,Wn,WHn);
BBl = fir1(N,Wn,WBl);
BBa = fir1(N,Wn,WBa);
0.05
-0.05
-0.1
10
12
14
16
18
20
Ejemplo
Rectangular
Hamming
20
20
0
Magnitude (dB)
Magnitude (dB)
0
-20
-40
-60
-40
-60
-80
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
-100
-100
-200
-200
Phase (degrees)
Phase (degrees)
-80
-20
-300
-400
-500
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
-400
-600
-800
-1000
-600
-700
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
-1200
Ejemplo
Blackman
Bartlett
0
-10
-50
-100
Magnitude (dB)
50
Magnitude (dB)
50
-50
-100
-20
-30
-150
-150
-40
-200
-400
-600
-800
-1000
0
0.5
1
Normalized Frequency ( rad/sample)
0
0.5
1
Normalized Frequency ( rad/sample)
-500
-1000
-1500
Phase (degrees)
0
0.5
1
Normalized Frequency ( rad/sample)
Phase (degrees)
Phase (degrees)
Magnitude (dB)
Hanning
0
0.5
1
Normalized Frequency ( rad/sample)
0
0.5
1
Normalized Frequency ( rad/sample)
-500
-1000
-1500
-2000
0
0.5
1
Normalized Frequency ( rad/sample)
Diseo de FIR/RIF
H z B z b1 b2 z 1 ... bn 1 z n
B = fir2(N,f,m) Disea un filtro FIR de N+1
coeficientes cuya respuesta en frecuencia
est descrita por los vectores f y m (Muestreo
en frecuencia)
f es un vector de valores entre 0 y 1
m especifica la respuesta en magnitude del
filtro en dichos puntos (no en dB)
B = fir2(N,f,m,npt,ventana): Permite usar
diferentes ventanas, al igual que fir1.
npt es el nmero de puntos en el que se
interpola la respuesta en frecuencia (por lo
Ejemplo
Wn = 1/pi;
f = [0 Wn Wn 1];
m = [1 1 0 0];
BMF = fir2(N,f,m);
Magnitude (dB)
Phase (degrees)
Disear un
pasabajos FIR con
frecuencia de
corte Wc = 1 de 21
coeficientes
usando muestreo
en
frecuencia.
N = 20;
20
-20
-40
-60
-80
-100
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0
-200
-400
-600
-800
-1000
-1200
Transformaciones de
frecuencia analgicas
Transforman filtros pasabajos
normalizados en la respuesta requerida
La respuesta original se puede especificar
como los coeficientes de la funcin de
transferencia o en variables de estado, la
salida estar en el mismo formato
[bt,at] = lp2lp(b,a,Wo)
[At,Bt,Ct,Dt] = lp2lp(A,B,C,D,Wo)
Wo es la frecuencia de corte del nuevo
filtro
Transformaciones de
frecuencia analgicas
[bt,at] = lp2hp(b,a,Wo)
[bt,at] = lp2bp(b,a,Wo,BW)
[bt,at] = lp2bs(b,a,Wo,BW)
Wo es la frecuencia de corte para
pasaaltos
Wo = sqrt(w1*w2) es la frecuencia de
central para pasabanda y rechazabanda
BW = w2-w1 es el ancho de banda para
pasabanda y rechazabanda
Transformaciones
analgico - digital
[bz,az] = impinvar(b,a,fs,tol): Crea un
filtro digital a partir de un filtro analgico usando
invariancia del impulso.
b,a son vectores que contienen los coeficientes
de la respuesta en frecuencia del filtro analgico
fs es la frecuencia de muestreo de la respuesta
al impulso del filtro analgico (1Hz si no se
especifica)
tol es la tolerancia en magnitud para
determinar si dos polos son el mismo con
multiplicidad, (0,001 si no se especifica)
Ejemplo
Transformar el filtro buterworth
analgico del primer ejemplo en uno
digital con frecuencia de corte 1.
Recordemos que
s 7.8913e 03
z
Ts
fs
s
z
1
Ejemplo
0
10
10
0
Magnitude (dB)
Magnitude
-2
10
-4
10
-10
-20
-30
-40
-6
2
10
10
Frequency (rad/s)
10
-50
10
200
100
-100
Phase (degrees)
Phase (degrees)
10
-100
-200 2
10
10
Frequency (rad/s)
10
10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
-200
-300
-400
Ejemplo
Las funciones de transferencia sern:
3.06 1019
H (s) 5
s 2.55 10 4 s 4 3.26 108 s 3 2.57 1012 s 2 1.25 1016 s 3.06 1019
Transformaciones
analgico - digital
[zd,pd,kd]=bilinear(z,p,k,fs):
Crea un filtro digital a partir de un filtro
analgico usando la transformacin
bilineal
z,p,k son los ceros, polos y ganancia
del filtro analgico original
fs es la frecuencia de muestreo (1Hz si
no se especifica)
Tambien se puede utilizar con las
representaciones como funcin de
transferencia (a,b) o variables de
Ejemplo
Transformar el filtro buterworth
analgico del primer ejemplo en uno
digital con frecuencia de corte 1.
3
2
7
.
8913
10
Ts
tan z f s
7.2225 103
s
1
2
2 tan
2
10
50
0
Magnitude (dB)
Magnitude (dB)
Ejemplo
-10
-20
-30
-40
-50
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
-150
-200
-300
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
0
-100
-100
Phase (degrees)
Phase (degrees)
-100
-250
-200
-300
-400
-50
-200
-300
-400
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
Normalized Frequency ( rad/sample)
0.9
-500
Filtrado
Matlab solo permite llevar a cabo la
operacin de filtrado con seales y
sistemas digitales
[y,zf] = filter(b,a,X,zi): Filtra la
serie de datos en el vector X, usando el
filtro descrito por los vectores b y a
(coeficientes de la funcin de
transferencia) y entrega la respuesta
en el vector y
zi: Condiciones iniciales del filtro
(opcional)
zf: Condiciones finales del filtro
Filtrado
y = fftfilt(b,X,n): Filtra la serie de
datos en el vector X, usando el filtro FIR
descrito por el vector b (coeficientes de
la funcin de transferencia) y entrega
la respuesta en el vector y
n: Nmero de puntos de la FFT
Si la seal de entrada es grande, es
ms eficiente usar esta funcin que
filter para implementar un FIR
Otros
La funcin conv tiene dos aplicaciones en este
contexto:
Ya que los filtros FIR son sistemas LIT, su salida se
puede calcular como la convolucin de la seal de
entrada con el vector de coeficientes del filtro
Para facilitar los clculos para expandir las
funciones de transferencia se puede usar la
convolucin para calcular productos de polinomios
n
f ( x) ai x
i 0
n
i i 0
A a
g ( x) bi x
h( x ) f ( x ) g ( x )
i 0
m
i i 0
B b
C conv(A,B)
n m 1
C ci i 0
n m 1
i
c
x
i
i 0