UTP PYSA T8 Transformada Discreta de Fourier
-
Upload
jose-benitez -
Category
Documents
-
view
82 -
download
0
Transcript of UTP PYSA T8 Transformada Discreta de Fourier
Programación y Simulación Avanzada(L110)
Programación y Simulación Avanzada(L110)
Tema: 8
Ing. José C. Benítez P.
La Transformada Discreta de Fourier (DFT) yla Transformada Rápida de Fourier (FFT)
Índice
La Transformada Discreta de Fourier(DFT) y la Transformada Rápida deFourier (FFT)
Objetivo La DFT y la FFT DFT
Programación y Simulación Avanzada 2
La Transformada Discreta de Fourier(DFT) y la Transformada Rápida deFourier (FFT)
Objetivo La DFT y la FFT DFT
Objetivo
Comprender la DTF. Calculo de la DFT mediante
la FFT.
3Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Una señal periódica puede representarse comosuma de ondas sinusoidales.
Las que nos interesarán especialmente serán lasque tienen unas frecuencias determinadas, y eneso se basa el análisis de Fourier.
Las frecuencias elegidas son; la frecuencia quecaracteriza la señal que queremos analizar, y susmúltiplos; el doble, el triple…: f, 2f, 3f, 4f, 5f…
4
Una señal periódica puede representarse comosuma de ondas sinusoidales.
Las que nos interesarán especialmente serán lasque tienen unas frecuencias determinadas, y eneso se basa el análisis de Fourier.
Las frecuencias elegidas son; la frecuencia quecaracteriza la señal que queremos analizar, y susmúltiplos; el doble, el triple…: f, 2f, 3f, 4f, 5f…
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Y así, cualquier señal podrá descomponerse en una sumacomo la siguiente:
Esta forma de descomponer una señal en el dominiode la frecuencia se llama la Transformación de Fourier.
5
Esta forma de descomponer una señal en el dominiode la frecuencia se llama la Transformación de Fourier.
Programación y Simulación Avanzada
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 componentescon esas frecuencias será una tarea sencilla.
La formulación matemática para señales discretas se hadesarrollado en la clase teórica.
Veremos la capacidad de Matlab para obtener las componentesno ya de una señal continua, sino de la señal discreta que larepresenta en forma de muestreo.
Esto se llamará la Transformada Discreta de Fourier (DFT), y haymuchas formas de calcularla. La más eficiente es laTransformada Rápida de Fourier (FFT).
6
La ventaja de elegir estas funciones, que se llamarán armónicos,es que analizar una señal cualquiera para ver sus componentescon esas frecuencias será una tarea sencilla.
La formulación matemática para señales discretas se hadesarrollado en la clase teórica.
Veremos la capacidad de Matlab para obtener las componentesno ya de una señal continua, sino de la señal discreta que larepresenta en forma de muestreo.
Esto se llamará la Transformada Discreta de Fourier (DFT), y haymuchas formas de calcularla. La más eficiente es laTransformada Rápida de Fourier (FFT).
Programación y Simulación Avanzada
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 dedatos).
El resultado numérico de la transformación son númeroscomplejos, 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 porN/2, siendo N el número de datos de nuestra serie. Sirecuperaremos la última señal que generamos.
7
Matlab tiene implementada una función para calcular una FFT:>>fft(x)
En donde x es nuestra señal discreta (secuencia discreta dedatos).
El resultado numérico de la transformación son númeroscomplejos, 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 porN/2, siendo N el número de datos de nuestra serie. Sirecuperaremos la última señal que generamos.
Programación y Simulación Avanzada
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)
8
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)
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Si nuestro espacio de tiempoes 1 seg, nuestra frecuencia fes 1/1seg = 1Hz. Si hacemosahora la fft, y nos quedamossólo con las amplitudes (con lafunción abs) podemos escribir:>>y=abs(fft(x));Lo representaremos ahora conun nuevo tipo de gráfico: ungráfico de barras –bar graph-con la función bar:>>bar(y)
9
Si nuestro espacio de tiempoes 1 seg, nuestra frecuencia fes 1/1seg = 1Hz. Si hacemosahora la fft, y nos quedamossólo con las amplitudes (con lafunción abs) podemos escribir:>>y=abs(fft(x));Lo representaremos ahora conun nuevo tipo de gráfico: ungráfico de barras –bar graph-con la función bar:>>bar(y)
Programación y Simulación Avanzada
La transformada de Fourier y la FFTTal y como se dijo, tenemos los datos repetidos en un gráficosimétrico, nos interesan sólo la mitad, y para ser más concretos,los primeros, porque a partir de un determinado valor son muypequeños.Podemos representar una parte del gráfico escribiendo>>bar(y(1:20))
10Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Nuestro gráfico tiene dosbarras mucho mayores que lasanteriores, vamos a ver lo querepresenta cada una.
Nuestras barras representanlas amplitudes de la serie:
11
Nuestro gráfico tiene dosbarras mucho mayores que lasanteriores, vamos a ver lo querepresenta cada una.
Nuestras barras representanlas amplitudes de la serie:
La que hemos generado es:x = x1 + x2 = 5*sin(4*pi*t)+2*sin(8*pi*t+1)
Programación y Simulación Avanzada
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, lacomponente continua. Nuestraseñal no tenía.La segunda barra representa laamplitud A1, correspondientefrecuencia fundamental f quetampoco existía en la señal que noshemos generado.Tampoco tenemos en A3.
12
La que hemos generado es:x = x1 + x2 = 5*sin(4*pi*t)+2*sin(8*pi*t+1)
La primera barra representa A0, lacomponente continua. Nuestraseñal no tenía.La segunda barra representa laamplitud A1, correspondientefrecuencia fundamental f quetampoco existía en la señal que noshemos generado.Tampoco tenemos en A3.
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
En cambio si tenemos componentes con frecuencias 2f y 4f, y esoes lo que nos muestra el gráfico.
13Programación y Simulación Avanzada
La transformada de Fourier y la FFTComo hemos dicho, los valores de amplitudes en el gráfico estánmultiplicados por N/2, siendo N el número elementos de lasecuencia (100 en este caso). Si queremos verlos sólo hay quedividir por N/2.
14Programación y Simulación Avanzada
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 sedeben a utilizar pocos puntos para muestrear la señal. Elresultado 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))
15
>>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 sedeben a utilizar pocos puntos para muestrear la señal. Elresultado 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))
Programación y Simulación Avanzada
La transformada de Fourier y la FFTEl resultado con 100 puntos esel siguiente gráfico:
El resultado con 1000 puntoses el siguiente gráfico:
16Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Vamos a probar ahora con la misma señal pero con unacomponente 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);
17
Vamos a probar ahora con la misma señal pero con unacomponente 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);
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
>>y=abs(fft(x))/50;>>bar(y(1:20))Podemos ver a A0 en la barraahora.Los valores de amplitud de lacomponente continua estánmultiplicados por N en lugarde N/2. Por eso aparece convalor 6.
18
>>y=abs(fft(x))/50;>>bar(y(1:20))Podemos ver a A0 en la barraahora.Los valores de amplitud de lacomponente continua estánmultiplicados por N en lugarde N/2. Por eso aparece convalor 6.
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Si ahora en lugar de una componente continua añadimosel término de alta frecuencia que vimos que podíarepresentar 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)
19
Si ahora en lugar de una componente continua añadimosel término de alta frecuencia que vimos que podíarepresentar 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)
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Y ahora vemos suscomponentes en la FFT>>y=fft(x);>>A=abs(y)/50;>>bar(A)En el gráfico de barraspodemos ver ahora lacomponente de ruido.Esa componente podrá sereliminada ahora.La forma más directa esborrarla en la variable y.
20
Y ahora vemos suscomponentes en la FFT>>y=fft(x);>>A=abs(y)/50;>>bar(A)En el gráfico de barraspodemos ver ahora lacomponente de ruido.Esa componente podrá sereliminada ahora.La forma más directa esborrarla en la variable y.
Programación y Simulación Avanzada
La transformada de Fourier y la FFTPara ello podemoseditarla dentro deMatlab haciendodoble click en y.Entraremos en eleditor de tablas,con un aspectosimilar a una hojade cálculo, y en élpodemosborrar loselementos querepresentan elruido, el 26 y el 77.
21
Para ello podemoseditarla dentro deMatlab haciendodoble click en y.Entraremos en eleditor de tablas,con un aspectosimilar a una hojade cálculo, y en élpodemosborrar loselementos querepresentan elruido, el 26 y el 77.
Programación y Simulación Avanzada
La transformada de Fourier y la FFTLa nueva fft será ahora>>y=abs(y)/50;>>bar(A);
22Programación y Simulación Avanzada
La transformada de Fourier y la FFTEn un caso real para“limpiar” mejor lascomponentes deruido podríamoseliminar también loscercanos (24al 28, y 75 al 79, sedeja como ejercicio).
23
En un caso real para“limpiar” mejor lascomponentes deruido podríamoseliminar también loscercanos (24al 28, y 75 al 79, sedeja como ejercicio).
Programación y Simulación Avanzada
La transformada de Fourier y la FFTLa nueva fft será ahora>>y=abs(y)/50;>>bar(A);
24Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Una vez eliminados podemosinvertir la transformación deFourier con el comando ifft.El resultado, de nuevo es unnúmero complejo. Nosinteresa sólo su parte real>>z=ifft(y);>>plot(real(z))¡Hemos filtrado la señal!
25
Una vez eliminados podemosinvertir la transformación deFourier con el comando ifft.El resultado, de nuevo es unnúmero complejo. Nosinteresa sólo su parte real>>z=ifft(y);>>plot(real(z))¡Hemos filtrado la señal!
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
Si el muestreo lo hubiésemos hecho con más puntos elresultado sería mejor, pero el obtenido es suficientementebueno 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)
26
Si el muestreo lo hubiésemos hecho con más puntos elresultado sería mejor, pero el obtenido es suficientementebueno 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)
Programación y Simulación Avanzada
La transformada de Fourier y la FFT
>>y=fft(x);>>bar(abs(y))
27Programación y Simulación Avanzada
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);
28Programación y Simulación Avanzada
La transformada de Fourier y la FFT
FTTs en más de una dimensión.Haremos ahora una breve introducción a latransformación de Fourier en dos dimensiones, queno es más que una extensión de los mismosconceptos.Al igual que cualquier señal puede representarsecomo suma de ondas sinusoidales, cualquiersuperficie puede representarse como suma de ondassinusoidales en dos dimensiones.
29
FTTs en más de una dimensión.Haremos ahora una breve introducción a latransformación de Fourier en dos dimensiones, queno es más que una extensión de los mismosconceptos.Al igual que cualquier señal puede representarsecomo suma de ondas sinusoidales, cualquiersuperficie puede representarse como suma de ondassinusoidales en dos dimensiones.
Programación y Simulación Avanzada
La transformada de Fourier y la FFTDibujaremos una superficie para verde qué estamos hablando.
>>t=[0:0.01:1];>> x1=5*sin(2*pi*t);>> x2=2*sin(8*pi*t+1);>> z=x1'*x2;>> surf(z)
30Programación y Simulación Avanzada
La transformada de Fourier y la FFTY al igual que antes, si lasuperficie está dada por untabla de datos, podrá sertransformada, haciendoahora una FFT en dosdimensiones.Esta transformación darácomo resultado otra tablade amplitudes y fases deondas como la del dibujo,también en 2D.
>>y=fft2(z);>>surf(abs(y))
31
Y al igual que antes, si lasuperficie está dada por untabla de datos, podrá sertransformada, haciendoahora una FFT en dosdimensiones.Esta transformación darácomo resultado otra tablade amplitudes y fases deondas como la del dibujo,también en 2D.
Programación y Simulación Avanzada
Tarea
1. Generar una señal con componente en continua y cinco componentesfrecuenciales. Mostrar la señal en el dominio del tiempo y la frecuencia.
2. Generar un ruido de alta frecuencia. Mostrar la señal en el dominio deltiempo y la frecuencia.
3. Agregarle el ruido a la señal. Mostrar la señal compuesta en el dominiodel tiempo y la frecuencia.
4. Filtrar el ruido. Mostrar el resultado en el dominio del tiempo y lafrecuencia.
5. Escoger una señal unidimensional (1D) en formato wav sin comprimir.Mostrar la señal en el dominio del tiempo y la frecuencia.
6. Generar un ruido de alta frecuencia. Mostrar la señal en el dominio deltiempo y la frecuencia.
7. Agregarle el ruido a la señal. Mostrar la señal compuesta en el dominiodel tiempo y la frecuencia.
8. Filtrar el ruido. Mostrar el resultado en el dominio del tiempo y lafrecuencia.
9. Escoger una señal bidimensional (2D) en escala de grises en formatobmp. Mostrar la señal en el dominio del tiempo y la frecuencia.
32
1. Generar una señal con componente en continua y cinco componentesfrecuenciales. Mostrar la señal en el dominio del tiempo y la frecuencia.
2. Generar un ruido de alta frecuencia. Mostrar la señal en el dominio deltiempo y la frecuencia.
3. Agregarle el ruido a la señal. Mostrar la señal compuesta en el dominiodel tiempo y la frecuencia.
4. Filtrar el ruido. Mostrar el resultado en el dominio del tiempo y lafrecuencia.
5. Escoger una señal unidimensional (1D) en formato wav sin comprimir.Mostrar la señal en el dominio del tiempo y la frecuencia.
6. Generar un ruido de alta frecuencia. Mostrar la señal en el dominio deltiempo y la frecuencia.
7. Agregarle el ruido a la señal. Mostrar la señal compuesta en el dominiodel tiempo y la frecuencia.
8. Filtrar el ruido. Mostrar el resultado en el dominio del tiempo y lafrecuencia.
9. Escoger una señal bidimensional (2D) en escala de grises en formatobmp. Mostrar la señal en el dominio del tiempo y la frecuencia.
Programación y Simulación Avanzada
DFT
33Programación y Simulación Avanzada
DFT
34Programación y Simulación Avanzada
DFT
35Programación y Simulación Avanzada
DFT
36Programación y Simulación Avanzada
DFT
37Programación y Simulación Avanzada
DFT
38Programación y Simulación Avanzada
DFT
39Programación y Simulación Avanzada
Informe de Laboratorio
El informe de laboratorio se presentará con el desarrollo detodos los ejercicios desarrollados y preguntas de estapresentación.
El informe debe ser básicamente un documento gráfico enlo posible y debe adjuntarse los códigos con los comentariossolicitados en USB.
Lo mas importante de un informe de laboratorio son losconclusiones, comentarios y observaciones.
Si han utilizado fuentes adicionales, adjuntarlas sólo en USB. EL Informe presentar impreso y en formato digital (en USB).
40
El informe de laboratorio se presentará con el desarrollo detodos los ejercicios desarrollados y preguntas de estapresentación.
El informe debe ser básicamente un documento gráfico enlo posible y debe adjuntarse los códigos con los comentariossolicitados en USB.
Lo mas importante de un informe de laboratorio son losconclusiones, comentarios y observaciones.
Si han utilizado fuentes adicionales, adjuntarlas sólo en USB. EL Informe presentar impreso y en formato digital (en USB).
Programación y Simulación Avanzada
Presentación
Todas las fuentes, archivos utilizados y el Informe debenpresentarse en su carpeta personal del dropbox, dentro de unacarpeta que lleve las iniciales del curso, sus Apellidos, guionbajo y luego el número de laboratorio. Ejemplo:
PYSA_PaternoM_L8 Si adjunta fuentes adicionales, debe conservar el nombre
original y agregar _L8.
41
Todas las fuentes, archivos utilizados y el Informe debenpresentarse en su carpeta personal del dropbox, dentro de unacarpeta que lleve las iniciales del curso, sus Apellidos, guionbajo y luego el número de laboratorio. Ejemplo:
PYSA_PaternoM_L8 Si adjunta fuentes adicionales, debe conservar el nombre
original y agregar _L8.
Las Tareas que no cumplan las indicacionesno serán evaluados por el profesor.
Programación y Simulación Avanzada
Agradecimiento
Programación y Simulación Avanzada - Prof. Ing. José C. Benítez P. 42
Blog del Curso:http://utppysa.blogspot.com