Processamento Digital de Sinais – 2007.1 Aula Pr´ atica atica de Projetos Proje tos de Filtros Digitais a Prof . Myl` ene ene Christine Christi ne Queiroz de Farias
1
Introdu odu¸ c˜ cao a ˜o ao Matlab para Processamento Processamento de Sinais
Nesta aula, estudaremos alguns exemplos da utiliza¸c˜ c˜ao ao do Matlab em Processamento de Sinais e, em especial, especial, da Toolbox de Processamento Processamento de Sinais. Sinais. Mais informa¸ informa¸c˜ coes ˜oes a respeito das fun¸c˜ coes o˜es help signal signal. contidas neste Toolbox podem ser obtidas utilizando o comando: help Seguem algumas fun¸c˜ coes ˜oes que ser˜ao ao ut´eis eis nesta aula: •
fliplr - inverte a ordem das colunas em uma matriz;
•
conv - realiza a convolu¸c˜ cao ˜ao 1-D de dois vetores;
•
roots - calcula ca lcula ra´ ra´ızes de um polinˆ poli nˆomio; omio;
•
factorize - fatora um polinˆ omio; omio;
•
zplane - esbo¸ca ca diagrama de p´olos olos e zeros;
•
zp2tf - encontra a fun¸c˜ c˜ao ao transferˆ transf erˆencia encia a partir dos p´olos olos e zeros;
•
residuez - expans˜ ao ao em fra¸c˜ c˜oes oes parciais da TZ racional;
•
freqz - resposta em freq¨uˆ uˆencia enc ia raciona raci onal; l;
•
impz - inversa de uma TZ racional;
•
filter - filtro unidimensional.
Utilize a fun¸c˜ caao ˜o help para obter mais detalhes de cada fun¸c˜ cao. a˜o. Exer Ex erc c´ ıcio ıc io 1.1 1. 1 Estude
e execute o programa intro_1, que executa a filtragem de um sinal aleat´orio orio com um filtro passa-baixas simples.
Exer Ex erc c´ ıcio ıc io 1.2 1. 2 Estude
e execute o programa intro_2, que fornece a localiza¸c˜ cao a˜o dos zeros para exemplos de filtros FIR de fase linear.
Exer Ex erc c´ ıcio ıc io 1.3 1. 3 Estude
e execute o programa intro_3, que esbo¸ca ca o gr´afico afico do ganho da resposta em magnitude de um filtro de m´ edia edia deslizante, utilizando a fun¸c˜ c˜ao ao gain. Exer Ex erc c´ ıcio ıc io 1.4 1. 4 Utilizando
Program m 6_2, determine a fun¸c˜ o Progra c˜ao ao transferˆ encia encia de um sistema a partir da posi¸c˜ cao ˜ao dos seus p´olos olos e zeros. Os zeros s˜ao ao z1 = 0, 21, 21, z z 2 = 3, 14, 14, z z 3 = 0, 3 + j + j00, 5, z4 = 0, 3 j0 j 0, 5. Os p´olos olos s˜aao p o p 1 = 0, 45, 45, p p 2 = 0, 67, 67, p p 3 = 0, 81 + j + j00, 72, 72, p p 4 = 0, 81 j0 j 0, 72. −
−
−
−
−
Exer Ex erc c´ ıcio ıc io 1.5 1. 5 Utilizando
Program am 6_3, determine a expans˜ao o Progr ao em fra¸c˜ coes ˜oes parciais da fun¸c˜ c˜aaoo transf tra nsferˆ erˆencia enc ia do exerc exe rc´´ıcio ıci o anterio ante rior. r.
1
2
Projeto Filtros FIR Utilizando o Matlab
O projeto de filtros FIR utilizando janelas segue os seguintes passos: 1. Estima¸c˜ao da ordem do filtro FIR usando uma tabela ou f´ormulas espec´ıficas; 2. Determina¸ca˜o da janela a ser utilizada de acordo com as especifica¸c˜oes do filtro e ordem calculada no item 1; 3. A resposta impulsiva do filtro ´e obtida multiplicando-se a resposta impulsiva do filtro ideal pela janela obtida nos itens 1 e 2.
Figura 1: Tabela para compara¸c˜ao dos ganhos para cada uma das janelas mais comuns. A ordem dos filtros pode ser obtida da tabela na Figura 1, ou utilizando umas das seguintes f´ormulas. A f´ormula proposta por Kaiser ´e dada pela seguinte rela¸c˜ao: N =
∼
20log10 14, 6 (ωs
−
−
δ p δ s 13 . ω p ) /2π −
O programa kaiord.m pode ser utilizado para estimar a ordem de um FIR utilizando a f´ormula de Kaiser. A segunda f´ormula, um pouco mais precisa, foi proposta por Hermann e ´e dada pela seguinte rela¸ca˜o: D (δ p , δ s ) F (δ p , δ s ) [(ωs ω p )/2π]2 N = . 14, 6 (ωs ω p ) /2π ∼
∞
−
−
−
no qual D (δ p , δ s ) = a1 (log10 δ p )2 + a2 (log10 δ p ) + a3 log10 δ s ∞
−
a4(log10 δ p )2 + a5 (log10 δ p ) + a6 ,
e F (δ p , δ s ) = b 1 + b2 [log10 δ p
−
log10δ s ]
com a1 = 0, 005309, a2 = 0, 07114, a3 =
0, 4761, a4 = 0, 00266,
−
a5 = 0, 5941, a6 = 0, 4287, b1 = 11, 01217, b2 = 0, 51244. A fun¸c˜ao firpmord pode ser utilizada para estimar a ordem do filtro FIR pela f´ormula de Hermann. A Toolbox de Processamento de Sinais do Matlab inclui as seguintes fun¸c˜ oes para gera¸ca˜o de janelas que s˜ao utilizadas no projeto de filtros FIR: 2
•
w=hann(L);
•
w=hamming(L);
•
w=blackman(L);
•
w=kaiser(L,beta).
Para gerar uma janela, bastar usar a fun¸c˜ao correspondente e o parˆametro apropriado. O projeto do filtro FIR consiste simplesmente da multiplica¸c˜ao da janela projetada pela resposta impulsiva do filtro ideal. Duas fun¸co˜es no Matlab pode ser utilizadas para gerar os filtros FIR: fir1 e fir2. A fun¸ c˜ao fir1 ´e utilizada para projetar filtros convecionais (passabaixas, passa-altas, passa-faixa ou rejeita-faixa), equanto que fir2 pode ser utilizado para projetar filtros de resposta em magnitude com formas arbitr´arias. Exerc´ ıcio 2.1 Utilizando
a fun¸c˜ao kaiord.m, calcule a ordem de um filtro FIR de fase linear com as seguintes especifica¸c˜oes: δ p = 0, 0114469, δ s = 0, 01778279, F p = 1800, F s = 2000 e F T = 12.000. Exerc´ ıcio 2.2 Considere
a determina¸c˜ao dos coeficientes de uma janela de Kaiser que ser´ a utilizada para projetar um filtro passa-baixas FIR. O filtro tem as seguintes especifica¸c˜ oes: ω p = 0, 3π, ωs = 0, 4π e αs = 50dB. Utilizando o Program 10_4.m, esboce a janela obtida e o ganho da sua magnitude em freq¨ uˆencia. Exerc´ ıcio 2.3 Modifique
o Program 10_4.m de forma a obter curvas de todas as janelas em
um s´o gr´afico. Exerc´ ıcio 2.4 Considerando
as mesmas especifica¸c˜oes dos exerc´ıcios anteriores, utilize Program 10_5 para projetar um passa-baixas utilizando a janela de Kaiser. Exerc´ ıcio 2.5 Modifique
3
o Program 10_5 para projetar um filtro FIR passa-altas.
Projetos de Filtros IIR Utilizando o Matlab
O projeto de filtros IIR segue os seguintes passos: 1. Convers˜ ao das especifica¸c˜oes do filtro digital desejado GD (z) em especifica¸c˜oes para um filtro anal´ ogico H D (s) do mesmo tipo; 2. Projeto do filtro anal´ogico passa-baixas H D (s); 3. Transforma¸ca˜o da fun¸ca˜o transferˆencia H D (s) em G D (z). No item 2, uma das estapas do projeto consiste na determina¸c˜ao da ordem e da freq¨uˆencia de corte do filtro anal´ogico. A toolbox de processamento de sinais do Matlab disponibiliza v´arias fun¸c˜oes que podem ser utilizadas com este objetivo: •
buttord para filtros Butterworth;
•
cheb1ord para filtros Chebyschev tipo 1;
•
cheb2ord para filtros Chebyschev tipo 2;
•
ellipord para filtros El´ıpticos.
3
Para o projeto de filtros, as seguintes fun¸c˜oes podem ser utilizadas: •
butter - para o projeto de filtros Butterworth;
•
cheby1 - para o projeto de filtros Chebyschev tipo 1;
•
cheby2 - para o projeto de filtros Chebyschev tipo 2;
•
ellip - para o projeto de filtros el´ıpticos.
Os parˆametros destas fun¸c˜oes incluem a ordem, a freq¨uˆencia de corte, o tipo do filtro e, exceto para o Butterworth, a varia¸c˜ao de amplitude permitida nas faixas de passagem e/ou rejei¸ca˜o. A fun¸c˜ao bilinear converte uma fun¸c˜ao transferˆencia do dom´ınio s para o dom´ınio z. As seguintes fun¸c˜oes do Matlab realizam as transforma¸co˜es espectrais: •
lp2lp - de um passa-baixas para um passa-baixas
•
lp2hp - de um passa-baixas para um passa-altas
•
lp2bp - de um passa-baixas para um passa-faixa
•
lp2bs - de um passa-baixas para um rejeita-faixa
Exerc´ ıcio 3.1 Determine
a ordem da fun¸c˜ao transferˆencia de filtro digital passa-altas Chebyschev tipo 2, operando a uma taxa de amostragem de 4kHz e com as seguintes especifica¸c˜oes: F p = 1kHz, F s = 600Hz, atenua¸c˜ao de 1dB na banda de passagem e de 40dB na banda de rejei¸c˜ao. Exerc´ ıcio 3.2 Determine
a fun¸c˜ao transferˆ encia e esboce a resposta em ganho de um filtro digital passa-baixas el´ıptico: F p = 800Hz, F s = 1000 Hz, F T = 4000 Hz. A atenua¸c˜ao na banda de passagem ´e de 0,5dB e na banda de rejei¸c˜ao ´e de 40dB. O programa Program 9_1 deve ser usado para este exemplo. Da mesma forma que no exemplo anterior para Chebyschev tipo 2, Program_9_2 e Program_9_3 podem ser usados para o projeto de filtros Chebyschev tipo 1 e Butterworth, respectivamente. Exerc´ ıcio 3.3 Projeto
de um filtro passa-altas Chebyschev tipo 1 com as seguintes especifica¸c˜oes: ω p = 0, 7π, ω s = 0, 5π, α p = 1dB e α s = 32dB. Esboce a resposta impulsiva e o ganho do filtro projetado. Roteiro: Utilizando a transformada bilinear, obtemos ˆ p = tan (ω p /2) = 1, 962605 Ω ˆ s = tan (ωs /2) = 1, 0 Ω ˆ do prot´otipo passa-baixas para o dom´ınio A seguir, convertemos as especifica¸c˜oes do dom´ınio Ω Ω do passa-altas. Consideramos que o filtro prot´ otipo ´e normalizado, ou seja, Ω p = 1. Logo, obtemos Ωs = 1, 962605 (apresente os c´ alculos) realizando uma transforma¸ ca˜o espectral. A fun¸c˜ao cheb1ord ´e utilizada para estimar a ordem e a freq¨uˆencia de passagem W n = Ω p /π do filtro passa-baixas. Ent˜ ao, utiliza-se a fun¸ca˜o cheby1 para obter o filtro prot´otipo H LP (s). Converte-se a fun¸c˜ao transferˆencia de passa-baixas H LP (s) para passa-altas H HP (s), utilizandose a mesma transforma¸c˜ao espectral. Finalmente, a fun¸c˜ao bilinear ´e utilizada para obter o filtro IIR passa-altas H HP (z). Seguem as fun¸c˜oes a serem utilizadas neste exerc´ıcio: [N,Wn] = cheb1ord(1,1.9626105, 1, 32,s); [B,A] =cheby1(N,1,Wn,s); [BT,AT] = lp2hp(B,A,1.9626105); [num,den] = bilinear(BT,AT,0.5);
4