Você está na página 1de 5

Sistemas de Processamento Digital

Engenharia de Sistemas e Informática


Ficha 4
2005/2006 4.º Ano/ 2.º Semestre

DFS – Série Discreta de Fourier


DFT – Transformada Discreta de Fourier
Convolução Circular
Para calcular a DFT, Transformada Discreta de Fourier, faz-se a amostragem da Transformada de Fourier
Discreta no Tempo no domínio da frequência. O seu desenvolvimento faz-se inicialmente através da análise
de sequências periódicas. A partir da análise de Fourier, sabemos que uma função periódica (ou sequência)
pode ser sempre representada através duma combinação linear de exponenciais complexas harmonicamente
relacionadas (que é uma forma de amostragem). Daqui obtém-se a representação DFS, Série Discreta de
Fourier. Uma vez que a amostragem se faz no domínio da frequência, temos de estudar os efeitos da
amostragem no domínio do tempo.
Por outro lado, estende-se a DFS a sequências de duração finita, que nos leva a uma nova transformada,
designada por DFT, Transformada Discreta de Fourier. A DFT é uma transformada que pode ser calculada
numericamente, sendo portanto adequada para uma implementação num computador.
Esta ficha encontra-se dividida em três partes, em que a primeira trata os aspectos associados à utilização da
DFS, a segunda dedica-se à implementação da DFT e a terceira à convolução circular.

Série Discreta de Fourier (DFS)


N −1 2π
−j
Equação de Análise: X ( k ) = DFS ⎡⎣ x ( n ) ⎤⎦ = ∑ x ( n )WNnk
n =0
com WN = e N

N −1
1
Equação de Síntese: x ( n ) = IDFS ⎡⎣ X ( k ) ⎤⎦ =
N
∑ X ( k )W
k =0
− nk
N

Exercício 1
Implemente em MatLab as duas funções DFS e IDFS na forma mais eficiente através da utilização de uma
multiplicação matriz-vector.
function [Xk] = dfs(xn) e function [xn] = idfs(Xk)

Exercício 2

Determine a DFS da seguinte sequência periódica: x( n ) = {...,0,1, 2,3, 0,1, 2,3,0 ,1, 2,3,...}

a) Por cálculo analítico
b) Por cálculo computacional (usando a função implementada anteriormente)

Sistemas de Processamento Digital Manuel Baptista & Ernesto Afonso 1


Exercício 3
Uma sequência periódica duma onda quadrada é dada por:

onde N é o período fundamental e L/N é o duty cycle.

a) Determine a expressão para X ( k ) em termos de L e N.

b) Trace o módulo X ( k ) para L=5 e N=20, L=5 e N=40, L=5 e N=60, L=7 e N=60. Comente os
resultados.

Relação da DFS com a DTFT (Discrete Time Fourier Transform)


N −1
Considerando que a DTFT é dada por: X e ( jω
) = ∑ x ( n ) e− jωn .
n=0

Comparando a DFS temos X ( k ) = X e ( ) se ω =


jω 2π
N k . O intervalo de amostragem é w = 2π
N .

Exercício 4

Seja a sequência x( n ) = {..., 0 ,1, 2 ,3, 0 ,1, 2 ,3, 0 ,1, 2 ,3,...} do exercício 1.

a) Determine a sua DTFT X e ( )

b) Amostre X e ( ) em kw =
jω 2π
N k , k = 0 ,1, 2 ,3 e verifique se é igual a X ( k ) do exercício 1.

Transformada Discreta de Fourier (DFT)


N −1 2π
−j
Transformada directa: X ( k ) = DFT ⎡⎣ x ( n ) ⎤⎦ = ∑ x ( n )W
n =0
nk
N com 0 ≤ k ≤ N − 1 e WN = e N

N −1
1
Transformada inversa: x ( n ) = IDFT ⎡⎣ X ( k ) ⎤⎦ =
N
∑ X ( k )W
k =0
− nk
N com 0 ≤ n ≤ N − 1

Se x ( n ) = x (( n )) N
= x ( n mod N ) então a DFS e a DFT são idênticas.

Crie em MatLab as duas funções DFT e IDFT através da alteração dos nomes da DFS e IDFS.
function [Xk] = dft(xn) e function [xn] = idft(Xk)
Crie em MatLab a função mod da seguinte forma:
function m = mod(n, N)
m = rem(n, N);
m = n + N;
m = rem(n, N);

Sistemas de Processamento Digital Manuel Baptista & Ernesto Afonso 2


Exercício 5

Considere a sequência x ( n ) = 10 ( 0.8 ) , 0 ≤ n ≤ 10 e a propriedade de simetria circular (folding):


n

⎧⎪ x ( 0 ) , n=0
x ( ( −n ) ) N = ⎨ .
⎪⎩ x ( N − n ) , 1 ≤ n ≤ N − 1

a) Determine e trace e x ( ( −n ) )
11
. Compare os dois sinais.

b) Verifique a propriedade de simetria circular e da respectiva transformada:

⎧⎪ X ( 0 ) , k =0
DFT ⎡⎣ x ( ( −n ) ) N ⎤⎦ = X ( ( − k ) ) N = ⎨
⎪⎩ X ( N − k ) , 1 ≤ k ≤ N − 1

Nota: no MatLab, a simetria circular obtém-se fazendo x = x mod ( − n,N ) + 1 . ( )

Exercício 6
Desenvolva uma função em MatLab que decomponha uma sequência de N pontos nas suas componentes
circulares Par e Ímpar, definidas da seguinte forma:

x par ( n ) 1 ⎡ x ( n ) + x ( ( −n ) ) ⎤ e xímpar ( n ) 1 ⎡ x ( n ) − x ( ( −n ) ) ⎤
2 ⎣ N⎦ 2 ⎣ N⎦

Exercício 7

Considere novamente a sequência x ( n ) = 10 ( 0.8 ) , 0 ≤ n ≤ 10 .


n

a) Decomponha e trace as componentes par e ímpar de x ( n ) .

b) Verifique as propriedades da simetria circular:

X par ( k ) = Re ⎡⎣ X ( k ) ⎤⎦ = Re ⎡⎣ X ( ( −k ) ) N ⎤⎦ e X ímpar ( k ) = Im ⎡⎣ X ( k ) ⎤⎦ = Im ⎡⎣ X ( ( − k ) ) N ⎤⎦

Exercício 8

Considere novamente a sequência x ( n ) = 10 ( 0.8 ) , 0 ≤ n ≤ 10 .


n

a) Represente x (( n + 4)) 11
que representa um deslocamento circular em direcção à esquerda.

b) Represente x ( ( n − 3) ) 15
que representa um deslocamento circular em direcção à direita, onde se
assume que a sequência tem um comprimento de 15 pontos (por adição de zeros).

c) Represente x (( n − 6)) 15
que representa um deslocamento circular em direcção à direita.

Nota: No MatLab, o deslocamento circular obtém-se fazendo x = x mod ( n − m,N ) + 1 . ( )

Sistemas de Processamento Digital Manuel Baptista & Ernesto Afonso 3


Convolução Circular
N −1
Definição: x1 ( n ) ○
N x ( n) =
2 ∑ x ( m) x (( n − m))
m=0
1 2 N
, 0 ≤ n ≤ N −1

Propriedades da convolução circular:

Convolução no tempo: DFT ⎡⎣ x1 ( n ) ○


N x ( n ) ⎤ = X ( k ) .X ( k )
2 ⎦ 1 2

Multiplicação no tempo: DFT ⎡⎣ x1 ( n ) .x2 ( n ) ⎤⎦ = 1


N X1 ( k ) ○
N X (k )
2

Relação com a convolução linear: x1 ( n ) ○


N x2 ( n ) = x1 ( n ) ∗ x2 ( n ) se a x1 ( n ) e x2 ( n ) forem

acrescentados zeros de forma a terem N=N1+N2-1 pontos.

Exercício 9

Considere as sequências x1 ( n ) = {1, 2 , 2} e x1 ( n ) = {1, 2 , 3, 4} .

a) Calcule a convolução circular de 4 pontos x1 ( n ) ○


4 x ( n) .
2

b) Utilize o MatLab para calcular a convolução circular.


c) Estude o efeito de N na convolução circular (N ≥ 4):

i) x1 ( n ) ○
5 x2 ( n )

ii) x1 ( n ) ○
6 x ( n)
2

Exercício 10

Considere as sequências x1 ( n ) = {1, 2 , 2 , 1} e x1 ( n ) = {1, − 1, − 1, 1} .

a) Determine a convolução linear x1 ( n ) ∗ x2 ( n ) .


b) Determine a convolução circular de modo a que seja igual ao resultado anterior.

Exercício 11

Considere as mesmas sequências x1 ( n ) e x2 ( n ) do exercício 10.

a) Calcule a convolução circular para N = 6, 5, 4 e 3.


b) Verifique as relações de erro, para cada N, relativamente à convolução linear.

Sistemas de Processamento Digital Manuel Baptista & Ernesto Afonso 4


Convolução por Blocos
Quando é necessário processar sinais de duração muito longa, a aplicação das técnicas de cálculo da
Convolução tornam-se impraticáveis devido ao elevado número de pontos a calcular, o que pode implicar um
tempo muito elevado de processamento que inviabilizaria a sua utilização na grande maioria dos sistemas de
processamento. Nos sistemas em que os sinais que estão a ser recolhidos em contínuo, também não é viável
calcular a Convolução porque a sequência de pontos não teria fim.
A solução para este problema consiste na subdivisão de um sinal de duração infinita em pequenos blocos,
processar cada um desses blocos individualmente e juntar as sequências de saída de cada um deles de
modo a se obter a sequência final. A este procedimento é chamado Convolução por Blocos.
O método de “overlap-save” é uma forma de calcular uma Convolução por Blocos de um sinal de duração
muito longa ou mesmo infinita obtendo-se o mesmo resultado como se fosse calculada a Convolução Linear
com todos os pontos de uma só vez.

Procedimento a executar para calcular a convolução com blocos de N pontos dos sinais x ( n ) com P pontos
e h ( n ) com M pontos (com P > M):

- Criar a sequência x̂(n) a partir de x ( n ) , acrescentando M-1 zeros no início e N-1 zeros no final:

x̂(n) {0 , 0 , 0 ,..., 0 ,x(n), 0 , 0 , 0 ,..., 0} ;


M −1 N −1

- Considerando L = N-M+1, então o bloco número k, xk ( n ) com 0 ≤ n ≤ N − 1 , é dado por

xk ( n ) = ˆx ( m ) , kL ≤ m ≤ kL + N − 1 e k ≥ 0 . Cada bloco é constituído por N pontos de x̂ ( n )


dos quais M-1 pontos são sobrepostos com o bloco anterior.

⎡ P + M − 2⎤
- O número total de blocos é dado por K =⎢ ⎥⎦ + 1 , onde [.] significa truncar.
⎣ L
- A cada bloco é aplicada a convolução circular yk ( n ) = xk ( n ) ○
N h ( n) .

- Finalmente, eliminam-se os M-1 primeiros valores de cada yk ( n ) e juntam-se para formar y ( n )

Exercício 12

Considere as mesmas sequências x ( n ) = n + 1, 0 ≤ n ≤ 9 e h ( n ) = {1, 0 , −1} .

a) Calcule y( n ) = x ( n ) ∗ h( n ) pelo método de “overlap-save”, considerando P = 6.

b) Implemente no MatLab o método de “overlap-save”.

Sistemas de Processamento Digital Manuel Baptista & Ernesto Afonso 5

Você também pode gostar