Capitulo 07
Capitulo 07
FUNDAMENTOS DE FILTROS
A título de ilustração, o seguinte código passa um sinal de áudio por um filtro Passa-
1−az
Tudo descrito por H ( z )= , onde a = 0,5.
z−a
Se for traçada a resposta em magnitude deste filtro, será observado que o mesmo não
altera a magnitude do sinal, sendo por isso sua denominação “passa-tudo”. Contudo, se
plotada a fase do filtro, nota-se a mudança em fase imposta pelo mesmo. Todavia, isto
não altera o conteúdo do áudio significativamente a ponto de percebemos diferenças
entre o áudio original e o filtrado, demonstrando a insensibilidade à fase deste tipo de
sinal.
Contudo, há sinais cujo conteúdo de informação está mais associado à forma de onda,
como por exemplo, o sinal de eletrocardiograma ou uma imagem. Nesta situação, é
importante a análise do desempenho da resposta temporal do filtro, para que este não
provoque perda da informação contida na forma de onda.
Para ilustrar tal situação, tomemos a seguinte imagem, no qual é apresentada sua
resposta em frequência em magnitude e fase:
Razão de Subida
o Lenta – a resposta demora em convergir ao valor de regime permanente
(indesejável);
o Rápida – rápida convergência ao valor de regime permanente (desejável).
Presença de Overshoot
o Com – presença de sobressinal no regime transitório (indesejável);
o Sem – ausência de sobressinal no regime transitório da resposta
(desejável);
Variação de Fase
o Linear – existência de uma constante de proporcionalidade entre a fase
da resposta e a fase do sinal de entrada (desejável);
o Não linear – inexistência de uma proporcionalidade constante entre a
fase da resposta e a fase do sinal de entrada (indesejável).
Passa-baixa;
Passa-alta;
Passa-faixa;
Rejeita-faixa.
Há ainda o filtro Passa-tudo, visto anteriormente, cuja principal função tem a ver com a
alteração do comportamento em fase da entrada, sem mudanças na resposta da
magnitude com relação à frequência. Observe ainda que os filtros do tipo passa-baixa e
passa-alta são caracterizados por apenas uma única frequência de corte, ao passo que os
filtros passa-faixa e rejeita-faixa são caracterizados por duas frequências de corte, a
inferior e a superior, respectivamente.
Alguns tipos podem ser obtidos a partir de outros mediante a técnica da inversão
espectral. Por exemplo, é possível obter um filtro passa-alta a partir do projeto de um
filtro passa-baixa. No caso de filtros digitais, isso é possível apenas pela alteração de
sinal dos coeficientes do filtro.
Ao fator de “Roll-off”:
o Lento – taxa de transição mais suave, normalmente indesejada;
o Rápido – transição abrupta, normalmente desejada.
Oscilação na banda de passagem:
o Ripple – presença de oscilações, sendo indesejado;
o Plano – ausência de oscilações, sendo o comportamento desejado.
Atenuação na banda de rejeição:
o Pobre – baixa atenuação das bandas a serem rejeitadas (indesejado);
o Boa – grande atenuação das bandas a serem rejeitadas (desejável).
FILTRO FIR
Filtros FIR são do tipo Resposta Impulsiva Finita, ou seja, sua resposta ao impulso é
formada por um número finito de termos ou amostras. Uma das características dos
filtros FIR é que eles são basicamente formados pela operação com amostras atuais e
passadas apenas da entrada, sendo assim não realimentados e, portanto, não
apresentando polos, sendo sempre estáveis. Por outro lado, para se conseguir uma boa
performance é necessária uma ordem elevada, o que acarreta em grande custo
computacional, podendo ser desvantajoso quando implementado em um hardware
limitado.
Este filtro, embora do tipo FIR, também pode ser realizado recursivamente através da
seguinte equação:
1
y [ n ] = y [ n−1 ] + (x [ n ] −x [ n−N ] )
N
onde é a frequência de corte normalizada desejada. Como pode ser visto, esta
realização é ainda mais interessante que a versão recursiva apresentada anteriormente,
para o caso em que há limitações no processador alvo e/ou memória, haja vista que o
EMA não utiliza a N-ésima amostra da entrada, dispensando sua espera e devido
armazenamento em memória.
h 0=h10=C 5
h1=h9=C 4
h2 =h8=C 3
h3 =h7=C 2
h 4=h 6=C 1
h5 =C0
sin (nπ ν 1)
1. Passa baixa: C 0=ν 1 e C n=
nπ
−sin (nπ ν 1)
2. Passa alta: C 0=1−ν 1 e C n=
nπ
sin (nπ ν 2)−sin ( nπ ν 1)
3. Passa faixa: C 0=ν 2−ν 1 e C n=
nπ
sin (nπ ν 1)−sin (nπ ν 2)
4. Rejeita faixa: C 0=1−(ν ¿¿ 2−ν ¿¿ 1)¿ ¿ e C n=
nπ
Técnica de Janelamento
sin ( ω c ∙ n )
h LP [ n ] = −∞ ≤ n ≤ ∞
π∙n
sin ( ω c ∙ ( n−M ) )
h^ LP [ n ] =hLP [ n ] ∙ w [ n ] = 0 ≤ n≤ N−1
π ∙ ( n−M )
H LP ( e )= { H LP ( e )∗W ( e ) } ∙ e
^ jω jω jω − jMω
{
2n N −1
,0 ≤ n ≤
N−1 2
o Bartlett w [ n ] =
2 n N −1
2− , ≤ n ≤ N −1
N −1 2
{ ( N2−1 ) , 0 ≤ n≤ N−1
πn
0 ,5−0 , 5∙ cos
o Hanning w [ n ] =
0 , fora
{ ( N−1 ) , 0 ≤ n≤ N−1
2 πn
0 ,54−0 , 46 ∙ cos
o Hamming w [ n ] =
0 , fora
Cada janela possui um tipo de resposta em frequência, como pode ser conferido na
ilustração a seguir:
Uma técnica eficiente para a síntese de filtros digitais é o uso de uma técnica de projeto
iterativo auxiliado por computador. Para filtros FIR, está disponível o algoritmo Remez,
que produz aproximações equiripple de filtros FIR. A ordem do filtro bem como os
limites das bandas de passagem e rejeição são fixadas e o algoritmo ajusta os
coeficientes até prover a aproximação equiripple. Assim, são minimizadas as
ondulações em ambas bandas de passagem e rejeição. Contudo, a região de transição
não é restrita, o que pode resultar em filtros com esta característica indesejável. Outros
algoritmos se encontram disponíveis, como o de Parks-McClellan.
O projeto de um filtro FIR pelo método de Janelamento no Scilab é feito com a função
wfir, com a seguinte sintaxe:
Onde:
O código Scilab abaixo ilustra o uso desta função no processo de filtragem do sinal.
Figura 13 - Exemplo de projeto de filtro FIR com wfir
Trata-se de um filtro passa baixa FIR usando janela de Hamming, com ordem 33 e
frequência de corte normalizada de 0,2.
{
α s−7 , 95
α s >21
N= 14 , 36 ∙ ∆ f
0,9222
α s ≤ 21
∆f
Além disso, pode-se implementar um filtro passa alta a partir de um passa baixa que
seja espelho deste passa alta. Por exemplo, usando o Scilab, geramos o seguinte filtro
FIR passa baixa com frequência de corte 0.15 e ordem cinco:
Quando a ordem do filtro é ímpar, pode-se facilmente obter a versão passa alta deste
filtro simplesmente invertendo o sinal dos coeficientes laterais e alterando o coeficiente
central de forma que ele seja complementar a um. Em outras palavras, a versão passa
alta com corte em 0.15 será:
Contudo, faz-se necessário conhecer como estas aproximações são realizadas e que
limitações impõem a este processo, de forma que esta correspondência seja
transparente, ou seja, não implique em problemas devido ao processo de conversão.
Como será visto, um sistema contínuo absolutamente estável pode não o ser quando
convertido em um sistema discreto.
Todavia, a base para qualquer aproximação proposta é que os sinais discretos nada mais
são que os sinais contínuos tomados em instantes regulares de tempo relacionados com
o período de amostragem. Em outras palavras,
x d [ n ] =x c ( n∙ T s )
y d [ n ]= y c ( n ∙ T s )
Sistemas contínuos possuem sua dinâmica descrita por equações diferenciais. Para
encontrar o correspondente discreto, Aproximam-se as derivadas no domínio contínuo
para t = nTs. A aproximação de Euler por Avanço consiste em aproximar a derivada de
primeira ordem por
d y [ n+1 ]− y d [n]
y c ( n∙ T s )= d
dt T
z ∙Y ( z )−Y (z )
s ∙Y ( s ) =
T
z−1
s=
T
z = 1 +sT
d y [ n ]− y d [n−1]
y c ( n∙ T s )= d
dt T
O efeito disto é que o mapeamento entre polos no plano s para o plano z é na forma:
−1
Y ( z )−z ∙Y ( z ) 1−z−1
s ∙Y ( s ) = → s=
T T
1
z=
1−sT
Fazendo com que os polos existentes no semiplano esquerdo no domínio s tendam a ser
mapeados dentro do círculo unitário no plano z, embora numa região restrita deste
círculo, assegurando a estabilidade quando se porta um sistema contínuo para um
discreto. Isto faz deste mapeamento mais robusto que o anterior, como pode ser visto na
resposta temporal abaixo, para a mesma variação de T/ que a aproximação anterior.
Figura 18 - Mapeamento entre s e z para a Aproximação Euler em Atraso
Regra Trapezoidal
(( ) )
y c n−
1
2
T =
y d [ n ] + y d [n−1]
2
d
(( ) )
1
y n− T =
dt c 2
y d [ n ] + y d [n−1]
T
sT
1+
2
z=
sT
1−
2
FILTRO IIR
Filtros IIR são filtros de Resposta Impulsiva Infinita, ou seja, sua resposta ao impulso é
formada por infinitos termos. Isto decorre do fato deste filtro ser realimentado com
amostras passadas da resposta. Provêm filtros de menor ordem e portanto de melhor
performance, principalmente se executados em um hardware com recursos limitados de
memória e processamento. Por outro lado, por serem realimentados, podem ser
instáveis, exigindo avaliação e correção da estabilidade.
Filtros Analógicos
Quant. Estágios k1 k2 k1 k2 k1 k2
O tipo de ampop não é crítico, uma vez que a frequência de ganho unitário é mais que
30 a 100 vezes maior que a frequência de corte do filtro. Isto é um requisito fácil de ser
atingido para frequências de corte abaixo de 100 kHz.
Embora difíceis de projetar, o filtro elíptico provê um bom compromisso entre roll-off e
ripple.
Uma vez obtida a função de transferência do filtro analógico no domínio s, esta técnica
consiste em realizar a transformação ou substituição de variáveis através de
z +1
s=
T
A A
∑ s−sk =∑ 1−e j s kT z−1 k
k
Transformação Bilinear
Ω=
2
T ( )
tan
ω
2
Que é claramente uma relação não linear, conduzindo a um fenômeno conhecido por
warping, que é uma distorção entre a resposta em frequência do filtro analógico e o seu
correspondente discreto. Tal situação limita a fidelidade da resposta do filtro em relação
a seu modelo analógico somente quando se opera sobre a região linear desta relação,
como mostra a figura a seguir.
Figura 22 - Warping
Por tal razão, esta técnica torna impossível mapear estruturas como um diferenciador
analógico para um digital, o que limita sua aplicação.
Note que para este modelo de filtro basta a ordem e a frequência de corte desejada que a
função zpbutt retorna o ganho e os polos, a partir do qual se obtém a função de
transferência pelo uso das funções polinomiais já apresentadas, conforme ilustrado
acima. O próximo exemplo mostra a obtenção da curva de resposta em frequência de
um filtro de Butterworth.
Igualmente é mostrado abaixo para o caso de um filtro Chebyshev Tipo II, no qual
agora tem-se a oscilação na banda de rejeição como especificação. Notar também que
este filtro agora possui zeros.
Por fim, apresenta-se a seguir a situação envolvendo um filtro elíptico, com suas
especificações típicas.
Figura 28 - Projeto de Filtro Elíptico
ϵ= (√ 0.951 )−1=0.22942.
Contudo, a complexidade das operações anteriores pode ser evitada, pois a
implementação de um filtro IIR usando o Scilab se dá facilmente através da função iir,
cuja sintaxe é
Onde:
n – ordem do filtro;
ftype – tipo de filtro desejado, entre:
o lp – passa baixa;
o hp – passa alta;
o bp – passa faixa;
o sp – rejeita faixa.
Frq – vetor com as frequências de corte normalizadas;
Fdesign – modelo de filtro analógico, entre:
o butt – Butterworth;
o cheb1 – Chebyshev tipo 1;
o cheb2 – Chebyshev tipo 2;
o ellip – Elíptico.
delta – vetor com as tolerâncias para as ondulações (ripples) nas bandas de
passagem e rejeição.
O código abaixo ilustra o projeto e a aplicação de um filtro IIR passa baixa de ordem 5,
usando o modelo de um filtro analógico de Chebyshev tipo I.
Como pode ser visto, as especificações do filtro IIR são praticamente diretas, obtidas a
partir da avaliação do problema que se quer atacar, como as frequências de corte, o tipo
de filtro e as tolerâncias requisitadas. Contudo, a definição da ordem não o é, exigindo a
abordagem que será apresentada a seguir, com vistas a estimá-la, a partir das demais
especificações, para cada modelo de filtro possível de ser adotado.
N=
log 10
( )
1
2
δs
−1
2 ∙ log 10
( )ωs
ωp
Obviamente que se o resultado for fracionado, deve ser arredondado para o inteiro
imediatamente superior. O seguinte fragmento de código Scilab mostra a determinação
da ordem de um filtro de Butterworth.
Figura 32 - Determinação da Ordem de um Filtro de Butterworth com o Scilab
Para um filtro Chebyshev, a ordem pode ser determinada pela seguinte equação:
N=
cosh −1 ( √ A 2−1
ϵ ) =
log 10 ( g+ √ g2−1 )
log 10 ( f + √ f 2−1 )
−1
cosh ( f )
√
ωs A 2−1
Onde f = e g=
ωp ϵ
2
O seguinte extrato de código Scilab exibe uma forma de realizar este cálculo: