Upload
felipe-andrade
View
28
Download
2
Embed Size (px)
Citation preview
Processamento Digital de Sinais – 2007.1Aula Pratica de Projetos de Filtros Digitais
Profa. Mylene Christine Queiroz de Farias
1 Introducao ao Matlab para Processamento de Sinais
Nesta aula, estudaremos alguns exemplos da utilizacao do Matlab em Processamento de Sinaise, em especial, da Toolbox de Processamento de Sinais. Mais informacoes a respeito das funcoescontidas neste Toolbox podem ser obtidas utilizando o comando: help signal.
Seguem algumas funcoes que serao uteis nesta aula:
• fliplr - inverte a ordem das colunas em uma matriz;
• conv - realiza a convolucao 1-D de dois vetores;
• roots - calcula raızes de um polinomio;
• factorize - fatora um polinomio;
• zplane - esboca diagrama de polos e zeros;
• zp2tf - encontra a funcao transferencia a partir dos polos e zeros;
• residuez - expansao em fracoes parciais da TZ racional;
• freqz - resposta em frequencia racional;
• impz - inversa de uma TZ racional;
• filter - filtro unidimensional.
Utilize a funcao help para obter mais detalhes de cada funcao.
Exercıcio 1.1 Estude e execute o programa intro_1, que executa a filtragem de um sinalaleatorio com um filtro passa-baixas simples.
Exercıcio 1.2 Estude e execute o programa intro_2, que fornece a localizacao dos zeros paraexemplos de filtros FIR de fase linear.
Exercıcio 1.3 Estude e execute o programa intro_3, que esboca o grafico do ganho da respostaem magnitude de um filtro de media deslizante, utilizando a funcao gain.
Exercıcio 1.4 Utilizando o Program 6_2, determine a funcao transferencia de um sistema apartir da posicao dos seus polos e zeros. Os zeros sao z1 = 0, 21, z2 = 3, 14, z3 = −0, 3 + j0, 5,z4 = −0, 3− j0, 5. Os polos sao p1 = −0, 45, p2 = 0, 67, p3 = 0, 81 + j0, 72, p4 = 0, 81− j0, 72.
Exercıcio 1.5 Utilizando o Program 6_3, determine a expansao em fracoes parciais da funcaotransferencia do exercıcio anterior.
1
2 Projeto Filtros FIR Utilizando o Matlab
O projeto de filtros FIR utilizando janelas segue os seguintes passos:
1. Estimacao da ordem do filtro FIR usando uma tabela ou formulas especıficas;
2. Determinacao da janela a ser utilizada de acordo com as especificacoes do filtro e ordemcalculada no item 1;
3. A resposta impulsiva do filtro e obtida multiplicando-se a resposta impulsiva do filtro idealpela janela obtida nos itens 1 e 2.
Figura 1: Tabela para comparacao 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 seguintesformulas. A formula proposta por Kaiser e dada pela seguinte relacao:
N ∼= −20 log10
(√δpδs
)− 1314, 6 (ωs − ωp) /2π
.
O programa kaiord.m pode ser utilizado para estimar a ordem de um FIR utilizando a formulade Kaiser. A segunda formula, um pouco mais precisa, foi proposta por Hermann e e dada pelaseguinte relacao:
N ∼= D∞(δp, δs)− F (δp, δs) [(ωs − ωp)/2π]2
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
],
eF (δp, δs) = b1 + b2 [log10δp − log10δs]
coma1 = 0, 005309, a2 = 0, 07114, a3 = −0, 4761, a4 = 0, 00266,
a5 = 0, 5941, a6 = 0, 4287, b1 = 11, 01217, b2 = 0, 51244.
A funcao firpmord pode ser utilizada para estimar a ordem do filtro FIR pela formula deHermann.
A Toolbox de Processamento de Sinais do Matlab inclui as seguintes funcoes para geracaode janelas que sao 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 funcao correspondente e o parametro apropriado.O projeto do filtro FIR consiste simplesmente da multiplicacao da janela projetada pela
resposta impulsiva do filtro ideal. Duas funcoes no Matlab pode ser utilizadas para gerar osfiltros FIR: fir1 e fir2. A funcao fir1 e utilizada para projetar filtros convecionais (passa-baixas, passa-altas, passa-faixa ou rejeita-faixa), equanto que fir2 pode ser utilizado paraprojetar filtros de resposta em magnitude com formas arbitrarias.
Exercıcio 2.1 Utilizando a funcao kaiord.m, calcule a ordem de um filtro FIR de fase linearcom as seguintes especificacoes: δp = 0, 0114469, δs = 0, 01778279, Fp = 1800, Fs = 2000 eFT = 12.000.
Exercıcio 2.2 Considere a determinacao dos coeficientes de uma janela de Kaiser que serautilizada para projetar um filtro passa-baixas FIR. O filtro tem as seguintes especificacoes:ωp = 0, 3π, ωs = 0, 4π e αs = 50dB. Utilizando o Program 10_4.m, esboce a janela obtida e oganho da sua magnitude em frequencia.
Exercıcio 2.3 Modifique o Program 10_4.m de forma a obter curvas de todas as janelas emum so grafico.
Exercıcio 2.4 Considerando as mesmas especificacoes dos exercıcios anteriores, utilize Program 10_5para projetar um passa-baixas utilizando a janela de Kaiser.
Exercıcio 2.5 Modifique o Program 10_5 para projetar um filtro FIR passa-altas.
3 Projetos de Filtros IIR Utilizando o Matlab
O projeto de filtros IIR segue os seguintes passos:
1. Conversao das especificacoes do filtro digital desejado GD(z) em especificacoes para umfiltro analogico HD(s) do mesmo tipo;
2. Projeto do filtro analogico passa-baixas HD(s);
3. Transformacao da funcao transferencia HD(s) em GD(z).
No item 2, uma das estapas do projeto consiste na determinacao da ordem e da frequencia decorte do filtro analogico. A toolbox de processamento de sinais do Matlab disponibiliza variasfuncoes 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 funcoes 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 parametros destas funcoes incluem a ordem, a frequencia de corte, o tipo do filtro e, excetopara o Butterworth, a variacao de amplitude permitida nas faixas de passagem e/ou rejeicao.
A funcao bilinear converte uma funcao transferencia do domınio s para o domınio z. Asseguintes funcoes do Matlab realizam as transformacoes 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 funcao transferencia de filtro digital passa-altas Chebyschevtipo 2, operando a uma taxa de amostragem de 4kHz e com as seguintes especificacoes: Fp =1kHz, Fs = 600Hz, atenuacao de 1dB na banda de passagem e de 40dB na banda de rejeicao.
Exercıcio 3.2 Determine a funcao transferencia e esboce a resposta em ganho de um filtrodigital passa-baixas elıptico: Fp = 800Hz, Fs = 1000 Hz, FT = 4000 Hz. A atenuacao na bandade passagem e de 0,5dB e na banda de rejeicao e de 40dB. O programa Program 9_1 deve serusado para este exemplo.
Da mesma forma que no exemplo anterior para Chebyschev tipo 2, Program_9_2 e Program_9_3podem 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 especi-ficacoes: ωp = 0, 7π, ωs = 0, 5π, αp = 1dB e αs = 32dB. Esboce a resposta impulsiva e o ganhodo filtro projetado.
Roteiro: Utilizando a transformada bilinear, obtemos
Ωp = tan (ωp/2) = 1, 962605
Ωs = tan (ωs/2) = 1, 0
A seguir, convertemos as especificacoes do domınio Ω do prototipo passa-baixas para o domınioΩ do passa-altas. Consideramos que o filtro prototipo e normalizado, ou seja, Ωp = 1. Logo,obtemos Ωs = 1, 962605 (apresente os calculos) realizando uma transformacao espectral.
A funcao cheb1ord e utilizada para estimar a ordem e a frequencia de passagem Wn = Ωp/πdo filtro passa-baixas. Entao, utiliza-se a funcao cheby1 para obter o filtro prototipo HLP (s).Converte-se a funcao transferencia de passa-baixas HLP (s) para passa-altas HHP (s), utilizando-se a mesma transformacao espectral. Finalmente, a funcao bilinear e utilizada para obter ofiltro IIR passa-altas HHP (z). Seguem as funcoes 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