Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Introdução
Esta é a primeira parte de laboratório de projeto de Filtros digitais. A primeira semana
cobre alguns exemplos de filtros FIR e IIR e então introduz o conceito de projeto de filtros
FIR. A segunda parte cobre a metodologia de implementação dos filtros FIR e IIR.
2 Filtros Digitais
Em aplicações com processamento digital de sinais é geralmente necessário mudar as ampli-
tudes relativas das componentes de frequência ou remover frequências indesejadas do sinal.
Esse processo é chamado de filtragem. Filtros digitais são utilizados em uma variedade de
aplicações. No laboratório 4 nós vimos que filtros digitais podem ser utilizados em sistemas
que implementam interpolação e decimação em sinais discretos no tempo. Filtros digitais
também são utilizados em sistemas de audio que permitem ao usuário ajustar os graves,
médios e agudos. O projeto de filtros digitais requer o uso de técnicas nos domı́nios tempo
e frequência. Isso porque as especificações do filtro são feitas no domı́nio da frequência mas
os filtros são usualmente implementados no domı́nio do tempo por meio de equações de
diferenças. Tipicamente, a análise no domı́nio frequência é feita usando a transformada Z e
a DTFT (Discrete Time Fourier Transform). Em geral, um filtro linear, invariante no tempo
e causal com entrada x(n) e saı́da y(n) pode ser especificado por sua equação de diferenças:
N
X −1 M
X
Y (n) = bi x(n − i) − ak y(n − k) (2.1)
i=0 k=1
onde bi e ak são os coeficientes do filtro. Diz-se que esse filtro tem N zeros e M polos. Cada
novo valor do sinal de saı́da y(n) é determinado por valores passados da saı́da e por valores
presentes e passados da entrada. A resposta ao impulso, h(n), é a resposta do filtro a uma
entrada do tipo δ(n), e é portanto a solução da equação de diferenças recursiva.
N
X −1 M
X
h(n) = bi δ(n − i) − ak h(n − k) (2.2)
i=0 k=1
Existem duas classes gerais de filtros digitais: infinite impulse response (IIR) e finite
impulse response (FIR). O caso FIR ocorre quando ak = 0, para todos os k. Esse filtro não
UFRGS - PPGEE - 2012 LAB05a
Como essa equação não é recursiva, a resposta ao impulso tem duração finita N. Nos
casos onde ak 6= 0, a equação de diferenças representa geralmente umfiltro IIR. Nesse caso, a
equação de diferenças gera uma reposta ao impulso que não é zero quando n → 0. Entretanto,
veremos que para certos valores de ak 6= 0 e bi , é possı́vel gerar uma resposta de um filtro FIR.
A Transformada Z é a principal ferramenta utilizada para analisar a resposta em frequência
de filtros e suas equações de diferenças. A Transformada Z de um sinal discreto no tempo,
x(n) é dada por:
X∞
X(z) = x(n)z −n (2.4)
n=−∞
Onde z é uma variável complexa. A DTFT pode ser pensada como um caso especial da
Transformada Z, onde z é avaliado no cı́rculo unitário do plano complexo.
n=∞
X
jw
X(e ) = X(z) = x(n)e−jwn (2.5)
z=ejw
n=−∞
= z −K X(z)
Figure 2.1: Forma direta de implementação para um filtro de tempo discreto descrito por
uma equação de diferenças
Essa equação mostra que qualquer filtro pode ser representado por uma equação de
diferenças linear com coeficientes constantes. Essa equação, conforme mostrado é represen-
tada por uma razão de polinômios. Assim, podemos calcular a resposta em frequência do
filtro avaliando H(z) no cı́rculo unitário.
PN −1
jw i=0 bi e−jwi
H(e ) = P M
(2.8)
1+ k=1 ak e−jwk
Figure 3.1: Localização de dois zeros para um filtro FIR de segunda ordem
z1 = ejθ z2 = e−jθ
Hf (z) = (1 − z1 z −1 )(1 − z2 z −1 )
= (1 − ejθ z −1 )(1 − e−jθ z −1 ) (3.1)
= 1 − 2cosθz −1 + z −2
Utilize essa função de transferência para determinar a equação de diferenças para esse
filtro. Então desenhe o correpondentes diagrama e clacule a resposta ao impulso do filtro
h(n).
Este é um filtro FIR porque ele possui uma reposta ao impulso h(n) com duração finita.
Qualquer filtro com apenas zeros e sem pólos além daqueles em 0 e ±∞ é um fltro FIR.
Zeros na função de transferência representam frequências que não passaram pelo filtro. Isso
pode ser útil para remover freqências indesejadas no sinal. O fato de que Hf (z) tem zeros em
e±jθ = 0 segnifica que o filtro não deixará passar componentes sinusoidais puras de frequência
w = θ.
Utilize o Matlab para calcular e plotar a magnitude da resposta em frequência do filtro
|Hf (ejw )| como uma função de w no intervalo −π < w < π, para os três valores de θ:
UFRGS - PPGEE - 2012 LAB05a
• θ = π/6
• θ = π/3
• θ = π/2
Coloque os três gráficos na mesma figura usando o comando subplot. Explique como os
valores de θ afetam a magnitude da resposta em frequência do filtro.
No próximo experimento nós vamos utilizar o filtro Hf (z) para remover uma indesejada
interferência sinusoidal de um sinal de voz. Para esse experimento faça o download do
sinal de áudio nspeech1.mat e o arquivo Matlab (m-file) DTFT.m. Carregue o ar-
quivo nspeech1.mat usando o comando load nspeech1. Assim o arquivo será carregado no
workspace. Execute o arquivo de voz com o comando sound e então plote 101 amostras do
sinal para os ı́ndices de tempo (100:200). Em seguida utilize o comando DTFT para exe-
cutar a Transformada de Fourier de Tempo Discreto do sinal de áudio. O comando DTFT
tem a seguinte sintaxe:
[X,w]=DTFT(x,M)
onde x é um sinal que inicia no tempo n=0 e M especifica o número de pontos de saı́da
da DTFT. O comando [X,w]=DTFT(x,0) gera uma DTFT com a mesma duração que a
entrada; se isso não for suficiente, pode-se especificar M. As saı́das da função são um veor
X contendo as amostras da DTFT e um vetor w contendo as correspondentes frequências
dessas amostras.
Calcule a magnitude da DTFT de 1001 amostras do sinal de áudio para os ı́ndices de
tempo (100:1100). Plote a magnitude das amostras da DTFT versus frequência para |w| < π.
Note que há dois picos correspondentes a interferência sinusoidal. Use o comando max para
determinar a frequência exata dos picos. Esse será o valor de θ que nós utilizaremos para
filtrar com Hf (z). Dica: use o comando [Xmax,Imax]=max(abs(X)) para encontrar o valor
e o ı́ndice do elemento de valor máximo em X.
Escreva uma função Matlab FIRfilter(x) que implementa o filtro Hf (z) com o valor
medido de θ e entrega na saı́da o sinal filtrado ( Dica: use convolução. Aplique a nova
função FIRfilter no sinal nspeech1 para atenuar a interferência sinusoidal. Escute o sinal
filtrado e verifique os efeitos do filtro. Plote 101 amostras do sinal para os ı́ndices de tempo
(100:200), e plote a magnitude de 1001 amostras do sinal filtrado para os ı́ndices de tempo
(100:1100).
Comente como o conteúdo de frequência modificou-se após a filtragem. O filtro utilizado
é de que tipo? passa-baixas, passa-altas, passa-banda ou rejeita banda? Comente como o
filtro modificou a qualidade do sinal.
podem ser utilizados para separar um sinal de banda estreita de um sinal de ruı́do. Esses
filtros são utilizados para separar sinais modulados de ruı́do de fundo em aplicações como
demodulação de rádio frequência. Considere a seguinte função de transferência para um
filtro IIR de segunda ordem com polos conjugados complexos:
1−r
Hi (z) =
(1 − rejθ z −1 )(1
− re−jθ z −1 )
(4.1)
1−r
=
1 − 2rcos(θ)z −1 + r2 z −2
A Figura 4.1 mostra as localizações dos dois polos desse filtro. Os polos têm a seguinte forma:
p1 = rejθ p2 = re−jθ
• r = 0.99
• r = 0.9
UFRGS - PPGEE - 2012 LAB05a
• r = 0.7
Coloque os três gráficos na mesma figura utilizando o comando subplot e explique como
o valor de r afeta a magnitude
No experimento seguinte nós vamos utilizar o filtro Hi (z) para separar um sinal sinusoidal
modulado de um ruı́do de fundo. Para executar esse experimento, primeiro faça o download
do arquivo pcm.mat e carregue-o no Matlab com o comando load pcm. Execute o arquivo
com o comando sound. Plote 101 amostras do sinal para os ı́ndices (100:200) e então calcule
a magnitude da DTFT de 1001 amostras de pcm relativas aos ı́ndices (100:1100). Plote a
magnitude das amostras da DTFT versus a frequência radial para |w| < π. Os dois picos
no espectro correspondem a frequência central do sinal modulado. A banda com baixa
amplitude corresponde ao ruı́do de fundo. Nesse exercı́cio você deve utilizar o filtro IIR
descrito acima para amplificar o sinal de interesse.
O sinal pcm está modulado em 3146 Hz e amostrado a 8 kHz. Utilize esses valores
para calcular o valor de θ para o filtro Hi (z). Lembre-se do teorema da amostragem que a
frequência radial de 2π corresponde a frequência de amostragem. Escreva um função Matlab
IIRfilter(x) que implementa o filtro Hi (z). Nesse caso você precisará de um laço for para
implementar a equação de diferenças recursiva. Utilize o valor de θ calculado e r = 0.995.
Você pode assumir que y(n) é igual a zero para valores negativos de n. Aplique o novo
comando IIRfilter ao sinal pcm para separar o sinal desejado do ruı́do de fundo e escute o
sinal filtrado. Plote o sinal filtrado para os ı́ndices (100:200) e então calcule a DTFT de 1001
amostras do sinal filtrado para usando os ı́ndices de tempo (100:1100). Plote a magnitude
dessa DTFT. Para visualizar a DTFT próximo de w = θ plote também a porção dessa DTFT
para os valores de w na faixa [θ − 0.02, θ + 0.02]. Utilize o valor calculado de θ. Comente
como o sinal em relação a forma e áudio antes e depois da filtragem. Comente também o que
você esperaria em termos de modificações no sinal se r variar. Um valor de r = 0.9999999
seria efetivo para essa aplicação? Porque?
Figure 5.3: Resposta em frequência de um filtro passa baixas projetado com o método do
truncamento
Um método para criar uma aproximação realizável de um filtro ideal é truncar a sua
resposta ao impulso fora do intervalo n ∈ [−M, M ]. Assim temos:
wc sinc wc n para n = −M, ..., 0, 1, ..., M
htrunc = π π
(5.4)
0 caso contrário
A Figura 5.3 mostra a resposta do filtro passa baixas com fequência de corte wc = 2.0,
com a resposta ao impulso truncada em n ∈ [−10, 10]. Note o comportamento oscilatório
dessa reposta próximo da frequência de corte e da grande quantidade de ripple na banda de
UFRGS - PPGEE - 2012 LAB05a
rejeição.
Devido a propriedade de modulação da DTFT, a resposta em frequência do filtro truncado
é resultado da convolução da magnitude da resposta do filtro ideal (função rect) com a janela
truncada. A DTFT da janela truncada mostrada na Figura 5.4 é similar a função sinc uma
vez que a mesma é a DTFT de uma janela retangular amostrada. Note que essa DTFT tem
bandas lateriais largas, o que leva a um grande ripple no filtro final.
Uma resposta ao impulso truncada é de duração finita, mas o filtro continua não causal.
Para tornar-se causal, o filtro FIR precisa ser deslocado para a direita em M unidades. Para
um filtro de tamanho N = 2M + 1 esse filtro truncado e deslocado é dado por:
wc sinc wc (n − N −1 ) para n = 0, 1, ..., N − 1
htrunc = π π 2
(5.5)
0 caso contrário
magnitude da resposta em dB é dada por |HdB (ejw )| = 20log10 |H(ejw |. Note que o comando
log no Matlab calcula o lagaritmo natural,portanto utilize o comando log10. Para obtermos
uma representação precisa da DTFT tenha certeza de que você calculou no mı́nimo 512
pontos (amostras) usando o comando [X,w]=DTFT(filterresponse,512).
• N = 21
• N = 101
Agora faça o download do sinal de voz com ruı́do nspeech2.mat e carregue-o no Matlab.
Aplique os dois filtros (com N diferentes) a esse sinal. Como eles são filtros FIR, você
pode simplesmente convoluı́-los com o sinal de áudio. Escute cuidadosamente os sinais (com
filtragem e sem filtragem). Você percebe diferenças? Para escutar melhor os sinais você pode
multiplicar cada um deles por 2 ou 3 antes de escutá-los com o comando sound. Explique
como o comprimento dos filtros afeta o ripple na banda de rejeição.