Você está na página 1de 6

ENGENHARIA DE TELECOMUNICAES

PROCESSAMENTO DIGITAL DE SINAIS


Assunto: Transformada Discreta de Fourier (DFT)

Das ltimas aulas sabemos que a transformada de Fourier de um sinal discreto contnua
e dada por:
+

X (e ) =
j

porm contnua de

x[n].e j .n. ,

onde

a freqncia de sinal discreto ,

[ , ]

e a transformada inversa dada por :

1
x[n] =
2.

X (e j ).e j ..n d

A idia agora discretizar o domnio da freqncia na tentativa de obter o espectro do


sinal . evidente que se discretizarmos o domnio da freqncia, o sinal no domnio do
tempo se torna peridico, ou seja:

X [e

2
.k
N

]=

1
x[ n ] =
N

N 1
n =0

x[n].e

N 1
k =0

j.

X [e

2
.k .n
N

2
.k
N

]. e

DFT

j.

2
.k .n
N

IDFT

Observe que o nmero de harmnicos o mesmo do nmero de pontos. A DTFS


totalmente discreta em ambos os domnios e X[k} tem o mesmo perodo de x[n].
importante notar que o comprimento da seqncia x[n]( L) deve ser menor ou no
mximo igual a N para evitar o aliasing na reconstruo. Quanto maior for N melhor ser
o espectro. Normalmente quando N maior que L, temos o que chamado de Zero-

ENGENHARIA DE TELECOMUNICAES
padding que completar x[n] com zeros, pois os dois somatrios devem ter os mesmos
limites.
OBS: Lembre-se que a DFT assim como a DTFT est localizada no intervalo de

[0,2 ]

ou de
rebatimento da DFT..

[ , ]

se forem realizadas as operaes necessrias de

Do mesmo modo que a DTFT, a DFT tem uma diferena de amplitude com o
espectro analgico, ou seja devemos sempre multiplicar a espectro DTFT ou DFT
pelo tempo de amostragem para obtermos a amplitude verdadeira se for o caso.

Exemplo:
1) Seja x[n] dada pela equao abaixo:

x[n] =

1 ,0 n 3
0 fora

a) Encontre a DTFT.
b) Encontre a DFT com 4 pontos e reconstrua o sinal.
c) Encontre a DFT com 8 pontos e reconstrua o sinal
d) Encontre a DFT com 16 pontos e reconstrua o sinal
e) Encontre a DFT com 32 pontos
O programa abaixo determina a DFT para o sinal dado. Construa outras funes para
fazer a reconstruo do sinal pela IDFT.
% programa para calcular a DFT de um sinal
function ex_1_dft
% Sinal de entrada dado no exemplo 1
x = [1 1 1 1 ]
n = [0:(length(x) -1)]
subplot(2,3,1);stem(n,x);title(['Grfico do sinal dado']);
xlabel('n');
ylabel('x[n]');
[X,s] = DTFT(x,n);
subplot(2,3,2);plot(s/pi,abs(X));grid on
title('Grfico da DTFT');
xlabel('freq. em multiplos de pi');
N = 4;
[Xd,s] = DFT(x,n,N)
subplot(2,3,3);stem(s/pi,abs(Xd));grid on
title(['Grfico da DFT com ' num2str(N)]);
xlabel('freq. em multiplos de pi');
N = 8;
[Xd,s] = DFT(x,n,N)

ENGENHARIA DE TELECOMUNICAES
subplot(2,3,4);stem(s/pi,abs(Xd));grid on
title(['Grfico da DFT com ' num2str(N)]);
xlabel('freq. em multiplos de pi');
N = 16;
[Xd,s] = DFT(x,n,N)
subplot(2,3,5);stem(s/pi,abs(Xd));grid on
title(['Grfico da DFT com ' num2str(N)]);
xlabel('freq. em multiplos de pi');

function [Xd,s] = DFT(x,n,N)


s= [0:(2*pi/N):(2*pi*(N-1)/(N))]
x= [ x zeros(1,N-length(x))]
k =[0:(N-1)]
n = k;
Xd = x*exp(-j*2*pi/N*n'*k);
length(x)
length(s)
function [X,s] = DTFT(x,n)
s = [0:0.01:2*pi];
% clculo da DTFT
X = x*exp(-j*n'*s);

O resultado para as DFT seriam:

ENGENHARIA DE TELECOMUNICAES
Gr
fico do sinal dado

Gr
fico da DTFT

0.8

Gr
fico da DFT com 4

x[n]

0.6
0.4
0.2
0

n
Gr
fico da DFT com 8

0.5
1
1.5
freq. em multiplos de pi

0.5
1
1.5
freq. em multiplos de pi

Gr
fico da DFT com 16

0.5
1
1.5
freq. em multiplos de pi

0.5
1
1.5
freq. em multiplos de pi

Na prtica o nmero N deve ser bem grande para obtermos uma boa preciso. Quando N
uma potnica de 2 , temos algoritmos bem rpidos chamados de FFT( Fast Fourier
Transform).
O Matlab tem a funo fft(x) onde x o vetor da seqncia. Se desejarmos impor a
quantidade de pontos temos a funo fft(x,N). Observe que se N for maior que o
comprimento de x tem o zero-padding (completar x com zeros), e se N for menor que o
comprimento de x o vetor truncado.l

[0,2 ]

A funo fft faz a transformada no intervalo de


, se quisermos de
temos que utilizar a funo fftshift(fft(x)) para rebater a fft(x).
O mesmo exemplo acima utilizando a funo do Matlab.
% programa para calcular a FFT do Matlab
function ex_1_fft
% Sinal de entrada dado no exemplo 1
x = [1 1 1 1 ]
n = [0:(length(x) -1)]

de um sinal

[ , ]

ENGENHARIA DE TELECOMUNICAES
subplot(2,3,1);stem(n,x);title(['Grfico do sinal dado']);
xlabel('n');
ylabel('x[n]');
[X,s] = DTFT(x,n);
subplot(2,3,2);plot(s/pi,abs(X));grid on
title('Grfico da DTFT');
xlabel('freq. em multiplos de pi');
N = 4;
Xd = fft(x,N)
s= [0:(2*pi/N):(2*pi*(N-1)/(N))]
subplot(2,3,3);stem(s/pi,abs(Xd));grid on
title(['Grfico da fft com ' num2str(N)]);
xlabel('freq. em multiplos de pi');
N = 8;
Xd = fft(x,N)
s= [0:(2*pi/N):(2*pi*(N-1)/(N))]
subplot(2,3,4);stem(s/pi,abs(Xd));grid on
title(['Grfico da fft com ' num2str(N)]);
xlabel('freq. em multiplos de pi');
N = 16;
Xd = fft(x,N)
s= [0:(2*pi/N):(2*pi*(N-1)/(N))]
subplot(2,3,5);stem(s/pi,abs(Xd));grid on
title(['Grfico da fft com ' num2str(N)]);
xlabel('freq. em multiplos de pi');

function [X,s] = DTFT(x,n)


s = [0:0.01:2*pi];
% clculo da DTFT
X = x*exp(-j*n'*s);

Os grficos abaixo mostram que o resultado o mesmo:

ENGENHARIA DE TELECOMUNICAES
Gr
fico do sinal dado

Gr
fico da DTFT

0.8

Gr
fico da fft com 4

x[n]

0.6
0.4
0.2
0

n
Gr
fico da fft com 8

0.5
1
1.5
freq. em multiplos de pi

0.5
1
1.5
freq. em multiplos de pi

Gr
fico da fft com 16

0.5
1
1.5
freq. em multiplos de pi

0.5
1
1.5
freq. em multiplos de pi

Exerccios.
1) O Matlab tem a funo ifft(xd) para reconstruir o sinal a partir de usa
transformada xd.; Construa um programa para reconstruir o sinal do exemplo 1.

2) Plotar a DFT dos sinais abaixo par N= 16 , N = 32, N = 256.


a)

x1[n] = 2 * cos(0.2 .n)(u[n] u[n 10])

b)

x 2[n] = 5 * (0.9e j / 4 ) n .u[n]

3) Seja o sinal

x(t ) = 2 (t )

a) amostre este sinal com as freqncias : Fs= 10/s; Fs = 100/s e a


freqncia de Nyquist. Construa os grficos.
b) Determine a fft em todos os casos.
c) Reconstrua o sinal utilizando a ifft do Matlab.