Aula Filtros Matlab

Preview:

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

Recommended