Post on 13-Oct-2019
Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada Discreta de Fourier
Carlos Alexandre Mello
2Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformadas
� O uso de transformadas serve para observar características de um sinal que já estavam presentes nele, mas que podem não ser observáveis em um domínio
� Assim, as transformadas conseguem levar o sinal para outro domínio e trazê-lo de volta ao domínio original.� Transformada de Fourier
� Transformada Wavelet
� Transformada do Cosseno
� ...
2
3Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada de Fourier
3
e-jwπ: kernel da transformada
4Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada de FourierPropriedades
� Linearidade:� a.f(t) + b.g(t) ↔ a.F(w) + b.G(w)
� Deslocamento no tempo� f(t - t0) ↔ e-j2πwt0.F(w)
� Deslocamento na frequência:� f(t)ej2πw0t ↔ F(w – w0)
� Escalonamento:� f(a.t) ↔ (1/|a|)F(w/a)
� Convolução no tempo:� f(t)*g(t) ↔ F(w).G(w)
� Convolução na frequência:� f(t).g(t) ↔ (1/2π)F(w)*G(w)
4
5Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Considere uma sequência x[n] que é periódica de período N:� x[n] = x[n + k.N], qualquer k inteiro
� Da análise de Fourier, sabemos que funções periódicas podem ser sintetizadas como uma combinação linear de exponenciais complexas cujas frequências são múltiplas (ou harmônicas) da frequência fundamental (no caso 2π/N)
5
6Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Da periodicidade no domínio da frequência da transformada de Fourier discreta no tempo, concluímos que existe um número finito de harmônicos:
� as frequências {(2π/N)k, k = 0, 1, 2, ...., N-1}
6
7Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Assim, a sequência periódica x[n] pode ser expressa como:
� onde {X[k], k = 0, ±1, ....} são chamados de coeficientes da série discreta de Fourier:
7
, n = 0, ±1, ....
, k = 0, ±1, ....
8Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� x[n] é a sequência discreta no domínio do tempo
que descreve os valores amostrados da variável
contínua x(t) e N é o número de amostras da
sequência da entrada
� Observe que X[k] também é uma sequência
periódica com período fundamental igual a N
� Ou seja, X[k + N] = X[k]
� As equações anteriores são a representação
discreta em série de Fourier de sequências
periódicas
8
9Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Por conveniência de notação, podemos chamar:
� Assim, temos:
� Equação de Análise:
� Equação de Síntese:
9
10Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Exemplo:
� Encontre a representação em série de Fourier
da sequência:
� x[n] = {...0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, ....}
� O período fundamental da sequência é N = 4
� Assim, W4 = e-j2π/4 = e-jπ/2 = cos(-π/2) + j.sen(-
π/2) = 0 + j.(-1) = -j
10
11Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Exemplo (cont.):
� Agora:
� Assim:
11
12Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Uma outra forma de ver a transformada discreta
de Fourier é através de uma representação em
matrizes
12
X e x são vetorescoluna
13Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� WN é chamada de Matriz DFS
� No MatLab:
13
function [Xk] = dfs (xn, N)
n = [0:N-1];
k = [0:N-1];
WN = exp(-j*2*pi/N);
nk = n'*k;
WNnk = WN.^nk;
Xk = xn*WNnk; >> xn = [0 1 2 3]; N = 4;
>> Xk = dfs(xn, N)
Xk = 6 -2 + 2i -2 - 0i -2 - 2i
14Carlos Alexandre Mello – cabm@cin.ufpe.br
A Série Discreta de Fourier
� Inversa:
14
function [xn] = idfs(Xk, N)
n = [0:N-1];
k = [0:N-1];
WN = exp(-j*2*pi/N);
nk = n'*k;
WNnk = WN.^(-nk);
xn = (Xk*WNnk)/N; Para o Xk anterior, temos:
>> xn = idfs(Xk, N)
xn = 0 - 0i 1 - 0i 2 - 0i 3 + 0i
15Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada Discreta de Fourier
� A DFT de uma sequência de N-pontos é dada por:
� X[k] também é uma sequência de N-pontos, ou seja, ela
não é definida fora do intervalo de 0 ≤ k ≤ N – 1
� A IDFT é dada por:
15
, 0 ≤ k ≤ N – 1
, 0 ≤ n ≤ N – 1
16Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada Discreta de Fourier
� Como antes:
� Assim, temos:
� Equação de Análise:
� Equação de Síntese:
16
17Carlos Alexandre Mello – cabm@cin.ufpe.br
� 1) Linearidade
� a.x1[n] + b.x2[n] ↔ a.X1[k] + b.X2[k]
� Obs:
� Se x1[n] e x2[n] são sequências de durações
diferentes (N1-pontos e N2-pontos, por exemplo),
escolha N3 = max(N1, N2)
� Se, por exemplo, N1 < N2, então X1[k] é a DFT
de x1[n] aumentada de (N2 – N1) zeros
� Zero padding
Transformada Discreta de FourierPropriedades
17
18Carlos Alexandre Mello – cabm@cin.ufpe.br
� 2) Deslocamento de uma sequência
� x[n – m] ↔ WNkmX[m]
� 3) Dualidade
� Se x[n] ↔ X[k], então X[n] ↔ N.x[-k]
� 4) Simetria
� Quando a sequência do sinal for real, então X[N
− m]* = X[m]
� Ou seja basta que calculemos as componentes de
X[m] para 0 ≤ m ≤ N/2
Transformada Discreta de FourierPropriedades
18
19Carlos Alexandre Mello – cabm@cin.ufpe.br
� 5) Convolução periódica
Transformada Discreta de FourierPropriedades
19
20Carlos Alexandre Mello – cabm@cin.ufpe.br
� Exemplo:
Transformada Discreta de Fourier
20
>> n = 0:99;
>> fs = 200;
>> Ts=1/fs;
>>x=cos(2*pi*20*n*Ts + pi/4) + 3*cos(2*pi*40*n*Ts - 2*pi/5) + 2*cos(2*pi*60*n*Ts + pi/8);
>> X = fft(x);
>> m = 0:length(X) - 1;
>> subplot(3, 1, 1); stem(x); xlabel('n');ylabel('x(n)');title('Sequencia');
>> subplot(3, 1, 2); stem(m*fs/length(X), abs(X), 'b'); ylabel('magnitude');
>> xlabel('frequencia (Hz)'); title('Magnitude da Resposta em Frequencia');
>> subplot(3,1,3); stem(m*fs/length(X), angle(X), 'b'); ylabel('Angulo');
>> xlabel('frequencia (Hz)'); title('Fase');
x é real
21Carlos Alexandre Mello – cabm@cin.ufpe.br
� Exemplo (cont.):
Transformada Discreta de Fourier
21
22Carlos Alexandre Mello – cabm@cin.ufpe.br
� Exemplo (cont.):
� Observe que, como o sinal x[n] é real, a magnitude da
resposta em frequência apresenta uma imagem
refletida
� Assim, precisamos apenas da primeira metade dela
Transformada Discreta de Fourier
22
23Carlos Alexandre Mello – cabm@cin.ufpe.br
� Exemplo (cont.):
� Podemos fazer:
Transformada Discreta de Fourier
23
>> half_m = 0:ceil(length(X)/2);
>> stem(half_m*fs/length(X), abs(X(half_m + 1)), 'b');
>> ylabel('magnitude');
>> xlabel('frequencia (Hz)'); title('Magnitude da Resposta em Frequencia');
24Carlos Alexandre Mello – cabm@cin.ufpe.br
� Exemplo (cont.):
Transformada Discreta de Fourier
24
25Carlos Alexandre Mello – cabm@cin.ufpe.br
� Exemplo (cont.):
� Para a fase, o padrão também aparece mas refletido no
eixo da frequência; novamente, só precisamos de
metade da plotagem
Transformada Discreta de Fourier
25
26Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada Discreta Bi-Dimensional de Fourier
26
DFT
27Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada Discreta Bi-Dimensional de Fourier
27
Transformada Discreta de Fourier
� Espectrograma
� O espectrograma é uma representação visual
dos harmônicos de um sinal de entrada em
função do tempo
� Do ponto de vista de implementação, temos um
janelamento do sinal de entrada tomando a
transformada de Fourier de cada parte e
plotando ela
28Carlos Alexandre Mello – cabm@cin.ufpe.br 28
Transformada Discreta de Fourier
� Espectrograma
� A forma mais comum de representarmos um
espectrograma é através de um gráfico bi-
dimensional onde a abscissa corresponde ao
tempo e a ordenada à frequência
� Uma terceira dimensão indica a amplitude de
cada frequência e é normalmente associada a
uma cor
� Com isso, o espectrograma pode ser visto como uma
imagem
29Carlos Alexandre Mello – cabm@cin.ufpe.br 29
Transformada Discreta de Fourier
� Espectrograma: Exemplo (sinal de voz)
30Carlos Alexandre Mello – cabm@cin.ufpe.br 30
Transformada Discreta de Fourier
� Espectrograma: Exemplo (sinal de voz)
31Carlos Alexandre Mello – cabm@cin.ufpe.br 31
Transformada Discreta de Fourier
� Espectrograma: Exemplo (sinal de voz)
32Carlos Alexandre Mello – cabm@cin.ufpe.br 32
Transformada Discreta de Fourier
� Espectrograma
� Normalmente, espectrogramas são gerados
através do cálculo do quadrado da magnitude
da STFT (Short-Time Fourier Transform –
Transformada de Fourier de Tempo Curto) do
sinal
� Podemos interpretar esse valor como a
densidade espectral de potência
33Carlos Alexandre Mello – cabm@cin.ufpe.br 33
Transformada Discreta de Fourier
� Espectrograma
� Sem informação de fase
� Não há clara interpretação
� Permite analisar sinais não-estacionários,
considerando-os localmente estacionários
� Questões relacionadas às janelas:
� Que tipo de janela?
� Qual o tamanho? (pode implicar em zero padding)
� Sobreposição?
34Carlos Alexandre Mello – cabm@cin.ufpe.br 34
Transformada Discreta de Fourier
� Espectrograma
� Variação na Janela (Hamming)
35Carlos Alexandre Mello – cabm@cin.ufpe.br 35
>> x = abs(fft(hamming(512).*y2, 1024));>> z = 10*log10(abs(fft(hamming(512).*y2, 1024)));>> figure, subplot (2, 1, 1); plot (x);>> subplot (2, 1, 2); plot (z);
dB
Transformada Discreta de Fourier
� Espectrograma
� Variação na Janela (Hanning)
36Carlos Alexandre Mello – cabm@cin.ufpe.br 36
>> x = abs(fft(hanning(512).*y2, 1024));>> z = 10*log10(abs(fft(hanning(512).*y2, 1024)));>> figure, subplot (2, 1, 1); plot (x);>> subplot (2, 1, 2); plot (z);
dB
Transformada Discreta de Fourier
� Espectrograma
� Variação na Janela (Retangular)
37Carlos Alexandre Mello – cabm@cin.ufpe.br 37
>> x = abs(fft(rectwin(512).*y2, 1024));>> z = 10*log10(abs(fft(rectwin(512).*y2, 1024)));>> figure, subplot (2, 1, 1); plot (x);>> subplot (2, 1, 2); plot (z);
dB
Transformada Discreta de Fourier
� Espectrograma
� Sobreposição (em geral 25 a 75%)
38Carlos Alexandre Mello – cabm@cin.ufpe.br 38
Transformada Discreta de Fourier
� Espectrograma
� Sobreposição
39Carlos Alexandre Mello – cabm@cin.ufpe.br 39
>> load chirp>> spectrogram (y, 256, 250, 1e3, 'yaxis');>> figure, spectrogram (y, 256, 0, 1e3, 'yaxis');
Transformada Discreta de Fourier
� Espectrograma
� O tipo da janela afeta a forma do espectro em
cada região analisada
� O tamanho da janela afeta a suavidade do
espectro
� Janela curta → espectrograma de banda larga
� Janela longa → espectrograma de banda estreita
40Carlos Alexandre Mello – cabm@cin.ufpe.br 40
Transformada Discreta de Fourier
� Espectrograma
41Carlos Alexandre Mello – cabm@cin.ufpe.br 41
Janela: 128
Sobreposição: 120
Transformada Discreta de Fourier
� Espectrograma
42Carlos Alexandre Mello – cabm@cin.ufpe.br 42
Janela: 256
Sobreposição: 250
Transformada Discreta de Fourier
� Espectrograma
43Carlos Alexandre Mello – cabm@cin.ufpe.br 43
Janela: 512
Sobreposição: 500
Transformada Discreta de Fourier
� Espectrograma
44Carlos Alexandre Mello – cabm@cin.ufpe.br 44
45Carlos Alexandre Mello – cabm@cin.ufpe.br 45Carlos Alexandre Mello – cabm@cin.ufpe.br
Transformada Discreta de Fourier
� Referências:
� Digital Signal Processing using MatLab, V.Ingle,
J.G.Proakis, Brooks/Cole, 2000
� Discrete-Time Signal Processing, A.Oppenheim
e R.W.Schafer, Prentice-Hall, 1989
� Digital Signal Processing Using MatLab and
Wavelets, M.Weeks, Ed. Infinity Science, 2007
45