Procesamiento digital de la señal Transformada discreta de Fourier (DFT) Alfonso Zozaya Universidad de Carabobo (UC) Departamento de Electrónica y Comunicaciones Valencia, Venezuela, marzo de 2007 A. Zozaya Mar. 2007 –1– Transformada discreta de Fourier (DFT) Sea x(n) una secuencia de N muestras en el intervalo [0, N − 1] (o sea causal). Se define la Transformada discreta de Fourier DFT de x(n), la cual se denota por X(k), como: X(k) , DFT[x(n)] = N −1 X x(n)WNkn (1) n=0 0≤k ≤N −1 donde WN , exp − 2π N . La DFT X(k) es igualmente una secuencia de N muestras. <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Mar. 2007 –2– Transformada discreta de Fourier inversa (IDFT) Sea X(k) la DFT de N muestras en el intervalo [0, N − 1] de x(n). Se define la Transformada discreta de Fourier inversa IDFT de X(k): N −1 1 X X(k)WN−kn x(n) , IDFT[X(k)] = N (2) k=0 0≤n≤N −1 La IDFT x(n) es igualmente una secuencia de N muestras. <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Mar. 2007 –3– Implementación de la DFT usando MATLAB function Xk=dft(xn) % X(k)=DFT(x(n)) % % Calcula la DFT de la secuencia x(n) de duracion finita N. N=length(xn); n=0:N-1; k=0:N-1; WN=exp(-j*(2*pi/N)); W=WN.^(k’*n); Xk=W*xn’; <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Mar. 2007 –4– Implementación de la IDFT usando MATLAB function x=idft(X) % x(nk)=IDFT(X(k)) % % Calcula la IDFT de la secuencia X(k) de duracion finita N. N=length(X); n=0:N-1; k=0:N-1; WN=exp(j*(2*pi/N)); W=WN.^(k’*n); x=(1/N)*W*X’; <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DFS –5– Relación entre la DFT y la serie de Fourier de tiempo discreto DFS 1. Recordemos algunas caracterı́sticas de las DFS: a) La DFS está definida solo para secuencias x e(n) periódicas, de perı́odo N , de duración infinita: 1) Ecuación de análisis: e X(k) = N −1 X x e(n)WNkn, 0≤k ≤N −1 (3) n=0 <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DFS –6– 2) Ecuación de sı́ntesis: N −1 1 X e x e(n) = X(k)WN−kn, N −∞ ≤ n ≤ ∞ (4) k=0 b) El contenido frecuencial de la DFS es discreto y finito (se puede manejar computacionalmente). c) Si N es el perı́odo de x e(n), solo N coeficientes X(k) distintos es necesario calcular. d) El contenido temporal de x e(n) es discreto e infinito. 2. La DFT en cambio: a) La DFT está definida solo para secuencias x(n) de duración finita (aperiódicas): <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DFS –7– 1) Ecuación de análisis: X(k) = N −1 X x(n)WNkn, 0≤k ≤N −1 (5) n=0 2) Ecuación de sı́ntesis: N −1 1 X X(k)WN−kn, x(n) = N 0≤n≤N −1 (6) k=0 b) Tanto el contenido temporal como frecuencial de las secuencias se pueden manejar computacionalmente. 3. Comparación resumida: <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DFS –8– Cuadro 1: Relación entre la DFS y la DFT DFS e X(k) = NP −1 n=0 x e(n)WNkn 0≤k ≤N −1 x e(n) = 1 N NP −1 k=0 −kn e X(k)W N −∞ ≤ n ≤ ∞ DFT X(k) = NP −1 n=0 x(n)WNkn 0≤k ≤N −1 x(n) = 1 N NP −1 k=0 X(k)WN−kn 0≤n≤N −1 <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DFS –9– 4. Del cuadro (1) observamos que si expandimos la secuencia aperiódica x(n) de N muestras, en una secuencia periódica de perı́odo N : x e(n) = ∞ X x(n − rN ) (7) r=−∞ o equivalentemente: x e(n) = x(nmodN ), −∞ ≤ n ≤ ∞ (8) entonces se cumple que: x(n) = x e(n), n ∈ [0, N − 1]; 0, n∈ / [0, N − 1]. (9) 5. Y la DFT de x(n) coincide con la DFS de x e(n). <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DTFT –10– Relación entre la DFT y la DTFT 1. Recordemos algunas propiedades de la DTFT: a) La DTFT está definida para secuencias absolutamente sumables. b) Ecuación de análisis: ∞ X X(ω) = x(n)e−ωn (10) X(ω)eωn dω (11) n=−∞ c) Ecuación de sı́ntesis: 1 x(n) = 2π Z π −π <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DTFT –11– d) De la ecuación de análisis (10) vemos que el contenido temporal de x(n), aun cuando es discreto, se extiende, en general, infinitamente. e) De la ecuación de sı́ntesis (11) vemos que el contenido frecuencial de X(ω), aún cuando está confinado a un dominio finito, es (continuo) infinito. 2. Para secuencias x(n) de duración finita N , la suma de la ecuación de análisis (10) se restringe a N términos: n0 +(N −1) X(ω) = X x(n)e−ωn (12) n=n0 y si x(n) es causal: X(ω) = N −1 X x(n)e−ωn (13) n=0 <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DTFT –12– 3. El contenido temporal de las secuencia x(n) de duración finita es manejable computacionalmente. 4. El espectro X(ω) de x(n) sigue siendo continuo (infinito) y por lo tanto no es ((manejable computacionalmente)). 5. Para ((manejar)) numéricamente el espectro de x(n), podemos tomar algunas muestras de X(ω): {X(ωk )}, con ωk = 2π M k y k ∈ {0, 1, 2, . . . , M − 1}. 6. Cabe preguntarse: ¿Cuál es el número M mı́nimo de muestras necesarios para reconstruir X(ω)? 7. ¡¡¡ El número mı́nimo de muestras es N !!!. En efecto, dada la secuencia <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DTFT –13– de N muestras {X(ωk )}, donde: X(ωk ) = N −1 X x(n)e−ωk n = n=0 N −1 X 2π x(n)e− N kn (14) n=0 0≤k ≤N −1 X(ω) se puede reconstruir a partir de {X(ωk )} mediante la fórmula de interpolación [1]: X(ω) = N −1 X k=0 donde 2π X(ωk )Φ ω − k N (15) sin ωN 2 −ω ( N 2−1 ) ω e N sin 2 Φ(ω) = <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DTFT –14– 8. Ahora procedamos a poner la ecuación (14) al lado de la ecuación de la DFT de la secuencia finita x(n) (5): Cuadro 2: Comparación entre la DTFT y la DFT. N muestras de DTFT[x(n)] X(ωk ) = NP −1 − 2π N kn x(n)e n=0 0≤k ≤N −1 DFT[x(n)] X(k) = NP −1 n=0 x(n)WNkn 0≤k ≤N −1 <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación DFT-DTFT –15– 9. Tomando en cuenta que WN = exp − 2π N concluimos que: X(k) = X(ω)|ω= 2π k (16) N 0≤k ≤N −1 10. X(k), la transformada discreta de Fourier (DFT) de x(n), es la versión discreta (muestreada) de X(ω), la transformada de tiempo discreto de Fourier (DTFT) de x(n). <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya 0 padding –16– Zero-padding 1. A partir de la ecuación (16) inferimos que la resolución en frecuencia de la versión muestreada de la DTFT se puede mejorar arbitrariamente hasta 2π M , con M tan grande cuanta memoria tengamos disponible, aumentando el número de muestras de la DTFT en el intervalo [−π, π] de N a M . 2. Y que esto a su vez se consigue aumentando hasta M el tamaño de la secuencia x(n) mediante una operación que se conoce como zeropadding, la cual consiste en rellenar con ceros la secuencia, a partir de su último valor, hasta alcanzar el tamaño deseado. Respecto al Zero-padding cabe mencionar: a) El zero-padding permite aumentar la densidad espectral de X(ωk ). <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya 0 padding –17– b) El zero-padding no altera la realidad matemática de la secuencia x(n), y por lo tanto tampoco su espectro. c) Sin embargo, si x(n) se ha obtenido muestreando una señal analógica xa(t), de duración finita, enventanada, el zero-padding aún permitirá una mayor resolución espectral de X(ωk ), pero, en general, no de Xa(Ωk ). d) La secuencia que se obtiene con el zero-padding ya no representa las muestras de xa(t) en la ventana, porque los ceros que se añaden artificialmente no se corresponden con el comportamiento de xa(t) en la ventana ( a menos, claro está, de una providencial coincidencia). <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya 0 padding –18– Ejercicio: relación entre xa(t), su espectro, la DFT y el zero-padding Dada la señal xa(t) = cos ω1t + cos ω2t 1. Enventanar xa(t) con una ventana rectangular de duración T segundos. 2. Tomar muestras de la porción de xa(t) enventanada a razón de ωs > 2 máx{ω1, ω2} y construir la secuencia x(n). 3. Calcular la DFT de x(n) para un valor pequeño de T . 4. Aumentar la densidad espectral de X(k) usando zero-padding. <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya 0 padding –19– 5. Calcular la DFT de x(n) para un valor grande de T , por ejemplo: T > 1/∆f , siendo 2π∆f la resolución en frecuencia deseada en Ω. 6. Comentar y concluir. <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Propiedades de la DFT –20– Propiedades de la DFT 1. Linealidad: DFT[ax1(n) + bx2(n)] = aDFT[x1(n)] + bDFT[x2(n)] si N1 6= N2, para la aplicación de esta propiedad tomar N = máx(N1, N1), y calcular las DFTs con N muestras completando con ceros donde sea necesario. 2. Rotación circular: a) La rotación circular de una secuencia se denota por x((−n))N y se <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Propiedades de la DFT –21– define como: x((−n))N = x(0), n = 0; x(N − n), 1 ≤ n ≤ N − 1. b) ((Envolver (enrollar) la secuencia x(n) circularmente en sentido antihorario haciendo coincidir el 0 con N y desenvolver (desenrollar) en sentido horario)). c) En MATLAB: x=x(mod(-n,N)+1). d) La DFT de una secuencia rotada circularmente se obtiene rotando circularmente la DFT de la secuencia sin rotar: DFT [x((−n))N ] = X((−k))N = X(0), k = 0; X(N − k), 1 ≤ k ≤ N − 1. 3. Conjugación, la DFT de una secuencia conjugada se obtiene conjugando <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Propiedades de la DFT –22– la DFT de la secuencia rotada circularmente: DFT[x∗(n)] = X ∗((−k))N 4. Simetrı́as de las secuencias reales: si x(n) es una secuencia real, entonces x(n) = x∗(n) y usando la propiedad de conjugación anterior: X(k) = X ∗((−k))N de lo cual se desprenden las secuencias: a) b) c) d) par circular <[X(k)] = <[X((−k))N ]. impar circular =[X(k)] = −=[X((−k))N ]. par circular |X(k)| = |X((−k))N |. impar circular ∠X(k) = −∠X((−k))N . <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Propiedades de la DFT –23– 5. Desplazamiento circular de una secuencia a) El desplazamiento circular de m muestras de una secuencia se logra envolviendo (enrollar) la secuencia x(n) circularmente en sentido antihorario, haciendo coincidir el 0 con N , rotando las muestras sobre el circulo m veces, en sentido horario si m < 0 y en sentido antihorario si m > 0, y desenvolviendo (desenrollar) en el mismo sentido antihorario. b) El desplazamiento circular de m muestras de x(n) se denota por x((n − m))N . c) La DFT de x((n − m))N vale: DFT[x((n − m))N ] = WNkmX(k) 6. Desplazamiento circular en el dominio de la frecuencia, es una <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Propiedades de la DFT –24– propiedad similar al desplazamiento temporal: DFT[WN−`nx(n)] = X((k − `))N 7. Convolución circular de N muestras a) La convolución circular de N muestras se denota por x1(n) N x2 (n) y se define como: x1(n) N x2 (n) = N1 X x1(m)x2((n − m))N , 0≤n≤N −1 m=0 b) La DFT de la convolución circular de dos secuencias es igual al producto de las DFT de las secuencias: DFT [x1(n) N x2 (n)] = X1 (k)X2 (k) <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Propiedades de la DFT –25– 8. Multiplicación, esta propiedad es similar a la propiedad de convolución circular: 1 DFT[x1(n)x2(n)] = X1(k) N X2 (k) N 9. Relación de Parseval, relaciona la energı́a de la señal en ambos dominios: N −1 N −1 X X 1 Ex = |X(k)|2 |x(n)|2 = N n=0 k=0 <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación x1 (n) ∗ x2 (n) ⇔ x1 (n) N x2 (n) –26– Cálculo de la convolución lineal a partir de la convolución circular 1. Sean x1(n) y x2(n) dos secuencias de duración finita, y sean N1 y N2 los tamaños respectivos de tales secuencias. 2. A partir de la definición de convolución circular observamos que x1(n) N x2 (n) es, en general, una versión ((solapada)) (aliased) de x1(n) ∗ x2(n). 3. Si ponemos N = N1 + N2 − 1, y completamos con ceros las secuencias x1(n) y x2(n) hasta que cada una alcance un tamaño de N muestras, entonces [1]: x1(n) ∗ x2(n) = x1(n) N x2 (n). <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya Relación x1 (n) ∗ x2 (n) ⇔ x1 (n) N x2 (n) –27– 4. ¿Cómo podrı́amos calcular la convolución circular/lineal de dos secuencias a partir de sus DFTs? <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya FFT –28– Comentarios acerca de la FFT 1. La DFT implementada como ha sido en MATLAB, es ineficiente, porque el número de operaciones requeridas para su computo es del orden O(N 2). 2. En 1965 Cooley y Tukey [2] divulgaron el primer algoritmo para el cálculo eficiente de la DFT. 3. Luego se han desarrollado varios (DIT-FFT, DIF-FFT, por ejemplo), todos los cuales se engloban bajo un mismo acrónimo: FFT de fast Fourier transform. 4. La FFT es un algoritmo que requiere un número de operaciones del orden O(N lg N ). <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya FFT –29– 100 90 80 70 O(N2) 60 50 40 30 20 O(N logN) 10 0 1 2 3 4 5 6 7 8 9 10 N <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya FFT –30– Referencias [1] Vinay K. Ingle and John G. Proakis. Digital Signal Processing using MATLAB. BookWare Companion Series. Brooks/Cole Thomson Learning, 2000. [2] J. W. Cooley and J. W. Tukey. Mathematical computations. (19):297– 301, April 1965. [3] Jhon G. Proakis and Dimitris G. Manolakis. Digital Signal Processing, Principles,Algorithms, and Application. Prentice Hall, third edition, 1996. <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [ A. Zozaya FFT –31– [4] Gordon E. Carlson. Signal and Linear System Analysis with MATLAB. BookWare Companion Series. John Wiley & Sons, Inc., 1998. [5] Julius O. Smith. Introduction to Digital Filters. ccrma.stanford.edu/˜jos/filters/, February 11, 2002. http://www- [6] Thanos Antoulas and John Slavinsky. Partial Fraction Expansion. http://cnx.rice.edu/content/, Nov 24, 2003. <=] [N] [C] [J] [I] [H] [Abrir] [⊗] [