Transformada Discreta de Fourier Carlos Alexandre Mello Carlos Alexandre Mello – [email protected] 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 ... Carlos Alexandre Mello – [email protected] 2 Transformada de Fourier e-jwπ: kernel da transformada Carlos Alexandre Mello – [email protected] 3 Transformada de Fourier Propriedades Linearidade: Deslocamento no tempo f(a.t) ↔ (1/|a|)F(w/a) Convolução no tempo: f(t)ej2πw0t ↔ F(w – w0) Escalonamento: f(t - t0) ↔ e-j2πwt0.F(w) Deslocamento na frequência: a.f(t) + b.g(t) ↔ a.F(w) + b.G(w) f(t)*g(t) ↔ F(w).G(w) Convolução na frequência: f(t).g(t) ↔ (1/2π)F(w)*G(w) Carlos Alexandre Mello – [email protected] 4 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) Carlos Alexandre Mello – [email protected] 5 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} Carlos Alexandre Mello – [email protected] 6 A Série Discreta de Fourier Assim, a sequência periódica x[n] pode ser expressa como: , n = 0, ±1, .... onde {X[k], k = 0, ±1, ....} são chamados de coeficientes da série discreta de Fourier: , k = 0, ±1, .... Carlos Alexandre Mello – [email protected] 7 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 Carlos Alexandre Mello – [email protected] 8 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: Carlos Alexandre Mello – [email protected] 9 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 Carlos Alexandre Mello – [email protected] 10 A Série Discreta de Fourier Exemplo (cont.): Agora: Assim: Carlos Alexandre Mello – [email protected] 11 A Série Discreta de Fourier Uma outra forma de ver a transformada discreta de Fourier é através de uma representação em matrizes X e x são vetores coluna Carlos Alexandre Mello – [email protected] 12 A Série Discreta de Fourier WN é chamada de Matriz DFS No MatLab: 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; >> xn = [0 1 2 3]; N = 4; Xk = xn*WNnk; >> Xk = dfs(xn, N) Xk = 6 -2 + 2i -2 - 0i Carlos Alexandre Mello – [email protected] -2 - 2i 13 A Série Discreta de Fourier Inversa: 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 Carlos Alexandre Mello – [email protected] 14 Transformada Discreta de Fourier A DFT de uma sequência de N-pontos é dada por: , 0≤k≤N–1 Note que 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: , 0≤n≤N–1 Carlos Alexandre Mello – [email protected] 15 Transformada Discreta de Fourier Como antes: Assim, temos: Equação de Análise: Equação de Síntese: Carlos Alexandre Mello – [email protected] 16 Transformada Discreta de Fourier Propriedades 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 Carlos Alexandre Mello – [email protected] 17 Transformada Discreta de Fourier Propriedades 2) Deslocamento de uma seqüência x[n – m] ↔ WNkmX[m] 3) Dualidade Se x[n] ↔ X[k], então X[n] ↔ N.x[-k] Carlos Alexandre Mello – [email protected] 18 Transformada Discreta de Fourier Propriedades 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 Prova: Carlos Alexandre Mello – [email protected] 19 Transformada Discreta de Fourier Propriedades 4) Simetria (cont.) Carlos Alexandre Mello – [email protected] 20 Transformada Discreta de Fourier Propriedades 5) Convolução periódica Carlos Alexandre Mello – [email protected] 21 Transformada Discreta de Fourier Exemplo: >> 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'); Carlos Alexandre Mello – [email protected] 22 Transformada Discreta de Fourier Exemplo (cont.): Carlos Alexandre Mello – [email protected] 23 Transformada Discreta de Fourier 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 Para a fase, o padrão também aparece refletido no eixo da frequência; novamente, só precisamos de metade da plotagem Para a questão da magnitude podemos fazer: Carlos Alexandre Mello – [email protected] 24 Transformada Discreta de Fourier Exemplo (cont.): >> 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'); Carlos Alexandre Mello – [email protected] 25 Transformada Discreta de Fourier Exemplo (cont.): Carlos Alexandre Mello – [email protected] 26 Transformada Discreta Bi-Dimensional de Fourier DFT Carlos Alexandre Mello – [email protected] 27 Transformada Discreta Bi-Dimensional de Fourier Carlos Alexandre Mello – [email protected] 28 Transformada Discreta de Fourier Espectrograma O espectrograma apresenta a densidade espectral do sinal ao longo do tempo Em processamento de voz, o espectrograma é usado para identificar fonemas no sinal 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 Carlos Alexandre Mello – [email protected] 29 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 Carlos Alexandre Mello – [email protected] 30 Transformada Discreta de Fourier Espectrograma: Exemplo (sinal de voz) Carlos Alexandre Mello – [email protected] 31 Transformada Discreta de Fourier Espectrograma: Exemplo (sinal de voz) Carlos Alexandre Mello – [email protected] 32 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 Carlos Alexandre Mello – [email protected] 33