Utp pds_s7y8_dft y fft

40
Procesamiento Digital de Señales (TC61) Facultad de Ingeniería Electrónica y Mecatrónica Sesión: 7 y 8 Ing. José C. Benítez P. DFT y FFT

Transcript of Utp pds_s7y8_dft y fft

Procesamiento Digital de Señales

(TC61)

Facultad de Ingeniería Electrónica y Mecatrónica

Sesión: 7 y 8

Ing. José C. Benítez P.

DFT y FFT

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 2

Sesión 7 y 8. FFT

� Números complejos: � Representación cartesiana: Operaciones básicas� Representación polar: Operaciones básicas

� Teorema de De Moivre� Transformada de Fourier� Twiddle

� Ejemplo de DFT� Periodicidad de la DFT� Simetría de la DFT� Inversa de la DFT� Respuesta en frecuencia de un sistema� Transformada rápida de Fourier (FFT)� Tipos básicos de secuencias� Mariposa de N puntos� Propiedades de una secuencia� Aplicaciones de la FFT

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 3

Representación cartesiana de complejos

� El conjunto de los números complejos (C) supone la conjunción de los números reales y de los números imaginarios.

� Cualquier número complejo x será un vector de dos componentes: una real, denominada parte real, Re(x), y otra imaginaria, parte imaginaria, Im(x):

x = Re(x) + j Im(x)

� Para representar un número complejo, es necesario hacerlo en un diagrama de Argand: diagrama bidimensional cuyos ejes de abscisas y ordenadas representan la parte real e imaginaria respectivamente.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 4

Operaciones básicas con complejos en notación cartesiana

� Igualdad:

a + jb = c + jd <=> a = c y b = d

� Adición:

(a + jb) + (c + jd) = (a + c) + j(b + d)

� Sustracción:

(a + jb) - (c + jd) = (a - c) + j(b - d)

� Producto:

(a + jb)(c + jd) = (ac - bd) + j(ad + bc)

� Cociente:

(a + jb) / (c + jd) = [(ac + bd) + j(bc - ad)] / (c2 - d2)

� Conjugación:

(a + jb)* = a - jb

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 5

Representación polar de complejos

�Complejo:

x = Re(x) + j Im(x)

�Equivalencias:

|x| = √(Re2(x) + Im2(x)) = A

fase(x) = arctan[Im(x) / Re(x)] = a

Re(x) = |x|cos fase(x)

Im(x) = |x|sen fase(x)

�Función exponencial compleja:

x = |x|ej fase(x) = Aeja

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 6

Operaciones básicas con complejos en notación polar

�Producto:

Aeja Bejb = ABej(a + b)

�Cociente:

Aeja / Bejb = (A / B)ej(a - b)

� Equivalencia trigonométrica:

Aeja = A(cos a + j sen a)

�Conjugación:

(Aeja)* = Ae-ja

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 7

Teorema de De Moivre

�En la exponenciación de complejos no pueden emplearse las reglas algebraicas. Hay que seguir el teorema de DeMoivre:

Zk => [A(cos a + j sen a)]k

=> (Aeja)k = Akejka

=> Ak(cos ka + j sen ka)

�Para Zk existe más de una solución por lo que hay que poner especial cuidado en la exponenciación de complejos.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 8

Transformada de Fourier

� Debe su nombre al matemático francés Jean Baptiste Joseph Fourier (1768-1830).

� Esta transformación consigue llevar una señal expresada en el dominio del tiempo al dominio de la frecuenciaexpresándola como la suma de muchas funciones exponenciales complejas.

� En función de su continuidad, existen dos transformadas de Fourier utilizadas en el PDS:

� Discrete Time Fourier Transform (DTFT)

� Discrete Fourier Transform (DFT)

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 9

Transformada de Fourier

� Transformación: llevar una señal expresada en el dominio del tiempo al dominio de la frecuencia expresándola como la suma de muchas funciones exponenciales complejas.

� Discrete Time Fourier Transform (DTFT):

Transforma una secuencia en el tiempo, a su equivalente frecuencial en forma de función compleja continua:

X(ω) = DTFT{x[n]} = Σn=-∞,∞ x[n]e-jωn

� Discrete Fourier Transform (DFT):

Transforma una secuencia en el tiempo, a su equivalente frecuencial en forma de función compleja discreta (es la que puede calcularse en un computador):

X[k] = DFT{x[n]} = Σn=0,N-1 x[n]e-j2πnk/N

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 10

Twiddle

� Considerando la ecuación de la DFT:

X[k] = DFT{x[n]} = Σn=0,N-1 x[n]e-j2πnk/N

� Teniendo en cuenta que N es la longitud de x[n], es muy común extraer el factor WN = e

-j2π/N, llamado twiddle, con lo que la ecuación de la DFT queda así:

X[k] = DFT{x[n]} = Σn=0,N-1 x[n]WNnk

= x[0]WN0k + x[1]WN

1k + … + x[N-1]WN(N-1)k

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 11

Ejemplo de DFT

� Ejemplo de DFT: Señal suma de

dos sinusoides de 1 Hz y 2 Hz

respectivamente (fs = 5 Hz)

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 12

Ejemplo de DFT

• Ejercicio. Visualizar la DFT de una señal discreta, que es calculada como un conjunto finito de frecuencias. Sea la señal (secuencia)

h[n] = δ [n] + 0.5 δ [n − 1] + 0.2 δ[n − 2]

>> h=[1 0.5 0.2]

>> stem(h)

Calculamos 128 valores de la DFT:

>> H=fft(h,128);

El vector H recoge los valores de la función H(ejw) en las siguientes frecuencias:

wk =2πk/128 , k = 0, · · · , 127

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 13

Ejemplo de DFT

Para visualizar la DFT hay que tener en cuenta que el vector H contiene valores complejos, por lo que tendremos que representar por separado su magnitud y su fase:>> stem(2*pi*(0:127)/128,abs(H));>> stem(2*pi*(0:127)/128,angle(H));

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 14

Periodicidad de la DFT

� Consiste en que la DFT, X[k], de una señal en tiempo discreto x[n], es periódica (su periodo es la longitud de x[n]: N)

� Sea x[n] una señal en tiempo discretode longitud N. Se cumple que:

X[k] = DFT{x[n]} => X[k] = X[k mod N]

� Lo que equivale a decir que:

X[k] = DFT{x[n]} => X[k] = X[k + aN], a εεεε Z

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 15

Simetría de la DFT

�Consiste en que la transformada discreta de Fourier, X[k], de una señal real en tiempo discreto, x[n], presenta simetría hermítica:

x[n] ∈ ℝ y X[k] = DFT{x[n]} => X[k] = X[-k]*

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 16

Inversa de la DFT

� La transformada discreta de Fourier (DFT), se calcula:

X[k] = DFT{x[n]} = Σn=0,N-1 x[n] e-j2πnk/N

X[k] = DFT{x[n]} = Σn=0,N-1 x[n] WNnk ; WN = e

-j2π/N

� La inversa de la transformada discreta de Fourier (InverseDiscrete Fourier Transform, IDFT) se calcula de manera muy similar a la transformada directa de acuerdo con la siguiente ecuación (N es la longitud de x[n]):

x[n] = IDFT{X[k]} = (1 / N) Σn=0,N-1 X[k] WN-nk

� Como se verá más adelante esta similitud entre las dos formas de la transformada (forma directa y forma inversa) nos permite calcular la inversa a partir de la directa y, por tanto, aprovechar cualquier algoritmo que calcule la transformada directa para obtener la forma inversa.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 17

Respuesta en frecuencia de un sistema

� El modelo de respuesta en frecuencia de un sistema describe su comportamiento en términos de su efecto en la amplitud y la fase de las componentes frecuenciales que lo atraviesan.

� Esta descripción se realiza mediante la función de respuesta en frecuencia que se calcula como la transformada de Fourier de la respuesta al impulso unitario del sistema:

H(ω) = DTFT{h[n]}

H[k] = DFT{h[n]}

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 18

Tipos básicos de secuencias

Cuadro resumen

H[k] = DFT{h[n]}

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 19

Transformada rápida de Fourier (FFT)

� La transformada rápida de Fourier (Fast Fourier Transform, FFT) fue descrita por James Cooley y John W. Tukey en 1965 y no es propiamente una transformada.

� Se trata en realidad de un algoritmo que permite calcular la DFT en tiempo logarítmico.

� Debería por tanto considerarse más bien como algoritmo FFT para hallar la DFT.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 20

Transformada rápida de Fourier (FFT)

�Si observamos la fórmula de la DFT:

X[k] = DFT{x[n]} = Σn=0,N-1 x[n]e-j2πnk/N

vemos que su aplicación directa es de orden: o(n2).

�El objetivo de la FFT es calcular la DFT en orden logarítmico: o(n log2 n).

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 21

Transformada rápida de Fourier (FFT)

Diagrama de flujo de una FFT de una señal de 4 elementos

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 22

Transformada rápida de Fourier (FFT)

Diagrama de flujo de una FFT de una señal de 8 elementos

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 23

Transformada rápida de Fourier (FFT)

Diagrama de flujo de una FFT de una señal de 16 elementos

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 24

Mariposa de N puntos

• Cómo puede observarse, el algoritmo FFT es recursivo.

• El caso base de cualquier procesamiento FFT es la mariposa.

• Una mariposa de N puntos es una función/circuito (según se trate de una implementación software o hardware) capaz de calcular la FFT de una secuencia de N elementos de manera directa (sin necesidad de recursión).

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 25

Propiedades de una secuencia

• El caso base más habitual es la mariposa de 2 puntos:

X[k] = DFT{x[n]} = Σn=0,N-1 x[n]e-j2πnk/N

Y[0] = x[0] + x[1]

Y[1] = x[0] - x[1]

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 26

Propiedades de una secuencia

The standard strategy to speed up an algorithm is to divide and conquer. We have to find some way to group the terms in the equation

V[k] = Σn=0..N-1 WNkn v[n]

Let's see what happens when we separate odd ns from even ns (from now on, let's assume that N is even):

V[k] = Σn even WNkn v[n] + Σn odd WN

kn v[n]

= Σr=0..N/2-1 WNk(2r) v[2r] + Σr=0..N/2-1 WN

k(2r+1) v[2r+1]

= Σr=0..N/2-1 WNk(2r) v[2r] + Σr=0..N/2-1 WN

k(2r) WNk v[2r+1]

= Σr=0..N/2-1 WNk(2r) v[2r] + WN

k Σr=0..N/2-1 WNk(2r) v[2r+1]

= (Σr=0..N/2-1 WN/2kr v[2r]) + WN

k (Σr=0..N/2-1 WN/2kr v[2r+1])

where we have used one crucial identity:

WNk(2r) = e-2πi*2kr/N = e-2πi*kr/(N/2) = WN/2

kr

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 27

Propiedades de una secuencia

Notice an interesting thing: the two sums are nothing else but N/2-point Fourier transforms of, respectively, the even subset and the odd subset of samples. Terms with k greater or equal N/2 can be reduced using another identity:

WN/2m+N/2 = WN/2

mWN/2N/2 = WN/2

m

which is true because Wmm = e-2πi = cos(-2π) + i sin(-2π)= 1.

If we start with N that is a power of 2, we can apply this subdivision recursively until we get down to 2-point transforms.

We can also go backwards, starting with the 2-point transform:

V[k] = W20*k v[0] + W2

1*k v[1], k=0,1

The two components are:

V[0] = W20 v[0] + W2

0 v[1] = v[0] + W20 v[1]

V[1] = W20 v[0] + W2

1 v[1] = v[0] + W21 v[1]

We can represent the two equations for the components of the 2-point transform graphically using the, so called, butterfly

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 28

Propiedades de una secuencia

This graph can be further

simplified using this identity:

WNs+N/2 = WN

s WNN/2

= -WNs

which is true because

WNN/2 = e-2πi(N/2)/N

= e-πi

= cos(-π) + isin(-π)

= -1

Here's the simplified butterfly:

Y[0] = x[0] + x[1]

Y[1] = x[0] - x[1]

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 29

Propiedades de una secuencia

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 30

Aplicaciones de la FFT

Tiene 3 aplicaciones fundamentales en DSP:

� Cálculo de la DFT en tiempo logarítmico.

� Cálculo de la IDFT en tiempo logarítmico.

� Interpolación de señales.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 31

Cálculo de la DFT mediante FFT

• Esta aplicación es obvia y consiste simplemente en aplicar el algoritmo FFT a la señal:

X[k] = DFT{x[n]} = FFT{x[n]}

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 32

Cálculo de la IDFT mediante FFT

• Para comprender la aplicación de la transformada rápida al cálculo de la inversa de la transformada discreta basta analizar la ecuación de esta última y comprobar cómo puede obtenerse a partir de la transformada discreta:

x[n] = IDFT{X[k]}

= (1 / N) (Σn=0,N-1 X[k]ej2πnk/N)**

= (1 / N) (Σn=0,N-1 X[k]*e-j2πnk/N)*

= (1 / N) DFT{X[k]*}*

= (1 / N) FFT{X[k]*}*

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 33

Interpolación mediante FFT

• Consiste en interpolar una secuencia mediante su paso al dominio frecuencial y posterior paso al dominio del tiempo.

• Esta técnica se basa en calcular la transformada discreta y rellenarla con ceros en su zona central. Al calcular ahora la inversa de la transformada se obtiene la secuencia original pero interpolada.

• Sin embargo, durante este cambio de dominio se produce un desajuste en la amplitud de las muestras de la secuencia debido a que la longitud de la secuencia original es menor que la longitud de la nueva secuencia. Este efecto puede compensarse de una manera muy sencilla tal como se verá a continuación.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 34

Interpolación mediante FFT

El proceso de interpolación puede realizarse a través de los siguientes pasos:

1. Sean v[n] la secuencia original, N su longitud y Mla cantidad de muestras deseada en la secuencia resultante. M > N.

2. Calculamos la transformada discreta de v[n]:

V[k] = DFT{v[n]}

3. Dividimos la secuencia V[k] en dos mitades:

V[k] = {V1[k]; V2[k]}

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 35

Interpolación mediante FFT

4. Creamos una nueva secuencia W[k] a partir de estas dos mitades insertando en su centro los ceros necesarios para que su longitud sea igual a M:

W[k] = {V1[k]; 0; 0; 0; ...; 0; 0; 0; V2[k]}

5. Calculamos la transformada inversa de W[k]:

w0[n] = IDFT{W[k]}

6. Corregimos el desajuste de amplitud:

w[n] = (M / N) w0[n]

7. Una vez terminado el proceso, la secuencia w[n] interpola a la secuencia v[n]

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 36

Interpolación mediante FFT

NOTA: Como se verá en el último capítulo, cuando se comente la transformada discreta en dos dimensiones, esta técnica de interpolación puede extrapolarse a datos bidimensionales con lo que se convierte también en una técnica de zoom para imágenes digitales.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 37

Ejemplo de interpolación

Ejemplo de interpolación (de 16 a 256 muestras)

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 38

Tarea 5

1. Realizar los mapas semántico y/o mapas conceptuales de

todo el contenido de la Diapositiva de la Sesión 9 y 10.- La Transformada Z.

2. Adjuntar fuentes que le han ayudado a consolidar la tarea.

Presentación:

• Impreso y en USB el desarrollo de la tarea.

• Los mapas semánticos se deben hacer en PowerPoint y los mapas

conceptuales en CMapTools.

• En USB adjuntar las fuentes (05 PDFs, 05 PPTs y 01 Video.).

• La fuente debe provenir de una universidad.

Presentación

39Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P.

� Todas las fuentes deben presentarse en formato digital

(USB), dentro de una carpeta que lleve las iniciales del curso,

sus Apellidos, guion bajo y luego el numero de la Tarea.

Ejemplo:

PDS_BenitezPalacios_T5

� La fuente debe conservar el nombre original y agregar

_tema.

Las Tareas que no cumplan las indicaciones

no serán recepcionados por el profesor.

Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 40

Sesión 7 y 8. DFT y FFT

Procesamiento Digital de Señales