Baixe o app para aproveitar ainda mais
Prévia do material em texto
Projeto de filtros digitais usando o Matlab Projeto de filtros digitais IIR usando o Matlab No contexto de um sistema de processamento digital de sinais de tempo contínuo (TC), temos o diagrama de blocos: ω=Ω/T amostragem sem rebatimento: Relação entre frequências importantes do sistema equivalente desejado Hc(jω) e as correspondentes frequências importantes para o sistema de tempo discreto que será projetado Projeto de filtro digital passa-baixas IIR Projeto de filtro digital passa-baixas IIR Exemplo de aplicação: Especificações para o filtro equivalente de TC faixa de passagem de 0 a 1000π rad/s, com critério de Rp = 1 dB faixa de rejeição de 2000π rad/s em diante, com critério de Rr= 40 dB frequência angular de amostragem igual a 20.000π rad/s ω=Ω/T Ωp = 0,1π rad será o limite para a faixa de passagem e Ωr = 0,2π rad o início da faixa de rejeição. Os valores de Rp e Rr são os mesmos para o sistema equivalente de TC. Projeto de filtro digital passa-baixas IIR Ωp = 0,1π rad será o limite para a faixa de passagem e Ωr = 0,2π rad o início da faixa de rejeição. Os valores de Rp e Rr são os mesmos para o sistema equivalente de TC. Reacerto das frequências importantes de TD para a norma do Matlab No Matlab, as frequências de TD que vão de 0 a π rad são divididas por π, passando, então, a cobrir a faixa de 0 a 1. Para seguir esta convenção, as frequências importantes calculadas acima passam a ser Wp = 0,1 e Wr = 0, Projeto do filtro Butterworth para as especificações fornecidas n resultou igual a 8 [n,Wn] = buttord(Wp,Wr,Rp,Rr) [n,wn]=buttord(0.1,0.2,1,40) determina a ordem n do filtro a ser usada pelo comando seguinte, butter, bem como uma frequência auxiliar Wn que também é necessária para o comando butter Notar que as frequências Wp e Wr são as frequências normalizadas para o intervalo de 0 a 1 das faixas de passagem e de rejeição. Utilizando as especificações numéricas acima fornecidas ou calculadas, o comando fica Para calcular os coeficientes a(k) e b(k) do filtro, lembrando que a(k) são os parâmetros da parte recursiva na equação de diferenças e b(k) são os da parte de média móvel, utiliza-se o comando [b,a]=butter(n,wn) ====================================================== Se desejarmos verificar como ficou a FRF do filtro projetado usamos [H,w]=freqz(b,a,10000); em que o número 10000 foi escolhido arbitrariamente para calcular valores da FRF neste número de valores de frequência entre 0 e π rad. Para desenhar o módulo da FRF em dB, usamos plot(w/pi,20*log10(abs(H))), neste caso obtendo-se o eixo de frequência normalizada entre 0 e 1. Caso se deseje o eixo entre 0 e π rad basta não dividir o w por pi no comando acima. Para desenhar a curva de defasagem da FRF do filtro projetado, usamos plot(w/pi,unwrap(angle(H))) em que usamos o commando unwrap para o Matlab não dar saltos de 2π na fase quando ela sair da faixa entre – π e π. faixa de passagem: 0 a 1000π rad/s (Rp = 1 dB) Wp = 0,1 faixa de rejeição: > 2000π rad/s (Rr= 40 dB) Wr = 0,2 ωs = 20.000π rad/s Diagrama de polos e zeros do filtro digital resultante Real Part -1 -0.5 0 0.5 1 Im ag in ar y Pa rt -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 zplane(b,a) Real Part -1.05 -1 -0.95 -0.9 Im ag in ar y Pa rt -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 Como implementar o filtro digital resultante ? b = 1.0e-04 *[0.0049 0.0391 0.1368 0.2737 0.3421 0.2737 0.1368 0.0391 0.0049] a = [1.0000 -6.1483 16.7106 -26.1941 25.8774 -16.4864 6.6107 -1.5246 0.1548] a(0) = 1 e C.I.s=0 Coeficientes dados pelo Matlab têm várias casas decimais e uma implementação com número finito de bits pode requerer atenção pois o filtro realizado pode não ter a FRF desejada e/ou apresentar comportamentos inesperados como oscilações. Vide referências como Oppenheim e Schafer, Discrete-time Signal Processing, 2010. Projeto do filtro elíptico (Cauer) para as especificações fornecidas n resultou = 4 (bem menor do que para o Butterworth) Se desejarmos verificar como ficou a FRF do filtro IIR projetado usamos [H,w]=freqz(b,a,10000); faixa de passagem: 0 a 1000π rad/s (Rp = 1 dB) Wp = 0,1 faixa de rejeição: > 2000π rad/s (Rr= 40 dB) Wr = 0,2 ωs = 20.000π rad/s Módulo se anula, i.e., há zeros da função de transferência sobre a circunferência unitária. Fase dá salto de π Vejamos o respectivo diagrama de polos e zeros Real Part -1 -0.5 0 0.5 1 Im ag in ar y Pa rt -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 zplane(b2,a2) Comparação das curvas de módulo e defasagem dos dois filtros digitais projetados Em preto o Butterworth e em vermelho o elíptico. Notar que o elíptico será mais eficiente de um ponto de vista computacional, pois sua ordem é 4 e não 8. Comparação das resposta a degrau dos dois filtros digitais projetados Butterworth (preto); elíptico (vermelho). As amostras foram unidas para fins de visualização. 0 20 40 60 80 100 120 0 0.5 1 1.5 0 20 40 60 80 100 120 0 0.5 1 1.5 Note que o ganho DC resultou diferente ! Daonde veio isto? 10 -3 -4 -2 0 2 4 6 8 10 12 14 16 -4 -2 0 2 10 -3 -2 0 2 4 6 8 10 12 14 16 -0.8 -0.6 -0.4 -0.2 0 Ganho DC do elíptico 1 dB menor: 0.8913 ao invés de ganho = 1 Mais oscilatório, mas atraso menor (ver td na curva de defasagem) Vide proposta de exercício computacional no texto em pdf sobre projeto de filtros digitais usando o Matlab, que se encontra no Moodle da disciplina. Para filtros IIR passa-altas, passa-faixa, rejeita-faixa, vide help do Matlab. Mas a maneira de se proceder é similar àquela que acabamos de apresentar. Para projetar filtros FIR, há métodos como do truncamento da resposta ao pulso unitário de filtro ideal por janela, de interpolação de amostras da FRF ideal desejada, de otimização. Vide help do Matlab e referências como Oppenheim e Schafer, Discrete-time Signal Processing, 2010. Slide Number 2 Slide Number 3 Slide Number 4 Slide Number 5 Slide Number 6 Slide Number 7 Slide Number 8 Slide Number 9 Slide Number 10 Slide Number 11 Slide Number 12 Slide Number 13 Slide Number 14 Slide Number 15 Slide Number 16
Compartilhar