Transformada Discreta de Fourier (DFT) - pads.ufrj.brmariane/Cap5_slides.pdf · Transformada...

Post on 30-Sep-2018

231 views 0 download

Transcript of Transformada Discreta de Fourier (DFT) - pads.ufrj.brmariane/Cap5_slides.pdf · Transformada...

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: