Processamento Digital de Sinais
Notas de Aula
S´ erie e Transformada Discreta de Fourier
DFS / DFT
Ricardo Tokio Higuti
Departamento de Engenharia El´etrica - FEIS - Unesp
Observa¸c˜ao: Estas notas de aula est˜ao baseadas no livro: “Discrete-Time Signal Processing”, A.V. Oppenheim and R.W. Schafer, Prentice Hall, 1989/1999.
Transformadas para sinais de tempo discreto
DTFT: X(e
jω) =
X∞n=−∞
x[n]e
−jωn• E uma transformada da vari´avel cont´ınua ´ ω
• Usada para sinais de dura¸c˜ao finita/infinita
• N˜ao pode ser implementada de maneira exata num computador
• Uso de outras ferramentas matem´aticas que a aproximam DFT:
• Aplicada a sinais de tempo discreto de dura¸c˜ao finita
• O resultado ´e um sinal de frequˆencia discreta e de dura¸c˜ao finita
• Pode ser implementada de maneira exata num computador
• E uma aproxima¸c˜ao da DTFT ´
• Existem algoritmos eficientes para seu c´alculo (FFT - Fast Fourier Transform )
• Est´a relacionada com sinais peri´odicos (DFS - Discrete Fourier Series ) Aplica¸c˜ oes:
• An´alise espectral de sinais, resposta em frequˆencia
• Implementa¸c˜ao de SLITs
S´ erie Discreta de Fourier - DFS
Seja um sinal de tempo discreto peri´odico, com per´ıodo N, que obedece a:
˜
x[n] = ˜ x[n + rN ], r, N inteiros, em que define-se a frequˆ encia fundamental do sinal por:
ω
0= 2π N
Analogamente ao caso de tempo cont´ınuo, este sinal tamb´em pode ser representado por uma s´erie, composta por uma soma de exponenciais com- plexas de tempo discreto, cujas frequˆencias s˜ao m´ ultiplas da frequˆencia fundamental:
˜
x[n] =
Xk
X ˜
kN e
j2πNknDevido `a periodicidade das frequˆencias das exponenciais complexas, h´a apenas N frequˆencias distintas:
e
k[n] = e
j2πNknPara k inteiro, fica-se com as exponenciais e
0[n], e
1[n], ..., e
N−1[n].
Quando k = N , tem-se:
e
N[n] = e
j2πNN n= e
j2πn= 1 = e
0[n]
De forma an´aloga, e
N+1[n] = e
1[n] e assim por diante.
S´ erie Discreta de Fourier - DFS
Portanto, h´a apenas N diferentes frequˆencias:
ω
k= 2π
N k, para k = 0, 1, 2, · · · , N − 1 e portanto a s´erie fica:
˜ x[n] = 1
N
N−1 X k=0
X ˜
ke
j2πNkn= 1 N
N−1 X k=0
X ˜ [k]e
j2πNknOs valores ˜ X [k] s˜ao os coeficientes da s´erie discreta de Fourier (DFS), que representam a contribui¸c˜ao de cada componente de frequˆencia 2πk/N na composi¸c˜ao do sinal peri´odico. Os coeficientes s˜ao obtidos por:
X ˜ [k] =
N−1Xn=0
˜
x[n]e
−j2πNkn, −∞ < k < +∞
Chagando-se ao par transformado:
˜
x[n] ←→
DF SX[k] ˜ Observa¸c˜ oes:
• X ˜ [k] ´e de frequˆencia discreta. Para cada k h´a uma frequˆencia 2πk/N
• X ˜ [k] ´e peri´odico com N : ˜ X [k + N] = ˜ X [k], por isso basta observar
seus valores no intervalo entre 0 e N − 1.
Exemplo - DFS
Calcule a DFS da sequˆencia:
˜
x[n] = A cos(πn/2)
Inicialmente verifica-se que a sequˆencia ´e peri´odica, com per´ıodo N = 4, e valores {A, 0, −A, 0} em um per´ıodo (0 ≤ n ≤ 3).
Portanto, a os coeficientes da DFS s˜ao:
X ˜ [k] =
NX−1n=0
˜
x[n]e
−j2πNkn= A(1 − e
−j2π42k) Com valores:
• X ˜ [0] = A(1 − e
−jπ0) = 0
• X ˜ [1] = A(1 − e
−jπ1) = 2A
• X ˜ [2] = A(1 − e
−jπ2) = 0
• X ˜ [3] = A(1 − e
−jπ3) = 2A
e percebe-se que ˜ X [4] = ˜ X[0], e assim por diante.
Outra forma de verificar o resultado ´e reescrevendo a sequˆencia ˜ x[n] em termos de exponenciais complexas:
˜
x[n] = A cos(πn/2) = A
2 e
jπ2n+ A
2 e
−jπ2n= A
2 e
j2π4n+ A 2 e
−j2π4nDeve-se notar que e
−j2πNkn= e
j2πN(N−k)n, e portanto ˜ x[n] pode ser escrito como:
˜ x[n] = A
2 e
j2π4n+ A 2 e
j2π43nComo a expans˜ao de ˜ x[n] em termos da DFS ´e:
˜ x[n] = 1
4
N−1 X k=0
X ˜ [k]e
j2π4knNota-se que:
• X ˜ [0] = 0
• X ˜ [1]/4 = A/2, portanto ˜ X[1] = 2A
• X ˜ [2] = 0
• X ˜ [3]/4 = A/2, portanto ˜ X[3] = 2A
Rela¸c˜ ao entre a DFS e a DTFT
Seja um sinal peri´odico de tempo discreto, ˜ x[n], com per´ıodo N . Tomando- se um per´ıodo desse sinal, fica-se com o sinal x[n]:
x[n] =
˜
x[n], n = 0, 1, ..., N − 1 0, caso contr´ario A DTFT de x[n] ´e:
X (e
jω) =
NX−1n=0
x[n]e
−jωn=
NX−1n=0
˜
x[n]e
−jωnE a DFS de ˜ x[n]:
X ˜ [k] =
N−1Xn=0
˜
x[n]e
−j2πNkn, −∞ < k < +∞
Comparando as equa¸c˜oes, tem-se que a DFS e a DTFT, nessas condi¸c˜oes, est˜ao relacionadas por:
X ˜ [k] = X(e
jω)|
ω=2πNk
, −∞ < k < +∞
ou seja, a DFS ´ e composta por amostras da DTFT em N pontos
equiespa¸cados de 2π/N , entre ω = 0 e 2π.
Exemplo
x[n] = {1, 1, 1, 1, 1, 0, 0}, N = 7, L = 5 X (e
jω) =
X4n=0
e
−jωn= e
−j2ωsin(5ω/2) sin(ω/2) X[k] = ˜
X4n=0
e
−j(2π/7)n= e
−j(4π/7)ksin(5πk/7) sin(πk/7)
−2 0 2 4 6 8 10 12 14
0 0.2 0.4 0.6 0.8 1 1.2
n
0 0.5 1 1.5 2
0 1 2 3 4 5
x[n], ˜x[n]
|X(ejω)|, |X[k]|˜
ω/π, ωk/π= 2k/N
Exemplo
x[n] = {1, 1, 1, 1, 1, 0, 0, 0, 0, 0}, N = 10, L = 5 X(e
jω) =
X4n=0
e
−jωn= e
−j2ωsin(5ω/2) sin(ω/2) X ˜ [k] =
X4n=0
e
−j(2π/10)n= e
−j(4π/10)ksin(πk/2) sin(πk/10)
n
x[n], x[n]˜|X(ejω)|, |X[k]|˜
Exemplo
x[n] = {1, 1, 1, 1, 1}, N = 5, L = 5 X (e
jω) =
X4n=0
e
−jωn= e
−j2ωsin(5ω/2) sin(ω/2) X[k] = ˜
X4n=0
e
−j(2π/5)n= e
−j(4π/5)ksin(πk) sin(πk/5)
−2 0 2 4 6 8 10 12 14
0 0.2 0.4 0.6 0.8 1 1.2
n
0 0.5 1 1.5 2
0 1 2 3 4 5 6
x[n], x[n]˜
|X(ejω)|, |X[k]|˜
ω/π, ωk/π= 2k/N
Exemplo
0 0.5 1 1.5 2
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
|X(ejω)|, |X[k]|,˜ N= 20
ω/π, ωk/π= 2k/N
0 0.5 1 1.5 2
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
|X(ejω)|, |X[k]|,˜ N= 40
ω/π, ωk/π= 2k/N
Exemplo - DFS
Calcule a DFS de um trem de impulsos peri´odico:
˜
x[n] =
X∞r=−∞
δ[n − m + rN ]
Um per´ıodo do sinal, para 0 ≤ n ≤ N − 1 ´e dado por δ[n − m], com m uma constante inteira. Os coeficientes da DFS s˜ao dados por:
X ˜ [k] =
NX−1n=0
˜
x[n]e
−j2πNkn=
NX−1n=0
δ[n − m]e
−j2πNkn= e
−j2πNkmPortanto, a representa¸c˜ao do sinal peri´odico fica:
˜ x[n] = 1
N
N−1 X k=0
X ˜ [k]e
j2πNkn= 1 N
N−1 X k=0
e
−j2πNkme
j2πNkn= 1 N
N−1 X k=0
e
j2πNk(n−m)E tem-se a identidade:
˜
x[n] =
X∞r=−∞
δ[n − m + rN] = 1 N
N−1 X k=0
e
j2πNk(n−m)Esta identidade ser´a ´ util quando for relacionada a DFS com a DTFT.
Amostragem da DTFT
Foi visto que, se, a partir de uma sequˆencia de dura¸c˜ao finita L, x[n], se produz uma sequˆencia peri´odica ˜ x[n] com per´ıodo N ≥ L, os coeficientes da DFS ˜ X [k] s˜ao as amostras da DTFT X (e
jω), nas frequˆencias ω
k= 2πk/N.
x[n] ⇒ x[n] = ˜
+∞Xm=−∞
x[n + mN] ←→
DF SX[k] = ˜ X (e
jω)|
ω=2πNkSuponha agora que se tenha uma DTFT de um sinal x[n] qualquer, dada por X(e
jω), e se tomam amostras da DTFT, formando coeficientes de uma DFS:
X[k] = ˜ X(e
jω)|
ω=2πNk
em que a DTFT ´e dada por:
X(e
jω) =
+∞Xm=−∞
x[m]e
−jωmA sequˆencia peri´odica ˜ x[n] resultante pode ser calculada por meio da DFS inversa:
˜
x[n] = 1 N
N−1 X k=0
X ˜ [k]e
j2πNkn= 1
N
N−1X
k=0
+∞X
m=−∞
x[m]e
−j2πNkm
e
j2πNkn=
+∞Xm=−∞
x[m]
1 N
N−1 X k=0
e
j2πNk(n−m)
O termo entre colchetes representa a DFS de um trem de impulsos peri´odico:
1 N
N−1 X k=0
e
j2πNk(n−m)=
+∞Xr=−∞
δ[n − m + rN ] Portanto:
˜
x[n] =
+∞Xm=−∞
x[m]
+∞Xr=−∞
δ[n − m + rN ]
= x[n] ∗
+∞Xr=−∞
δ[n + rN]
=
+∞Xr=−∞
x[n + rN ]
Amostragem da DTFT
Logo, ao se tomar N amostras da DTFT de um sinal x[n], obtendo-se coefi- cientes de uma DFS, a sequˆencia peri´odica correspondente pode ser obtida por meio da adi¸c˜ao de infinitas c´opias de x[n], deslocadas de m´ ultiplos de N.
DTFT
DFS
x[n] X(e
jω)
X[k] = ˜ X(e
jω)|
ω=2πNk
˜
x[n] =
+∞Xr=−∞
x[n + rN]
N amostras
Logo: se a sequˆencia x[n] possuir um comprimento L > N , haver´a so- breposi¸c˜ao no dom´ınio do tempo, e um per´ıodo de ˜ x[n] n˜ao representar´a corretamente a sequˆencia x[n].
H´a um n´ umero m´ınimo de amostras de X (e
jω) para que a sequˆencia x[n]
possa ser recuperada a partir de ˜ x[n] (ou a partir das amostras da DTFT).
Amostragem da DTFT: Exemplo
Seja x[n] um pulso de dura¸c˜ao 5 amostras (L = 5).
0 5 10 15 20
0 1 2 3
sequências
0 0.5 1 1.5 2
0 5
| DTFT | , | DFS |
0 5 10 15 20
0 1 2 3
0 5 10
0 5
0 5 10 15 20
0 1 2 3
0 2 4
0 5
0 5 10 15 20
0 1 2 3
amostra n
0 1 2 3 4
0 5
amostra k
x[n] |X(ejω)|
N= 10, X˜1[k] =X(ejω)|ω=2π10k
˜ x1[n] =
+∞
X r=−∞
x[n+ 10r]
N= 5, X˜2[k] =X(ejω)|ω=2π5k
˜ x2[n] =
+∞
X r=−∞
x[n+ 5r]
N= 4, X˜3[k] =X(ejω)|ω=2π4k
˜ x3[n] =
+∞
X r=−∞
x[n+ 4r]
Amostragem da DTFT - Exemplo
x[n] = (7/10)
nu[n] ⇔ X (e
jω) = [1 − (7/10)e
−jω]
−1Amostrando a DTFT com N = 4 pontos, a sequˆencia no dom´ınio do tempo fica (em preto: amostras de x[n], em vermelho: amostras de ˜ x[n]):
0 1 2 3
0 0.5 1 1.5
0 1 2 3
−0.4
−0.3
−0.2
−0.1 0
amostra n
˜ x[n] =
+∞
X r=−∞
x[n+ 4r]
Erro:x[n]−˜x[n]
Para N = 8 pontos:
0 1 2 3 4 5 6 7
0 0.5 1 1.5
0 1 2 3 4 5 6 7
−0.08
−0.06
−0.04
−0.02 0
amostra n
˜ x[n] =
+∞
X r=−∞
x[n+ 8r]
Erro:x[n]−x[n]˜
DTFT de Sinais Peri´ odicos
Um sinal peri´odico ˜ x[n] pode ser representado por sua DFS:
˜ x[n] = 1
N
N−1X
k=0
X ˜ [k]e
j2πNknUsando as propriedades da DTFT:
x[n]
DT F T←→ X(e
jω) x[n] · e
jω0n DT F T←→ X(e
j(ω−ω0))
1
DT F T←→ 2πδ(ω), 0
−≤ ω < 2π (um per´ıodo) 1 · e
jω0n DT F T←→ 2πδ(ω − ω
0), 0
−≤ ω < 2π
Logo, a DTFT do sinal peri´odico, representado por uma soma de expo- nenciais complexas, fica:
˜ x[n] = 1
N
N−1X
k=0
X ˜ [k]e
j2πNkn DT F T←→ 2π N
N−1 X k=0
X[k]δ ˜ ω − 2π N k
!
, 0
−≤ ω < 2π Na pr´atica, a informa¸c˜ao contida no espectro da DTFT ´e a mesma da DFS de um sinal peri´odico, a menos de uma constante (2π/N ) e a substi- tui¸c˜ao das amostras para cada k ( ˜ X[k]) pelos impulsos nas frequˆencias 2πk/N, com ´areas (2π/N ) ˜ X [k].
...
...
...
...
...
...
0 1
0 1
0 2p 2p
2p( -1)
n
k
ω NN
N N
N
N N
−1
−1 x[n], x[n]˜
X(ejω) X[k]˜
Propriedades da DFS
Sequˆencias ˜ x[n] e ˜ y[n], e suas s´eries, de per´ıodo N.
Propriedade Sequˆencia DFS, per´ıodoN
Linearidade a˜x[n] +b˜y[n] aX[k] +˜ bY˜[k]
Atraso no tempo x[n˜ −m] e−j(2π/N)kmX[k]˜
Deslocamento em frequˆencia ej(2π/N)k0nx[n]˜ X[k˜ −k0]
Dualidade X˜[n] Nx[−k]˜
Convolu¸c˜ao peri´odica y[n] =˜
N−1 X m=0
˜
x[m]˜h[n−m] Y˜[k] = ˜X[k]·H[k]˜
Modula¸c˜ao v[n] = ˜˜ x[n]·w[n]˜ V˜[k] = 1
N
N−1 X l=0
X[l] ˜˜ W[k−l]
Simetria x˜∗[n] X˜∗[−k]
˜
x∗[−n] X˜∗[k]
ℜ{˜x[n]} X˜e[k] =X˜[k] + ˜X∗[−k]
2 ℑ{˜x[n]} X˜o[k] =X[k]˜ −X˜∗[−k]
2
˜
xe[n] =x[n] + ˜˜ x∗[−n]
2 ℜ{X[k]}˜
˜
xo[n] =x[n]˜ −x˜∗[−n]
2 ℑ{X[k]}˜
˜
x[n] real X[k] = ˜˜ X∗[−k]
|X[k]|˜ =|X[−k]|˜
6 {˜X[k]}=−6 {˜X[−k]}
Exemplo - Convolu¸c˜ ao peri´ odica
Deseja-se fazer a convolu¸c˜ao peri´odica entre as sequˆencias:
˜
x
3[n] =
NX−1m=0
˜
x
1[m]˜ x
2[n − m]
Nota-se que a somat´oria ´e realizada em um per´ıodo apenas. Para n = 0, deve-se ter o sinal ˜ x
2[0 − m],e multiplic´a-lo por ˜ x
1[m]:
Deve-se perceber que, como o sinal ´e peri´odico, deslocamentos posteri- ores do sinal ser˜ao da forma:
e amostras que “saem” pelo lado direito “entram” pelo lado esquerdo, quando se considera um per´ıodo dos sinais.
Para obter os valores da sa´ıda, deve-se multiplicar as duas sequˆenciase
realizar a soma das amostras em um per´ıodo.
Exemplo - Convolu¸c˜ ao peri´ odica
Deseja-se fazer a convolu¸c˜ao peri´odica entre as sequˆencias:
... ...
0 1 2 3 4 0 1 2 3 4 ...
...
n
n N
N
−N
−N
˜ x[n]
˜h[n]
˜
y[n] =
NX−1m=0
˜
x[m]˜ h[n − m]
Para n = 0: ˜ y[0] =
N−1Xm=0
˜
x[m]˜ h[0 − m]
0 1 2 3 4 ...
...
... ...
0 1 2 3 4
mm
N N
−N
−N
˜ x[m]
˜h[−m]
Exemplo - Convolu¸c˜ ao peri´ odica
Para n = 1: ˜ y[1] =
NX−1m=0
˜
x[m]˜ h[1 − m]
0 1 2 3 4 ...
...
... ...
0 1 2 3 4
mm
N N
−N
−N
˜ x[m]
h[1˜ −m]
Para n = 2: ˜ y[2] =
NX−1m=0
˜
x[m]˜ h[2 − m]
0 1 2 3 4 ...
...
... ...
0 1 2 3 4
mm
N N
−N
−N
˜ x[m]
h[2˜ −m]
Exemplo - Convolu¸c˜ ao peri´ odica
Para n = 3: ˜ y[3] =
NX−1m=0
˜
x[m]˜ h[3 − m]
0 1 2 3 4 ...
...
... ...
0 1 2 3 4
mm
N N
−N
−N
˜ x[m]
˜h[3−m]
Para n = 4: ˜ y[4] =
N−1Xm=0
˜
x[m]˜ h[4 − m]
0 1 2 3 4 ...
...
... ...
0 1 2 3 4
mm
N N
−N
−N
˜ x[m]
˜h[4−m]
Transformada Discreta de Fourier - DFT
Seja um sinal x[n] de dura¸c˜ao finita N (ou de comprimento L ≤ N ):
x[n] = 0 para n < 0 e n ≥ N
Pode-se montar, com essa sequˆencia, uma outra, peri´odica, tal que:
˜
x[n] =
X∞r=−∞
x[n + rN ] = x[n modulo N] = x[((n))
N]
Dessa sequˆencia peri´odica, pode-se calcular a DFS, ˜ X [k], que ´e peri´odica com per´ıodo N.
X[k] = ˜
NX−1n=0
˜
x[n]e
−j2πNkn.
Para manter a dualidade entre os dom´ınios do tempo e frequˆencia, toma- se um per´ıodo dessa sequˆencia peri´odica e d´a-se o nome de X[k]:
X [k] =
X ˜ [k], k = 0, 1, ..., N − 1 0, caso contr´ario de modo que:
X ˜ [k] = X [k modulo N ] = X [((k))
N]
Exemplo para L = 6 e N = 8:
...
...
...
...
x[n]
˜ x[n]
X[k]
X[k]˜
DFS DFT
n
n k
k
L−1 N−1
N
N −N
−N
0
0 0
0
DFT
Dessa forma, tem-se:
X[k] =
N−1
X n=0
x[n]e
−j2πNkn, k = 0, 1, ..., N − 1
0, caso contr´ario
x[n] =
1 N
N−1 X n=0
X[k]e
j2πNkn, n = 0, 1, ..., N − 1
0, caso contr´ario
x[n] ←→
DF TX [k]
OBSERVAC ¸ ˜ OES:
• Os sinais x[n] e X [k] s˜ao ambos discretos e de dura¸c˜ao finita N
• Da mesma forma que antes, a DFT pode ser vista como amostras da DTFT do sinal x[n], nas frequˆencias ω
k= 2πk/N , k = 0..N − 1.
• Ao se trabalhar com as sequˆencias x[n] e X[k] e a DFT, deve-se sempre lembrar que h´a sequˆencias peri´odicas envolvidas.
• Ao se usar a DFT, deve-se trabalhar com as sequˆencias considerando que estas s˜ao peri´odicas e, ao final toma-se apenas um per´ıodo (0 ≤ n ≤ N − 1, 0 ≤ k ≤ N − 1). Fora desse intervalo, considera-se que as sequˆencias tˆem valor zero (sinais de dura¸c˜ao finita N).
Opera¸c˜ oes com (( ))
NAo se trabalhar com a DFT, lembrar que as sequˆencias (de dura¸c˜ao finita no tempo e na frequˆencia) s˜ao na verdade um per´ıodo das sequˆencias peri´odicas correspondentes (˜ x[n] e ˜ X [k]).
x[n]
n
˜
x[n] =x[((n))5]
˜ x[n−2]
x[n−2]
x[n]
n
˜
x[n] =x[((n))5]
˜ x[n+ 2]
x[n+ 2]
Opera¸c˜ oes com (( ))
Nx[n]
n
˜
x[n] =x[((n))5]
˜ x[−n]
x[−n]
˜ x[−n−2]
n
x[−n−2]
˜ x[−n+ 2]
x[−n+ 2]
Propriedades da DFT
Sequˆencias x[n], y[n], X[k] e Y [k] (etc.) com comprimento N (iguais a zero para n < 0 e n ≥ N ).
Propriedade Sequˆencia DFTN pontos
Linearidade ax[n] +by[n] aX[k] +bY[k]
Atraso no tempo x[((n−nd))N] e−j(2π/N)kndX[k]
Deslocamento em freq. ej(2π/N)k0nx[n] X[((k−k0))N]
Dualidade X[n] Nx[((−k))N]
Convolu¸c˜ao circular y[n] =x[n](N)h[n]
=
N−1 X m=0
x[m]h[((n−m))N] Y[k] =X[k]·H[k]
Janelamento v[n] =x[n]·w[n] V[k] = 1
N
N−1 X l=0
X[l]W[((k−l))N]
Simetria x∗[n] X∗[((−k))N]
x∗[((−n))N] X∗[k]
ℜ{x[n]} Xep[k] =X[((k))N] +X∗[((−k))N] 2
ℑ{x[n]} Xop[k] =X[((k))N]−X∗[((−k))N] 2
xep[k] =x[((n))N] +x∗[((−n))N]
2 ℜ{X[k]}
xop[k] =x[((n))N]−x∗[((−n))N]
2 ℑ{X[k]}
x[n] real X[k] =X∗[((−k))N]
|X[k]|=|X[((−k))N]|
6 {X[k]}=−6 {X[((−k))N]}
Convolu¸c˜ ao Linear Usando a DFT
• Em SLITs, a sa´ıda ´e obtida pela convolu¸c˜ao linear entre a entrada e a resposta impulsiva
• A opera¸c˜ao de convolu¸c˜ao pode ser muito custosa (somas e multi- plica¸c˜oes)
• Quando se usa a DFT, tem-se a convolu¸c˜ao circular
• Existem algoritmos eficientes para o c´alculo da DFT (FFT)
• Como usar a DFT para implementar a convolu¸c˜ao linear?
Para fazer a convolu¸c˜ao linear entre duas sequˆencias x
1[n] e x
2[n] (DTFT):
y[n] = x[n] ∗ h[n] =
X∞k=−∞
x[k]h[n − k] ↔ Y (e
jω) = X(e
jω) · H(e
jω) Usando-se a DFT, tem-se a convolu¸c˜ao circular:
y
p[n] = x[n](N )h[n] ↔ Y [k] = X [k] · H [k]
Quest˜ ao: Sob que condi¸c˜oes y
p[n] = y[n] ?
Convolu¸c˜ ao Linear Usando a DFT
Sejam duas sequˆencias:
• x[n] de comprimento L
• h[n] de comprimento M
O resultado da convolu¸c˜ ao linear entre x[n] e h[n] ter´a comprimento L + M − 1
n
x[n]
h[n]
x[n]∗h[n]
Convolu¸c˜ ao Linear Usando a DFT
Vimos que se um sinal de dura¸c˜ao finita x[n] tem DTFT X (e
jω), as amostras de X(e
jω) nas frequˆencia ω
k= 2πk/N formam um per´ıodo de uma DFS cuja sequˆencia ´e:
˜
x[n] = x[((n))
N] =
X∞r=−∞
x[n + rN ] e
X [k] =
X(e
j(2πk/N)), k = 0..N − 1
0, caso contr´ario
´e a DFT de um per´ıodo de ˜ x[n]:
x[n] =
˜
x[n], n = 0..N − 1 0, caso contr´ario
Note que, se o comprimento de x[n] for menor ou igual a N , n˜ao haver´a sobreposi¸c˜ao no tempo, e um per´ıodo de ˜ x[n] ser´a igual a x[n].
Convolu¸c˜ ao Linear Usando a DFT
No caso da convolu¸c˜ao linear, tem-se:
y[n] = x[n] ∗ h[n] =
X∞k=−∞
x[k]h[n − k] ↔ Y (e
jω) = X(e
jω) · H (e
jω) Definindo a DFT:
Y [k] = Y (e
j(2πk/N)), k = 0..N − 1 Ent˜ao,
Y [k] = X (e
j(2πk/N)) · H(e
j(2πk/N)) = X[k] · H[k], k = 0..N − 1 E a DFT inversa de Y [k] corresponde a:
y
p[n] =
∞ X r=−∞
y[n + rN], n = 0..N − 1
0, caso contr´ario
em que y[n] ´e a convolu¸c˜ao linear entre x[n] e h[n], e y
p[n] ´e o resultado da convolu¸c˜ao circular entre x[n] e h[n]:
y
p[n] = x[n](N )h[n]
Ou seja, a convolu¸c˜ao circular entre duas sequˆencias pode ser vista como a convolu¸c˜ao linear entre essas sequˆencias seguida de uma sobreposi¸c˜ao no tempo. Com isso, conclui-se que a convolu¸c˜ao circular ser´a igual `a convolu¸c˜ao linear, se e se somente se N for maior que o comprimento de x
3[n]:
N ≥ L + M − 1
Convolu¸c˜ ao Circular
x[n]
h[n]
x[n](4)h[n]
n
x[n]
h[n]
x[n](5)h[n]
Convolu¸c˜ ao Circular
n
x[n]
h[n]
x[n](6)h[n]
n
x[n]
h[n]
x[n](7)h[n]
Convolu¸c˜ ao Linear Usando a DFT
Conclus˜ao: sendo
• x[n] de comprimento L;
• h[n] de comprimento M ;
• A convolu¸c˜ao circular entre x[n] e h[n] ´e igual `a convolu¸c˜ao linear se N ≥ L + M − 1.
Convolu¸c˜ ao r´ apida (Fast Convolution)
1. Calcular a DFT X[k], de comprimento N ≥ L + M − 1;
2. Calcular a DFT H[k], de comprimento N ; 3. Obter Y [k] = X [k] · H[k];
4. Calcular a DFT inversa de Y [k] para obter y[n]
Nestas opera¸c˜oes se utilizam algoritmos eficientes para o c´alculo da DFT, que s˜ao os algoritmos de FFT (Fast Fourier Transform).
100 101 102 103 104
101 102 103 104 105 106 107 108
flops
Convolução rápida Convolução linear
L=M (N= 2L)
Convolu¸c˜ ao por Blocos
• Convolu¸c˜ao r´apida: para sinais de dura¸c˜ao finita;
• Sistemas pr´aticos: a entrada pode ter dura¸c˜ao muito grande;
• Se a resposta impulsiva tiver dura¸c˜ao finita, pode-se separar a en- trada em blocos de comprimento finito e utilizar a convolu¸c˜ao r´apida, aplicada aos blocos - linearidade da opera¸c˜ao de filtragem;
• O comprimento da convolu¸c˜ao linear entre dois sinais ´e maior que
a dura¸c˜ao de cada sinal - necess´ario um ajuste entre resultados de
convolu¸c˜oes aplicadas a blocos adjacentes;
Overlap-Add
Neste m´etodo, considera-se o seguinte:
• O sistema FIR tem resposta impulsiva h[n], com comprimento M;
• O sinal de entrada x[n] tem comprimento muito maior que M ;
• Separa-se o sinal x[n] em blocos de comprimento L, produzindo sinais x
i[n];
• Calcula-se a convolu¸c˜ao r´apida entre x
i[n] e h[n], produzindo os sinais y
i[n].
• Como visto anteriormente, a convolu¸c˜ao r´apida deve ser realizada com um n´ umero de pontos N ≥ L +M −1, que ´e o comprimento resultante das sequˆencias y
i[n].
No processamento por blocos:
• Na pr´atica, adicionam-se zeros a x
i[n] e h[n] para que atinjam o com- primento N .
• A sa´ıda y
0[n] corresponde `as amostras entre 0 e N − 1;
• A sa´ıda y
1[n] corresponde `as amostras entre L e L + N − 1 ;
• H´a uma sobreposi¸c˜ao entre y
0[n] e y
1[n], para L ≤ n ≤ N − 1. Essas amostras devem ser somadas na resposta total;
• H´a um atraso no processamento.
Overlap-Add
...
...
(M−1) zeros
(M−1) zeros (M−1) zeros
L L
L
adiciona adiciona
M−1 M−1
pontos pontos
x[n]
x0[n]
x1[n]
x2[n]
y[n]
y0[n]
y1[n]
y2[n]
x
i[n] = x[n + iL], 0 ≤ n ≤ L − 1; i = 0, 1, ...
y
i[n] = DFT
−1{H[k] · X
i[k]}, N = L + M − 1
y[n] = y
0[n] + y
1[n − L] + y
2[n − 2L] + ...
Overlap-Add - Exemplo
1
1
1
1
1
1 2
2
2
2 3
3
3
3 4
4
4
4 1
1 1
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
...
...
M= 4, L= 5, N= 8 h[n]
x[n]
n n n n
n n n
n n
x0[n]
x1[n]
x2[n]
y[n]
y0[n]
y1[n]
y2[n]
Overlap-Save
Neste m´etodo, se faz a sobreposi¸c˜ao dos blocos de entrada, de modo que n˜ao seja necess´ario adicionar sa´ıdas adjacentes.
• Separa-se a entrada x[n] em sequˆencias de comprimento L = N > M ;
• Calcula-se a DFT com comprimento N ;
• O comprimento de h[n] ´e igual a M < L, e adicionam-se N − M zeros para que fique com comprimento N ;
• Faz-se uma sobreposi¸c˜ao das entradas, em que as M − 1 ´ ultimas amostras de x
i[n] ser˜ao as M − 1 primeiras amostras de x
i+1[n].
• A sequˆencia x
0[n] ´e montada com zeros nas primeiras M − 1 amostras e depois com as L − (M − 1) primeiras amostras de x[n].
• A convolu¸c˜ao circular entre h[n] e x
i[n] (y
i[n]) ter´a valores diferentes
da convolu¸c˜ao linear nas M − 1 primeiras amostras. Essas M − 1
primeiras amostras de y
i[n] s˜ao descartadas;
Overlap-Save
...
...
...
(M−1) (M−1)
(M−1) zeros
L L L−(M−1)
descarta
sobreposi¸c˜ao pontos
pontos x[n]
x0[n]
x1[n]
x2[n]
y[n]
y0[n]
y1[n]
y2[n]
x
i[n] = x[n + iL − i(M − 1) − (M − 1)], 0 ≤ n ≤ L − 1, i > 0
x
0[n] =
0, 0 ≤ n ≤ M − 2
x[n], M − 1 ≤ n < L − (M − 1) y
i[n] = DFT
−1{H[k] · X
i[k]}, N = L, 0 ≤ n ≤ L − 1
y
li[n] = y
i[n], M − 1 ≤ n < L − 1
y[n] =
+∞Xi=0
y
li[n − iL − i(M − 1) − (M − 1)]
Overlap-Save - Exemplo
1
1
1
1 1
1
1
1 1
2
2 2
2
2
2 2
3
3 3
3
3 3 4
4 4
4
4 4 3 1
1 1
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
...
...
M= 4, L=N= 8 h[n]
x[n]
n n
n n
n n n
n n
x0[n]
x1[n]
x2[n]
y[n]
y0[n]
y1[n]
y2[n]