Transformada Discreta de Fourier (DFT)
A DFT de uma sequência 𝑥 𝑛 de comprimento finito 𝑁 é
definida como:
𝑋 𝑘 = 𝑥 𝑛 𝑒−𝑗2𝜋𝑁 𝑘𝑛
𝑁−1
𝑛=0
, 0 ≤ 𝑘 ≤ 𝑁 − 1
A DFT mapeia uma sequência de comprimento 𝑁, 𝑥 𝑛 , em outra
sequência, 𝑋 𝑘 , também de comprimento 𝑁, cujas componentes
correspondem a amostras igualmente espaçadas no eixo 𝜔 da DTFT
desta sequência, ou seja:
𝑋 𝑘 = 𝑋 𝑒𝑗𝜔 𝜔=2𝜋𝑘 𝑁
, 0 ≤ 𝑘 ≤ 𝑁 − 1
Transformada Discreta de Fourier (DFT)
Em geral, as amostras igualmente espaçadas da DTFT não
representam unicamente uma sequência 𝑥 𝑛 quando 𝑥 𝑛 tem
duração infinita. As amostras 𝑋 𝑒𝑗𝜔 𝜔=2𝜋𝑘 𝑁
representam a DFT de
um período (0 ≤ 𝑛 ≤ 𝑁 − 1) da sequência periódica:
𝑥𝑝(𝑛) = 𝑥 𝑛 − 𝑙𝑁 ,
∞
𝑙=−∞
Transformada Discreta de Fourier (DFT)
Definindo 𝑊𝑁 = 𝑒−𝑗2𝜋
𝑁 , a DFT pode ser escrita como:
𝑋 𝑘 = 𝑥 𝑛 𝑊𝑁𝑘𝑛,
𝑁−1
𝑛=0
0 ≤ 𝑘 ≤ 𝑁 − 1
Complexidade da DFT:
• O cálculo de cada componente da DFT pela expressão acima requer
𝑁 multiplicações complexas e 𝑁 − 1 somas complexas.
• O cálculo de todos componentes (0 ≤ 𝑘 ≤ 𝑁 − 1) requer 𝑁2
multiplicações e 𝑁(𝑁 − 1) somas.
• O algoritmo FFT, que será visto mais adiante, requer apenas
𝑁 log2 𝑁 multiplicações e somas complexas quando 𝑁 = 2𝑟 , 𝑟 inteiro.
Transformada Discreta de Fourier (DFT)
Exemplo 1: A DFT de
𝑥 𝑛 = 1, 𝑛 = 0 0, 𝑛 = 1,2, ⋯ , 𝑁 − 1
é
Exemplo 2: A DFT de
𝑥 𝑛 = 1, 𝑛 = 0,1, ⋯ , 𝑁 − 1
é
𝑋 𝑘 = 𝑊𝑁𝑛𝑘
𝑁−1
𝑛=0
=1 − 𝑊𝑁
𝑁𝑘
1 − 𝑊𝑁𝑘 =
𝑁, 𝑘 = 00, 𝑘 ≠ 0
𝑋 𝑘 = δ(𝑛)𝑊𝑁𝑛𝑘
𝑁−1
𝑛=0
= 1, 𝑘 = 0,1, ⋯ , 𝑁 − 1
Transformada Discreta de Fourier (DFT)
Exemplo 3: A DFT de
𝑥 𝑛 = cos 2𝜋𝑟𝑛
𝑁, 𝑛 = 0,1, ⋯ , 𝑁 − 1
sendo 𝑟 um inteiro com 0 ≤ 𝑟 ≤ 𝑁 − 1, é
𝑋 𝑘 = 1
2𝑊𝑁
−𝑟𝑛 + 𝑊𝑁𝑟𝑛 𝑊𝑁
𝑛𝑘
𝑁−1
𝑛=0
=1
2 𝑊𝑁
(𝑘−𝑟)𝑛+ 𝑊𝑁
(𝑘+𝑟)𝑛
𝑁−1
𝑛=0
=1
2
1 − 𝑊𝑁𝑁(𝑘−𝑟)
1 − 𝑊𝑁𝑘−𝑟
+1 − 𝑊𝑁
𝑁(𝑘+𝑟)
1 − 𝑊𝑁𝑘+𝑟
=
𝑁
2, 𝑘 = 𝑟
𝑁
2, 𝑘 = 𝑁 − 𝑟
0, outro 𝑘
Simetrias da DFT de Sequências Reais
Para uma sequência 𝑥 𝑛 real de comprimento 𝑁, temos:
𝑋 𝑘 ∗ = 𝑥 𝑛 𝑒𝑗2𝜋𝑁 𝑘𝑛
𝑁−1
𝑛=0
= 𝑥 𝑛 𝑒−𝑗2𝜋𝑁
(𝑁−𝑘)𝑛
𝑁−1
𝑛=0
= 𝑋 𝑁 − 𝑘
Portanto:
𝑋𝑅 𝑘 = 𝑋𝑅 𝑁 − 𝑘
𝑋𝐼 𝑘 = −𝑋𝐼 𝑁 − 𝑘
𝑋 𝑘 = 𝑋 𝑁 − 𝑘
∠𝑋 𝑘 = −∠𝑋 𝑁 − 𝑘
DFT Inversa (IDFT)
As componentes de 𝑥 𝑛 podem ser obtidas da sua DFT pela
expressão:
𝑥 𝑛 =1
𝑁 𝑋 𝑘 𝑊𝑁
−𝑘𝑛,
𝑁−1
𝑘=0
0 ≤ 𝑛 ≤ 𝑁 − 1
Obtenção da DTFT por Interpolação da DFT
A DTFT de uma sequência de 𝑥 𝑛 de comprimento 𝑁 é:
𝑋 𝑒𝑗𝜔 = 𝑥(𝑛)𝑒−𝑗𝜔𝑛
𝑁−1
𝑛=0
Substituindo 𝑥 𝑛 pela expressão da IDFT, obtemos:
𝑋 𝑒𝑗𝜔 = 1
𝑁 𝑋 𝑘 𝑊𝑁
−𝑘𝑛
𝑁−1
𝑘=0
𝑒−𝑗𝜔𝑛
𝑁−1
𝑛=0
=1
𝑁 𝑋 𝑘
𝑁−1
𝑘=0
𝑒−𝑗 𝜔−
2𝜋𝑘𝑁 𝑛
𝑁−1
𝑛=0
=1
𝑁 𝑋 𝑘
𝑁−1
𝑘=0
𝑠𝑒𝑛 (𝜔𝑁 − 2𝜋𝑘) 2
𝑠𝑒𝑛 (𝜔𝑁 − 2𝜋𝑘) 2𝑁 𝑒
−𝑗 𝜔−2𝜋𝑘𝑁
𝑁−12
Através da expressão acima, podemos reconstruir a DTFT 𝑋 𝑒𝑗𝜔 de uma
sequência de comprimento 𝑁 a partir da sua DFT 𝑋 𝑘 .
Cálculo Numérico da DTFT
A DTFT 𝑋 𝑒𝑗𝜔 de uma sequência 𝑥(n) de comprimento 𝑁 pode ser
obtida em um grid denso de frequências 𝜔𝑘 = 2𝜋𝑘/𝑀, com M ≫ 𝑁,
definindo:
𝑥𝑒 𝑛 = 𝑥 𝑛 , 0 ≤ 𝑛 ≤ 𝑁 − 10, 𝑁 ≤ 𝑛 ≤ 𝑀 − 1
Observando que 𝑋𝑒 𝑒𝑗𝜔 = 𝑋 𝑒𝑗𝜔 , a DFT de 𝑥𝑒 𝑛 corresponderá
à DTFT de 𝑥 n para 𝜔𝑘 =2𝜋𝑘
𝑀, 0 ≤ 𝑘 ≤ M − 1.
Relações Matriciais
As 𝑁 componentes da DFT podem ser escritas, na forma matricial,
em função das 𝑁 amostras de 𝑥 𝑛 , como:
𝑋[0]
𝑋[1]
𝑋[2]⋮
𝑋[𝑁 − 1]
=
1 11 𝑊𝑁
1 ⋯ 1𝑊𝑁
2 ⋯ 𝑊𝑁𝑁−1
1 𝑊𝑁2
⋮ ⋮1 𝑊𝑁
𝑁−1
𝑊𝑁4 ⋯ 𝑊𝑁
2(𝑁−1)
⋮ ⋱ ⋮
𝑊𝑁2(𝑁−1) ⋯ 𝑊𝑁
(𝑁−1)2
𝑥[0]
𝑥[1]
𝑥[2]⋮
𝑥[𝑁 − 1]
ou, na forma compacta:
𝑿𝑁 = 𝑾𝑁𝒙𝑁
onde 𝑾𝑁 é chamada de matriz DFT.
Relações Matriciais
A IDFT também pode ser expressa na forma matricial:
𝑥[0]
𝑥[1]
𝑥[2]⋮
𝑥[𝑁 − 1]
=1
𝑁
1 11 𝑊𝑁
−11 ⋯ 1
𝑊𝑁−2 ⋯ 𝑊𝑁
−(𝑁−1)
1 𝑊𝑁−2
⋮ ⋮
1 𝑊𝑁−(𝑁−1)
𝑊𝑁−4 ⋯ 𝑊𝑁
−2(𝑁−1)
⋮ ⋱ ⋮
𝑊𝑁−2(𝑁−1) ⋯ 𝑊𝑁
−(𝑁−1)2
𝑋[0]
𝑋[1]
𝑋[2]⋮
𝑋[𝑁 − 1]
ou, na forma compacta:
𝒙𝑁 =1
𝑁𝑾𝑁
∗
𝑿𝑁
Comparando as expressões da DFT e da IDFT, concluímos que:
𝑾𝑁−𝟏 =
1
𝑁𝑾𝑁
∗
Operações Circulares
Operação 𝑚 𝑚ó𝑑𝑢𝑙𝑜 𝑁 ou 𝑚 𝑁:
Dados dois números inteiros 𝑚 e 𝑁, seja 𝑖 o inteiro positivo ou
negativo tal que
𝑚 = 𝑖𝑁 + 𝑟, com 0 ≤ 𝑟 ≤ 𝑁 − 1
Então:
𝑚 𝑁 = 𝑟
Exemplos:
13 5 = 3, pois 13 = 2 × 5 + 3
27 5 = 2, pois 27 = 5 × 5 + 2
−12 5 = 3, pois −12 = −3 × 5 + 3
Operações Circulares
Deslocamento circular de 𝑛0 amostras de uma sequência x(n) de
comprimento 𝑁:
𝑥𝐶 𝑛 = 𝑥( 𝑛 − 𝑛0 𝑁)
Exemplo:
Operações Circulares
Convolução circular de duas sequências g n e h(n) de
comprimento 𝑁:
𝑦 𝑛 = 𝑔(𝑚)
𝑁−1
𝑚=0
ℎ( 𝑛 − 𝑚 𝑁)
Exemplo:
𝑦 0 = 𝑔 0 ℎ 0 4 + 𝑔 1 ℎ −1 4 + 𝑔 2 ℎ −2 4 𝑔 3 ℎ −3 4
= 𝑔 0 ℎ 0 + 𝑔 1 ℎ 3 + 𝑔 2 ℎ 2 + 𝑔 3 ℎ 1 = 1 + 4 + 3 + 2
= 10
Operações Circulares
A convolução circular pode ser escrita na forma matricial como:
𝑦[0]
𝑦[1]⋮
𝑦[𝑁 − 1]
=
ℎ[0] ℎ[𝑁 − 1]
ℎ[1] ℎ[0]
⋯ ℎ[1]
⋯ ℎ[2]⋮ ⋮
ℎ[𝑁 − 1] ℎ 𝑁 − 2 ⋱ ⋮⋯ ℎ[0]
𝑔[0]
𝑔[1]⋮
𝑔[𝑁 − 1]
No exemplo anterior:
𝑦[0]
𝑦[1]𝑦[2]
𝑦[3]
=
1 42 1
3 24 3
3 24 3
1 42 1
1111
=
10101010
Propriedades da DFT
Sejam duas sequências de comprimento 𝑁, g n ⟷ 𝐺(𝑘) e
h(n) ⟷ 𝐻 𝑘 . Então, as seguintes propriedades são válidas:
(i) Linearidade:
αg n + 𝛽ℎ 𝑛 ⟷ 𝛼𝐺 𝑘 + 𝛽𝐻(𝑘)
(ii) Deslocamento circular no tempo:
g 𝑛 − 𝑛0 𝑁 ⟷ 𝑊𝑁𝑘𝑛0𝐺 𝑘
(iii) Deslocamento circular na frequência:
𝑊𝑁−𝑘0𝑛g(n) ⟷ 𝐺 𝑘 − 𝑘0 𝑁
Propriedades da DFT
(iv) Convolução circular:
𝑔(𝑚)
𝑁−1
𝑚=0
ℎ( 𝑛 − 𝑚 𝑁) ⟷ 𝐺 𝑘 𝐻(𝑘)
ou seja, a DFT da convolução circular de 𝑁 amostras de duas
sequências é o produto de suas DFTs.
(v) Modulação:
𝑔 𝑛 ℎ(𝑛) ⟷1
𝑁 𝐺(𝑙)
𝑁−1
𝑙=0
𝐻( 𝑘 − 𝑙 𝑁)
ou seja, a DFT do produto de duas sequências é igual à
convolução circular de suas DFTs.
Computação de Convoluções Lineares Usando DFTs
Vimos que a resposta de um sistema LTI é a convolução linear da
entrada com a resposta ao impulso.
Vimos também que a convolução linear pode ser computada usando
DTFTs, ou seja:
A motivação para o uso da DFT é a redução da complexidade
computacional. Mas, pela propriedade (iv) da DFT, a IDFT do
produto de duas DFTs é igual à convolução circular das duas
sequências no tempo.
Computação de Convoluções Lineares Usando DFTs
A convolução linear de sequências de comprimento 𝑀 e 𝑁 é uma
sequência de comprimento 𝐿 = 𝑀 + 𝑁 − 1.
A convolução circular entre duas sequências exige que elas tenham
o mesmo comprimento. A sequência resultante terá o mesmo
comprimento das sequências.
Os resultados das convoluções linear e circular serão idênticos se
aumentarmos o comprimento de cada sequência com zeros de
forma que cada uma delas tenha comprimento 𝐿 = 𝑀 + 𝑁 − 1.
Portanto, definimos as sequências estendidas:
𝑥𝑒 𝑛 = 𝑥 𝑛 , 0 ≤ 𝑛 ≤ 𝑁 − 10, 𝑁 ≤ 𝑛 ≤ 𝐿 − 1
ℎ𝑒 𝑛 = ℎ 𝑛 , 0 ≤ 𝑛 ≤ 𝑀 − 10, 𝑀 ≤ 𝑛 ≤ 𝐿 − 1
Computação de Convoluções Lineares Usando DFTs
A convolução linear pode ser então obtidas usando DFTs conforme
ilustrado abaixo:
Exemplo: