Upload
miguel-f-salamanca
View
219
Download
0
Embed Size (px)
Citation preview
8/19/2019 06.FiltrosMatlab
1/49
Señales y Sistemas IIGrupo 3
Filtros en MatlabJan Bacca Rodríguez
[email protected]: 411-201
8/19/2019 06.FiltrosMatlab
2/49
• Matlab permite calcular numéricamente larespuesta en frecuencia de sistemascontinuos y discretos para valores discretos
de frecuencia.• La respuesta en frecuencia de un sistema es
la transformada de Fourier de su respuestaimpulso.
•
Los comandos freqs and freqz permitenevaluar la respuesta en frecuencia desistemas descritos por ecuacionesdiferenciales o de diferencia sin tener la
respuesta impulso.
Respuesta en Frecuencia deSistemas LTI
8/19/2019 06.FiltrosMatlab
3/49
• H = freqs (b, a, w) calcula larespuesta en frecuencia del sistema entiempo continuo descrito por la ecuacin!
freqs
"a, b! vectores de coe#cientes de laecuacin diferencial. $l primer elementode cada vector corresponde a la
derivada m%s alta.
∑∑=
−
=
− = M
kk
k
k M
N
kk
k
k N dt
t x d b
dt
t yd a
00
)()(
8/19/2019 06.FiltrosMatlab
4/49
•
w! vector de frecuencias donde H(j ω
) ser% calculada.
• freqs (b, a, w) sin ar&umentos de
salida &ra#ca la ma&nitud y fase de H(j ω ) .
•
Si no se especi#ca w' matlab esco&e unvector de 200 frecuencias donde calcular H(j ω ) .
• Si se reempla(a w por un n)mero entero
freqs
8/19/2019 06.FiltrosMatlab
5/49
• [H,w] = freqz (b, a, N) calcula larespuesta en frecuencia del sistema entiempo discreto descrito por la ecuacin!
freqz
• a, b! vectores de coe#cientes de laecuacin de diferencias. $l primerelemento de cada vector corresponde ala muestra actual.
[ ] [ ]∑∑==
−=−
M
kk
N
kk kn x bknya
00
8/19/2019 06.FiltrosMatlab
6/49
• N! *)mero de frecuencias
uniformemente distribuidas entre 0 y π en las +ue se calcular% H(e j ω ). Si N no seespeci#ca 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 vectorde frecuencias donde se calcular% H(e j ω ).
• [H, f] = freqz (b, a, N, fs): fses la frecuencia de muestreo de la señal
• H = freqz (b, a, F, fs): F es el
vector de frecuencias ,-( donde secalcular% H(e j ω ).
freqz
8/19/2019 06.FiltrosMatlab
7/49
/iseño de #ltros•
Matlab emplea las mismas funcionespara diseñar #ltros anal&icos y #ltrosdi&itales IIR
• 0na funcin para cada familia
• Las funciones de transferencia de los#ltros diseñados son!
( ) ( )
( )
( ) ( )
( ) nn
n
n
n
nn
n
nn
z a z a
z b z bb
z A
z B z H
a sa s
b sb sb
s A
s B s H
−
+
−
−
+
−
+
−
+
−
+++
+++==
+++
+++==
1
1
2
1
1
21
1
1
2
1
1
21
...1
......
...
8/19/2019 06.FiltrosMatlab
8/49
1aracter2sticas enfrecuencia• A p! M%ima
atenuacinpermitida en la
banda de paso• As! M2nima
atenuacin en labanda de rec4a(o
• ω p! L2mite de la
banda de paso
• ω s! L2mite de la
banda de rec4a(o
8/19/2019 06.FiltrosMatlab
9/49
Filtros de 5utter6ort4• [b,a]=butter(n,Wn)! /iseña un #ltro
de 5utter6ort4 pasaba7os di&ital deorden n y frecuencia de corte Wn*pi.
• [b,a]=butter(n,Wn,’s’)! /iseña un
#ltro de 5utter6ort4 anal&ico ,Wn rad8s• [b,a]=butter(n,Wn,’tipo’): $l
par%metro tipo’permite diseñar otrostipos de #ltros
• low, hi!h, ban"pass, stop
• 9ara pasabanda y rec4a(abanda' Wn= [W#, W$] y el orden del #ltro
resultante ser% $n
8/19/2019 06.FiltrosMatlab
10/49
Filtros de 5utter6ort4
• La misma funcin se puede usar paraobtener los polos y ceros del #ltro o surepresentacin en variables de estado!
•[z,p,%]= butter(n,Wn)
• [&,',,]= butter(n,Wn)
• [N,Wn]=
buttor"(Wp,Ws,p,s)+,’s’) 1alculael orden y la frecuencia de corte del #ltro
• 9ara pasabanda y rec4a(abanda' Wp y Ws son vectores de dos componentes
8/19/2019 06.FiltrosMatlab
11/49
$7emplo
• /iseñe un #ltro butter6ort4pasaba7os con las si&uientescaracter2sticas!
• A p = 2.5dB
•
As = 60dB• f p = 1kHz, ω p = 628 !ad"s
• f s = 5kHz, ω s = 1#1 !ad"s
8/19/2019 06.FiltrosMatlab
12/49
$7emplo
• 9ara 4allar el orden del #ltro usamos![N, Wn] = buttor"(Wp,Ws,p,s,s)
•
Resultando en!• N = -
• Wn = ./01#2e342
•
fn = #/$--1e342
• :ue coinciden con los valoresencontrados anteriormente
8/19/2019 06.FiltrosMatlab
13/49
$7emplo
• 9ara 4allar los polos y ceros
• [z,p,%]=butter(n,Wn,s)
• z = 56pt7 6atri8: 49b79#
•
p = #/4e342 * 9$/20; 3 ./-4-#i
9$/20; 9 ./-4-#i
9;/20$ 3 /;20i
9;/20$ 9 /;20i
9./01#2
• % = 2/4;4$e3#1
-8000 -6000 -4000 -2000 0
-8000
-6000
-4000
-2000
0
2000
4000
6000
8000
8/19/2019 06.FiltrosMatlab
14/49
$7emplo
• ; para 4allar la funcin detransferencia!
• [b,a] = butter(N,Wn,s)
• b = #/4e3#1 *[4 4 4 4 4 2/4;4$]
• a = [# $/--2.e34 2/$;4.e340
$/-.2#e3#$ #/$-1e3#; 2/4;4$e3#1]
191621238445
19
1006.31025.11057.21026.31055.2
1006.3)(
×+×+×+×+×+
×=
s s s s s s H
8/19/2019 06.FiltrosMatlab
15/49
$7emplo• 9odemos observar la respuesta en frecuencia
usando! freqs(b,a)
10
2
10
3
10
4
10
5-200
-100
0
100
200
Freuenc rad/s
P h a s e ( d e g r e e s )
102
103
104
105
10-6
10-4
10-2
100
Frequency (rad/s)
M a g n i t u d e
8/19/2019 06.FiltrosMatlab
16/49
Filtros de 14ebys4ev I y II•
8/19/2019 06.FiltrosMatlab
17/49
Filtros de 14ebys4ev I y II
• [N, Wp] =
8/19/2019 06.FiltrosMatlab
18/49
$7emplo
• /iseñe #ltros pasaba7os de14ebys4ev tipo I y II con lassi&uientes caracter2sticas!
• A p = 2.5dB
•
As = 60dB• f p = 1kHz, ω p = 628 !ad"s
• f s = 5kHz, ω s = 1#1 !ad"s
8/19/2019 06.FiltrosMatlab
19/49
$7emplo
• $l orden debe ser el mismo para losdos #ltros
• [N, Wp] =
8/19/2019 06.FiltrosMatlab
20/49
$7emplo
• 9ara 4allar los polos yceros
• [z,p,%] =
8/19/2019 06.FiltrosMatlab
21/49
8/19/2019 06.FiltrosMatlab
22/49
$7emplo
102
103
104
105
-200
-150
-100
-50
0
50
100
150
200
Freuenc rad/s
P h a s e ( d e g r e e s )
102
103
104
105
10-6
10-4
10-2
100
Frequency (rad/s)
M a g n i t u d e
103
104
105
-200
-150
-100
-50
0
50
100
150
200
Freuenc rad/s
P h a s e ( d e g r e e s )
103
104
105
10-5
10-4
10-3
10-2
10-1
100
Frequency (rad/s)
M a g n i t u d e
8/19/2019 06.FiltrosMatlab
23/49
Filtros $l2pticos o de 1auer
• ellip(N,p,s,Wp)+,’s’) ! /iseña un #ltroel2ptico pasaba7os con!
• N! =rden
• p! Riple m%imo en la banda de paso
• s!
8/19/2019 06.FiltrosMatlab
24/49
$7emplo
• /iseñe un #ltro el2ptico pasaba7oscon las si&uientes caracter2sticas!
• A p = 2.5dB
• As = 60dB
•
f p = 1kHz, ω p = 628 !ad"s• f s = 5kHz, ω s = 1#1 !ad"s
8/19/2019 06.FiltrosMatlab
25/49
$7emplo
• [N5, Wp5] = ellipor"(Wp, Ws, p,
s,s)>
• [z5,p5,%5] = ellip(N5,p,s,
Wp5,s)• [b5,a5] = ellip(N5,p,s,Wp5,s)
• N5 = 2
•
Wp5 =;/$02$e342
107233
10112
1018.71084.31014.4
1018.71077.199.77)(
×+×+×+
×+×+=
−
s s s
s s s H
8/19/2019 06.FiltrosMatlab
26/49
$7emplo
10
2
10
3
10
4
10
5-200
-100
0
100
200
Frequency (rad/s)
P h a s e ( d e g r e e s )
102
103
104
105
10-5
100
Frequency (rad/s)
M a g n i t u d e
-2000-1500-1000-500 0
-3
-2
-1
0
1
2
3
x 104
8/19/2019 06.FiltrosMatlab
27/49
Filtros de 5essel
• besself(n,Wo)! /iseña un #ltro de5essel anal&ico de orden n' Wo es lafrecuencia l2mite para la +ue el retardo
de &rupo es constante.
• La salida puede tener las 3 formasvistas anteriormente.
• Solo se pueden diseñar #ltrosanal&icos pasaba7os
8/19/2019 06.FiltrosMatlab
28/49
$7emplo
• Se construy un #ltro de 5essel de orden > concaracter2sticas similares a las de los e7emplosanteriores.
• A p = 2.5dB, As = 60dB, f p = 1kHz, f s = 5kHz
• [z',p',%'] = besself(-,Wp)
• [b', a'] = besself(-,Wp)>
181521238445
18
1079.91013.61071.11067.21039.2
1079.9)(
×+×+×+×+×+
×=
s s s s s s H
8/19/2019 06.FiltrosMatlab
29/49
$7emplo
-6000 -4000 -2000 0
-6000
-4000
-2000
0
2000
4000
6000
102
103
104
105
-200
-100
0
100
200
Frequency (rad/s)
P h a s e ( d e g r e
e s )
102
103
104
105
10-8
10-6
10-4
10-2
100
Frequency (rad/s)
M a g n i t u d e
8/19/2019 06.FiltrosMatlab
30/49
/iseño de FIR8RIF
• ' = fir#(N,Wn)! /iseña un #ltro
pasaba7os FIR de N3# coe#cientes confrecuencia de corte pi*Wn
• ' = fir#(N,Wn,’tipo’,?entana)!9ermiten usar diferentes ventanas y
obtener diferentes respuestas• tipo’: low’, hi!h’, ban"pass’,
stop’
• ?entana! $s un vector con las muestras
de la ventana' debe tener lon&itud N3#
( ) ( ) nn z b z bb z B z H −
+
−+++== 1
1
21 ...
8/19/2019 06.FiltrosMatlab
31/49
/iseño de FIR8RIF
• Wn debe ser un vector de ? posiciones paralos tipos ban"pass’ y stop’
• Wn puede tener m%s de dos posiciones' encuyo caso se alternan las bandas de paso yrec4a(o.
• $n este caso el par%metro tipo’ toma losvalores
• 9#’! 1omien(a con una banda de paso
• 94’! 1omien(a con una banda derec4a(o
8/19/2019 06.FiltrosMatlab
32/49
/iseño de FIR8RIF
• La funcin fir# usa una ventana4ammin&
• Las ventanas m%s comunes se &eneran
con las funciones!• w = ha66in!(@)
• w = hann(@)
• w = bla
8/19/2019 06.FiltrosMatlab
33/49
$7emplo• /iseñar pasaba7os FIR con frecuencia
de corte W< = # de ?@ coe#cientesusando las ventanas m%s conocidas.
N = $4>
W = ones(N3#,#)>WHn = hann(N3#)>
W'l = bla
W'a = bartlett(N3#)>
Wn = #+pi>
' = fir#(N,Wn,W)>
'H6 = fir#(N,Wn)>
'Hn = fir#(N,Wn,WHn)>
''l = fir#(N,Wn,W'l)>
''a = fir#(N,Wn,W'a)>
0 2 4 6 8 10 12 14 16 18 20-0.1
-0.05
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
Rectangular
Hamming
Hanning
BlackmanBartlett
8/19/2019 06.FiltrosMatlab
34/49
$7emplo
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-700
-600
-500
-400
-300
-200
-100
0
Normalized Freuenc ×π rad/sam le
P h a s e ( d e g r e e s )
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
20
Normalized Frequency (×π rad/sample)
M a
g n i t u d e ( d B )
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1200
-1000
-800
-600
-400
-200
0
Normalized Frequency (×π rad/sample)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100
-80
-60
-40
-20
0
20
Normalized Frequency (×π rad/sample)
M a
g n i t u d e ( d B )
Rectan&ular -ammin&
8/19/2019 06.FiltrosMatlab
35/49
$7emplo-annin& 5lacAman 5artlett
0 0.5 1-1000
-800
-600
-400
-200
0
Normalized Frequency (×π rad/sample)
Phase(degrees)
0 0.5 1-150
-100
-50
0
50
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
0 0.5 1-2000
-1500
-1000
-500
0
Normalized Frequency (×π rad/sample)
0 0.5 1-40
-30
-20
-10
0
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
0 0.5 1-1500
-1000
-500
0
Normalized Frequency (×π rad/sample)
a s e
e g r e e s
0 0.5 1-150
-100
-50
0
50
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
8/19/2019 06.FiltrosMatlab
36/49
/iseño de FIR8RIF
• ' = fir$(N,f,6) /iseña un #ltro FIR de N3# coe#cientes cuya respuesta en frecuenciaest% descrita por los vectores f y 6 ,Muestreoen frecuencia
• f es un vector de valores entre B y @
• 6 especi#ca la respuesta en ma&nitude del#ltro en dic4os puntos ,no en d5
• ' = fir$(N,f,6,npt,?entana)! 9ermite usardiferentes ventanas' al i&ual +ue fir#.
• npt es el n)mero de puntos en el +ue se
interpola la respuesta en frecuencia ,por lo
( ) ( ) nn z b z bb z B z H −
+
− +++== 11
21 ...
8/19/2019 06.FiltrosMatlab
37/49
$7emplo• /iseñar un
pasaba7os FIR confrecuencia decorte W< = # de ?@
coe#cientesusando muestreoen frecuencia.N = $4>
Wn = #+pi>
f = [4 Wn Wn #]>
6 = [# # 4 4]>
'AF = fir$(N,f,6)>
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1200
-1000
-800
-600
-400
-200
0
Normalized Frequency (×π rad/sample)
P h a s e ( d e g r e e s )
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-100
-80
-60
-40
-20
0
20
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
8/19/2019 06.FiltrosMatlab
38/49
Transformaciones de
frecuencia anal&icas• Transforman #ltros pasaba7os
normali(ados en la respuesta re+uerida
•
La respuesta ori&inal se puede especi#carcomo los coe#cientes de la funcin detransferencia o en variables de estado' lasalida estar% en el mismo formato
• [bt,at] = lp$lp(b,a,Wo)[&t,'t,t,t] = lp$lp(&,',,,Wo)
• Wo es la frecuencia de corte del nuevo#ltro
8/19/2019 06.FiltrosMatlab
39/49
Transformaciones de
frecuencia anal&icas• [bt,at] = lp$hp(b,a,Wo)
• [bt,at] = lp$bp(b,a,Wo,'W)
•
[bt,at] = lp$bs(b,a,Wo,'W)
• Wo es la frecuencia de corte parapasaaltos
• Wo = sqrt(w#*w$) es la frecuencia decentral para pasabanda y rec4a(abanda
• 'W = w$9w# es el anc4o de banda parapasabanda y rec4a(abanda
8/19/2019 06.FiltrosMatlab
40/49
Transformaciones
anal&ico C di&ital• [bz,az] = i6pin?ar(b,a,fs,tol)! 1rea un
#ltro di&ital a partir de un #ltro anal&ico usandoinvariancia del impulso.
• b,a son vectores +ue contienen los coe#cientesde la respuesta en frecuencia del #ltro anal&ico
• fs es la frecuencia de muestreo de la respuestaal impulso del #ltro anal&ico ,@-( si no se
especi#ca• tol es la tolerancia en ma&nitud para
determinar si dos polos son el mismo conmultiplicidad' ,B'BB@ si no se especi#ca
8/19/2019 06.FiltrosMatlab
41/49
$7emplo•
Transformar el #ltro buter6ort4anal&ico del primer e7emplo en unodi&ital con frecuencia de corte @.
• Recordemos +ue
[N, Wn] = buttor"(Wp, Ws, p,
s,s)>
[b,a] = butter(N,Wn,s)>
[bz,az] = i6pin?ar(b,a,Wn)>
1
037.8913e +==⇒=
z
s s
s
z s f T
ω
ω
ω
ω
8/19/2019 06.FiltrosMatlab
42/49
$7emplo
102
103
104
105
-200
-100
0
100
200
Frequency (rad/s)
P h a s e ( d e g r e e
s )
102
103
104
105
10-6
10-4
10-2
10
0
Frequency (rad/s)
M a g n i t u d e
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)
P h a s e ( d e g r e e s )
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-50
-40
-30
-20
-10
0
10
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
8/19/2019 06.FiltrosMatlab
43/49
$7emplo
• Las funciones de transferencia ser%n!
54321
4332116
04.032.007.196.196.1110306.011.002.01022.9)(
−−−−−
−−−−−−
−+−+−×++++×=
z z z z z z z z z z H
191621238445
19
1006.31025.11057.21026.31055.21006.3)(
×+×+×+×+×+×=
s s s s s s H
8/19/2019 06.FiltrosMatlab
44/49
Transformacionesanal&ico C di&ital• [z",p",%"]=bilinear(z,p,%,fs)!
1rea un #ltro di&ital a partir de un #ltroanal&ico usando la transformacin
bilineal• z,p,% son los ceros' polos y &anancia
del #ltro anal&ico ori&inal
•
fs es la frecuencia de muestreo ,@-( sino se especi#ca
• Tambien se puede utili(ar con lasrepresentaciones como funcin de
transferencia ,a,b o variables de
8/19/2019 06.FiltrosMatlab
45/49
$7emplo•
Transformar el #ltro buter6ort4anal&ico del primer e7emplo en unodi&ital con frecuencia de corte @.
[N, Wn] = buttor"(Wp,Ws,p,s,s)>
[b,a] = butter(N,Wn,s)>
fs = Wn+($*tan(#+$))
[bz,az]=bilinear(b,a,fsD
3
3
102225.7
2
1tan2
108913.7
2tan
2
×=
×
=⇒ = s z
s
s f T ω
ω
8/19/2019 06.FiltrosMatlab
46/49
$7emplo
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)
P h a s e ( d e g r e e
s )
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-50
-40
-30
-20
-10
0
10
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-500
-400
-300
-200
-100
0
Normalized Freuenc ×π rad/sam le
P h a s e ( d e g r e e
s )
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-300
-250
-200
-150
-100
-50
0
50
Normalized Frequency (×π rad/sample)
M a g n i t u d e ( d B )
8/19/2019 06.FiltrosMatlab
47/49
Filtrado• Matlab solo permite llevar a cabo la
operacin de #ltrado con señales ysistemas di&itales
• [7,zf] = filter(b,a,B,zi)! Filtra la
serie de datos en el vector B' usando el#ltro descrito por los vectores b y a ,coe#cientes de la funcin detransferencia y entre&a la respuesta
en el vector 7• zi! 1ondiciones iniciales del #ltro
,opcional
•
zf! 1ondiciones #nales del #ltro
8/19/2019 06.FiltrosMatlab
48/49
Filtrado• 7 = fftfilt(b,B,n)! Filtra la serie de
datos en el vector B' usando el #ltro FIRdescrito por el vector b ,coe#cientes dela funcin de transferencia y entre&a
la respuesta en el vector 7• n! *)mero de puntos de la FFT
• Si la señal de entrada es &rande' esm%s e#ciente usar esta funcin +uefilter para implementar un FIR
8/19/2019 06.FiltrosMatlab
49/49
=tros
• La funcin