1. Procesamiento Digital de Señales
(TC61)
Laboratorio: 5
La Transformada Discreta de Fourier (DFT) y
la Transformada Rápida de Fourier (FFT)
Ing. José C. Benítez P.
2. Índice
La Convolución, la Transformada
Discreta de Fourier (DFT) y la
Transformada Rápida de Fourier (FFT)
Objetivo
La DFT y la FFT
DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 2
3. Objetivo
Comprender la DTF.
Calculo de la DFT mediante
la FFT.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 3
4. La transformada de Fourier y la FFT
Una señal periódica puede representarse como
suma de ondas sinusoidales.
Las que nos interesarán especialmente serán las
que tienen unas frecuencias determinadas, y en
eso se basa el análisis de Fourier.
Las frecuencias elegidas son; la frecuencia que
caracteriza la señal que queremos analizar, y sus
múltiplos; el doble, el triple…: f, 2f, 3f, 4f, 5f…
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 4
5. La transformada de Fourier y la FFT
Y así, cualquier señal podrá descomponerse en una suma
como la siguiente:
Esta forma de descomponer una señal en el dominio
de la frecuencia se llama la Transformación de Fourier.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 5
6. La transformada de Fourier y la FFT
La ventaja de elegir estas funciones, que se llamarán armónicos,
es que analizar una señal cualquiera para ver sus componentes
con esas frecuencias será una tarea sencilla.
La formulación matemática para señales discretas se ha
desarrollado en la clase teórica.
Veremos la capacidad de Matlab para obtener las componentes
no ya de una señal continua, sino de la señal discreta que la
representa en forma de muestreo.
Esto se llamará la Transformada Discreta de Fourier (DFT), y hay
muchas formas de calcularla. La más eficiente es la
Transformada Rápida de Fourier (FFT).
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 6
7. La transformada de Fourier y la FFT
Matlab tiene implementada una función para calcular una FFT:
>>fft(x)
En donde x es nuestra señal discreta (secuencia discreta de
datos).
El resultado numérico de la transformación son números
complejos, que tendrán un módulo –que será la amplitud - y un
ángulo – la fase - de cada una de las componentes.
Además estarán repetidos, dando una serie de datos simétrica.
Nos interesa sólo la mitad. Y además estarán multiplicados por
N/2, siendo N el número de datos de nuestra serie. Si
recuperaremos la última señal que generamos.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 7
8. La transformada de Fourier y la FFT
Ejemplo:
>>t=[0:0.01:1];
>>x1=5*sin(4*pi*t);
>>x2=2*sin(8*pi*t+1);
>>x=x1+x2;
>>plot(t,x)
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 8
9. La transformada de Fourier y la FFT
Si nuestro espacio de tiempo
es 1 seg, nuestra frecuencia f
es 1/1seg = 1Hz. Si hacemos
ahora la fft, y nos quedamos
sólo con las amplitudes (con la
función abs) podemos escribir:
>>y=abs(fft(x));
Lo representaremos ahora con
un nuevo tipo de gráfico: un
gráfico de barras –bar graph-
con la función bar:
>>bar(y)
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 9
10. La transformada de Fourier y la FFT
Tal y como se dijo, tenemos los datos repetidos en un gráfico
simétrico, nos interesan sólo la mitad, y para ser más concretos,
los primeros, porque a partir de un determinado valor son muy
pequeños.
Podemos representar una parte del gráfico escribiendo
>>bar(y(1:20))
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 10
11. La transformada de Fourier y la FFT
Nuestro gráfico tiene dos
barras mucho mayores que las
anteriores, vamos a ver lo que
representa cada una.
Nuestras barras representan
las amplitudes de la serie:
La que hemos generado es:
x = x1 + x2 = 5*sin(4*pi*t)+2*sin(8*pi*t+1)
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 11
12. La transformada de Fourier y la FFT
La que hemos generado es:
x = x1 + x2 = 5*sin(4*pi*t)+2*sin(8*pi*t+1)
La primera barra representa A0, la
componente continua. Nuestra
señal no tenía.
La segunda barra representa la
amplitud A1, correspondiente
frecuencia fundamental f que
tampoco existía en la señal que nos
hemos generado.
Tampoco tenemos en A3.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 12
13. La transformada de Fourier y la FFT
En cambio si tenemos componentes con frecuencias 2f y 4f, y eso
es lo que nos muestra el gráfico.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 13
14. La transformada de Fourier y la FFT
Como hemos dicho, los valores de amplitudes en el gráfico están
multiplicados por N/2, siendo N el número elementos de la
secuencia (100 en este caso). Si queremos verlos sólo hay que
dividir por N/2.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 14
15. La transformada de Fourier y la FFT
>>t=[0:0.01:1];
>>x1=5*sin(4*pi*t);
>>x2=2*sin(8*pi*t+1);
>>x=x1+x2;
>>y=abs(fft(x))/50;
>>bar(y(1:20))
Los pequeños valores (aprox. cero) en otros armónicos se
deben a utilizar pocos puntos para muestrear la señal. El
resultado con 1000 puntos es el siguiente gráfico:
>> t=[0:.001:1];
>> x1=5*sin(4*pi*t);
>> x2=2*sin(8*pi*t+1);
>> x=x1+x2;
>> y=abs(fft(x))/500;
>> bar(y(1:20))
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 15
16. La transformada de Fourier y la FFT
El resultado con 100 puntos es
el siguiente gráfico:
El resultado con 1000 puntos
es el siguiente gráfico:
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 16
17. La transformada de Fourier y la FFT
Vamos a probar ahora con la misma señal pero con una
componente continua
>>t=[0:0.01:1];
>>x1=5*sin(4*pi*t);
>>x2=2*sin(8*pi*t+1);
>>x=3+x1+x2;
>> plot(t,x);
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 17
18. La transformada de Fourier y la FFT
>>y=abs(fft(x))/50;
>>bar(y(1:20))
Podemos ver a A0 en la barra
ahora.
Los valores de amplitud de la
componente continua están
multiplicados por N en lugar
de N/2. Por eso aparece con
valor 6.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 18
19. La transformada de Fourier y la FFT
Si ahora en lugar de una componente continua añadimos
el término de alta frecuencia que vimos que podía
representar ruido
>>t=[0:0.01:1];
>>x1=5*sin(4*pi*t);
>>x2=2*sin(8*pi*t+1);
>>x3=0.5*sin(50*pi*t+1);
>>x=x1+x2+x3;
>>plot(t,x)
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 19
20. La transformada de Fourier y la FFT
Y ahora vemos sus
componentes en la FFT
>>y=fft(x);
>>A=abs(y)/50;
>>bar(A)
En el gráfico de barras
podemos ver ahora la
componente de ruido.
Esa componente podrá ser
eliminada ahora.
La forma más directa es
borrarla en la variable y.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 20
21. La transformada de Fourier y la FFT
Para ello podemos
editarla dentro de
Matlab haciendo
doble click en y.
Entraremos en el
editor de tablas,
con un aspecto
similar a una hoja
de cálculo, y en él
podemos
borrar los
elementos que
representan el
ruido, el 26 y el 77.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 21
22. La transformada de Fourier y la FFT
La nueva fft será ahora
>>y=abs(y)/50;
>>bar(A);
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 22
23. La transformada de Fourier y la FFT
En un caso real para
“limpiar” mejor las
componentes de
ruido podríamos
eliminar también los
cercanos (24
al 28, y 75 al 79, se
deja como ejercicio).
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 23
24. La transformada de Fourier y la FFT
La nueva fft será ahora
>>y=abs(y)/50;
>>bar(A);
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 24
25. La transformada de Fourier y la FFT
Una vez eliminados podemos
invertir la transformación de
Fourier con el comando ifft.
El resultado, de nuevo es un
número complejo. Nos
interesa sólo su parte real
>>z=ifft(y);
>>plot(real(z))
¡Hemos filtrado la señal!
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 25
26. La transformada de Fourier y la FFT
Si el muestreo lo hubiésemos hecho con más puntos el
resultado sería mejor, pero el obtenido es suficientemente
bueno para la mayor parte de las necesidades.
>>t=[0:0.005:1];
>>x1=5*sin(4*pi*t);
>>x2=2*sin(8*pi*t+1);
>>x3=0.5*sin(50*pi*t+1);
>>x=x1+x2+x3;
>>plot(t,x)
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 26
27. La transformada de Fourier y la FFT
>>y=fft(x);
>>bar(abs(y))
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 27
28. La transformada de Fourier y la FFT
>>y(24:28)=[0,0,0,0,0];
>>y(175:179)=[0,0,0,0,0];
>>z=real(ifft(y));
>>plot(z);
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 28
29. La transformada de Fourier y la FFT
FTTs en más de una dimensión.
Haremos ahora una breve introducción a la
transformación de Fourier en dos dimensiones, que
no es más que una extensión de los mismos
conceptos.
Al igual que cualquier señal puede representarse
como suma de ondas sinusoidales, cualquier
superficie puede representarse como suma de ondas
sinusoidales en dos dimensiones.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 29
30. La transformada de Fourier y la FFT
Dibujaremos una superficie para ver >>t=[0:0.01:1];
de qué estamos hablando. >> x1=5*sin(2*pi*t);
>> x2=2*sin(8*pi*t+1);
>> z=x1'*x2;
>> surf(z)
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 30
31. La transformada de Fourier y la FFT
Y al igual que antes, si la >>y=fft2(z);
superficie está dada por un >>surf(abs(y))
tabla de datos, podrá ser
transformada, haciendo
ahora una FFT en dos
dimensiones.
Esta transformación dará
como resultado otra tabla
de amplitudes y fases de
ondas como la del dibujo,
también en 2D.
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 31
32. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 32
33. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 33
34. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 34
35. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 35
36. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 36
37. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 37
38. DFT
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 38
39. Ejercicios
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 39
40. Ejercicios
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 40
41. Ejercicios
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 41
42. Informe de Laboratorio
El informe de laboratorio se presentará con el desarrollo de
todos los ejercicios desarrollados y preguntas de esta
presentación.
El informe debe ser básicamente un documento gráfico en
lo posible y debe adjuntarse los códigos con los comentarios
solicitados en USB.
Lo mas importante de un informe de laboratorio son los
conclusiones, comentarios y observaciones.
Si han utilizado fuentes adicionales, adjuntarlas sólo en USB.
EL Informe presentar impreso y en formato digital (en USB).
Procesamiento Digital de Señales - Prof. Ing. Jose C. Benitez P. 42
43. Presentación
Todas las fuentes, archivos utilizados y el Informe deben
presentarse en USB, dentro de una carpeta que lleve las
iniciales del curso, sus Apellidos, guion bajo y luego el numero
de laboratorio. Ejemplo:
PDS_BenitezPalacios_L5
Si adjunta fuentes adicionales, debe conservar el nombre
original y agregar _tema.
Revisar permanentemente el blog del Curso:
http://utppds.blogspot.com.
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. 43
44. Agradecimiento
Procesamiento Digital de Selñales - Prof. Ing. Jose C. Benitez P. 44