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

Seales y Sistemas II

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

ecuacin de diferencias. El primer


elemento de cada vector corresponde a
la muestra actual.

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

Para pasabanda y rechazabanda, Wn


= [W1, W2] y el orden del filtro
resultante ser 2n

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

Para hallar los polos y ceros


[z,p,k]=butter(n,Wn,'s')
z = Empty matrix: 0-by-1
p = 1.0e+03 *
-2.4386 + 7.5051i
-2.4386 - 7.5051i
-6.3842 + 4.6384i
-6.3842 - 4.6384i
-7.8913
k = 3.0602e+19

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

frecuencia de corte del filtro


Para filtros de Chebyshev tipo II usar
cheby2(N,Rp,Ws)/,s
[N, Ws] = cheb2ord(Wp, Ws, Rp,
Rs)/,s):
Rp: Atenuacin en la banda de rechazo
Ws: Frecuencia lmite de la banda de
rechazo

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

Filtros Elpticos o de Cauer


ellip(N,Rp,Rs,Wp)/,s) : Disea un filtro
elptico pasabajos con:
N: Orden
Rp: Riple mximo en la banda de paso
Rs: Atenuacin minima en la banda de
rechazo
Wp: Frecuencia lmite de la banda de paso
[N, Wp] = ellipord(Wp, Ws, Rp, Rs):
Calcula el orden
Los parmetros de entrada y salida pueden
ser los mismos que en los casos anteriores

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

B = fir1(N,Wn): Disea un filtro


pasabajos FIR de N+1 coeficientes con
frecuencia de corte pi*Wn
B = fir1(N,Wn,tipo,ventana):
Permiten usar diferentes ventanas y
obtener diferentes respuestas
tipo: low, high, bandpass,
stop
ventana: Es un vector con las muestras
de la ventana, debe tener longitud N+1

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

Normalized Frequency ( rad/sample)

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

[N, Wn] = buttord(Wp, Ws, Rp,


Rs,'s');
[b,a] = butter(N,Wn,'s');
[bz,az] = impinvar(b,a,Wn);

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

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

-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

9.22 10 16 0.02 z 1 0.11z 2 0.06 z 3 3 10 3 z 4


H ( z)
1 1.96 z 1 1.96 z 2 1.07 z 3 0.32 z 4 0.04 z 5

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

[N, Wn] = buttord(Wp,Ws,Rp,Rs,'s');


[b,a] = butter(N,Wn,'s');
fs = Wn/(2*tan(1/2))
[bz,az]=bilinear(b,a,fs);

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

Normalized Frequency ( rad/sample)

0.9

-150
-200

-300

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

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

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