Académique Documents
Professionnel Documents
Culture Documents
e
= e dt e ) t ( f ) ( F
t j
N n 1 para , e ) t ( f ) n ( F
N
1 k
) 1 k ( j
k
N
n 2
s s =
=
t
La Transformada Rpida de Fourier
La Transformada Discreta de Fourier (DFT)
requiere el clculo de N funciones exponenciales
para obtener F(n), lo cual resulta un esfuerzo de
clculo enorme para N grande.
Se han desarrollado mtodos que permiten
ahorrar clculos y evaluar de manera rpida la
Transformada discreta, a estos mtodos se les
llama
Transformada Rpida de Fourier (FFT)
FFT
fft
Decimacion en el tiempo
La idea bsica es hacer mas fcil el calculo de la DFT,
que se puede hacer de dos maneras decimando ( es
decir tomando menos muestras) o en frecuencia
(tomando distinta frecuencia para hacer los clculos,
aunque no es tan simple como eso hay que seguir
ciertas reglas), existen una serie de algoritmos que te
permiten calcular de una manera mas rpida esta
transformada, en conjunto todos estos algoritmos son
llamados FFT.
Algoritmo FFT de decimacion en el
tiempo
La eficiencia de este algoritmo radica en la decomposicion de la DFT en
DFTS mas pequeas, de menor numero de terminos. Este proceso se
puede hacer gracias a la simetria y periodicidad de la exponencial
compleja
Como primer paso, la secuencia original de datos muestreados en el tiempo
x(n) se debe dividir en sub secuencias ms pequeas. Para ilustrar sto, se
considera un nmero total de muestras N. El nmero de muestras N debe ser
potencia de 2, as: N=2
2
veces, por lo que tras realizar la descomposicin
tantas veces como sea posible, el numero de
multiplicaciones y sumas es igual a Nv=
2
Computo tipo mariposa
El nmero de clculos necesarios se puede reducir an ms
explotando la simetra y la periodicidad de los coeficientes
Como: el factor
+/2
= -
Con esto solo se requiere una multiplicacion compleja en vez de dos.
Sustituyendo las mariposas de la figura 12.8(a) por el diagrama de la figura
12.8(b), nos queda el siguiente esquema, en donde el nmero de
multiplicaciones se reduce en un factor de 2.
Comando FFT de matlab
Matlab provee una funcin o comando fft que
permite calcular la TFD de un vector x.
invocando con la sentencia X=fft(x,N1) calcula
la TDF de N puntos de X, agregando ceros a
Ceros en caso de ser necesario. Si se omite el
argumento N el tamao de la TDF es el largo
del vector . si x es una matriz, entonces fft( x,
N) calcula la TDF de N puntos de cada una de
las columnas de x.
Comando fft matlab
Esta funcin esta codificada en lenguaje
maquina para calcular una TDF de orden N, la
librera descompone el problema utilizando el
algoritmo de cooley-turkey si N es compuesto
(es decir, N=N1N2) primero calcula N1
transformadas de largo N2, y luego N2
transformadas de N1 puntos.
Comando fft
El tiempo de ejecucin del comando fft
depende del nmero de puntos de la
transformada. Es decir cuando N es potencia
de 2 es mas velo. La velocidad es comparable
cuando N tiene factores primos pequeos, y
es considerablemente mas lenta para
longitudes que son primas, o que tienen
factores primos grandes. La transformada
inversa se calcula usando la funcin ifft, que
tiene las mismas caractersticas que fft
Ejemplo en matlab
Aplicar el comando fft(x,N) a la funcin
cos(2*pi*n/10) observar como varia la funcion
al cambiar los valores de N
The abs function finds the magnitude of the
transform
Aplicar diferentes valores de N
n=[0:30];
x=cos(2*pi*n/10);
N1=64;
N2=128;
N3=256;
X1=abs(fft(x,N1));
X2=abs(fft(x,N2));
X3=abs(fft(x,N3));
F1=[0:N1-1]/N1;
F2=[0:N2-1]/N2;
F3=[0:N3-1]/N3;
subplot(3,1,1)
plot(F1,X1,'-x'),title('N=64'),axis([0 1 0 20])
subplot(3,1,2)
plot(F2,X2,'-x'),title('N=128'),axis([0 1 0 20])
subplot(3,1,3)
plot(F3,X3,'-x'),title('N=256'),axis([0 1 0 20])
Ejemplo para determinar la
frecuencia de 2 seales
t=0:1/1000:3;
y=sin(2*pi*5*t);
y1=sin(2*pi*25*t);
y2=y+y1;
plot(t,y2)
FFT=fft(y2,1024);
FFT=FFT.*conj(FFT)/1024;
f=1000*(0:256)/1024;
plot(f,FFT(1:257));
ejemplo
Ejemplos
Aplicaciones
Tratamiento de imagen (JPEG) y audio (MP3)
Reduccin de ruido en seales, como el ruido blanco
Anlisis en frecuencia de cualquier seal discreta
Anlisis de materiales y estadstica
Sntesis, mediante la transformada inversa IFFT
Medidores Digitales
La FFT ha hecho posible el desarrollo de equipo
electrnico digital con la capacidad de clculo de
espectros de frecuencia para seales del mundo
real, por ejemplo:
1) Osciloscopio digital Fuke 123 ($ 18,600.00 M.N.)
2) Osc. digital Tektronix THS720P ($3,796 dls)
3) Power Platform PP-4300
Medidores Digitales
El Fluke 123 scope meter
Medidores Digitales
Tektronix THS720P (osciloscopio digital)
Medidores Digitales
Analizador de potencia PP-4300
Es un equipo especializado en monitoreo de la
calidad de la energa: permite medicin de 4
seales simultneas (para sistemas trifsicos)
Obtener la FFT de una seal senoidal de 20 Hz sumada a una
seal tipo chirp con un desplazamiento desde 5 hasta 40 Hz en
un tiempo D.
RESPUESTA EN FRECUENCIA
Obtener la FFT de una seal exponencial modulada en amplitud con
una frecuencia portadora de 200 Hz. N es el nmero de puntos de
muestreo durante D segundos de la seal. Se requiere una frecuencia
de muestreo de por lo menos 400 Hz, N/D>400
MODULACIN EN AMPLITUD
La FFT y la Serie de Fourier
Podemos hacer uso de la FFT para calcular los
coeficientes c
n
y c
-n
de la Serie compleja de
Fourier como sigue:
Ejemplo: Sea f(t) el tren de pulsos de ancho p y
periodo T.
1
f(t)
t
. . . -T -T
/
2
0
T
/
2
T . . .
p
-p
/
2
p
/
2
La FFT y la Serie de Fourier
La versin muestreada f(k) de f(t) slo puede
tomar un nmero finito de puntos. Tomemos por
ejemplo N=32 puntos cuidando que cubran el
intervalo de 0 a T (con p=1, T=2):
0 1 2
0
0.5
1
1.5
32 muestras de f(t), de 0 a T
k
f
(
k
)
La FFT y la Serie de Fourier
Para obtener estas 32 muestras usando Matlab
se puede hacer lo siguiente:
k=0:31
f=[(k<8)|(k>23)]
Plot(k,f,o)
La FFT y la Serie de Fourier
Con los 32 puntos f(k) calculamos F(n) mediante
la FFT, por ejemplo, en Matlab:
F=fft(f)/N;
Con lo que obtenemos 32 valores complejos de
F(n). Estos valores son los coeficientes de la
serie compleja ordenados como sigue:
n 1 2 3 4 ... 16 17 18 19 ... 32
F(n) c
0
c
1
c
2
c
3
... c
15
c
-16
c
-15
c
-14
... c
-1
La FFT y la Serie de Fourier
Podemos graficar el espectro de amplitud
reordenando previamente F(n) como sigue
aux=F;
F(1:16)=aux(17:32);
F(17:32)=aux(1:16);
F(n) queda:
Y para graficar el espectro de amplitud:
stem(abs(F))
Obtenindose:
n 1 ... 13 14 15 16 17 18 19 ... 32
F(n) c
-16
...
c
-3
c
-2
c
-1
c
0
c
1
c
2
c
3
... c
15
La FFT y la Serie de Fourier
Si deseamos una escala horizontal en unidades
de frecuencia (rad/seg):
0 10 20 30
0
0.2
0.4
0.6
Para el tren de pulsos p=1,
T=2
n
|
F
(
n
)
|
Espectro de Amplitud |F(n)|
La FFT y la Serie de Fourier
w0=2*pi/T;
n=-16:15;
w=n*w0;
Stem(w,abs(F))
Obteniendo:
-50 0 50
0
0.2
0.4
0.6
para el tren de pulsos, p=1,T=2
w
|
F
(
w
)
|
Espectro de Amplitud |F(n)|
La FFT y la Serie de Fourier
Tambin podemos obtener los coeficientes de la
forma trigonomtrica, recordando que:
Podemos obtener
Para el ejemplo se obtiene: a
0
=0.5, a
n
=b
n
=0
(para n par), adems para n impar:
) jb a ( c ), jb a ( c
n n 2
1
n n n 2
1
n
+ = =
) c Im( 2 b ), c Re( 2 a , c a
n n n 0 0
= = =
n 1 3 5 7 9 11 13 15
a
n
0.6346 -0.2060 0.1169 -0.0762 0.0513 -0.0334 0.0190 -0.0062
b
n
-0.0625 0.0625
-
0.0625
0.0625 -0.0625 0.0625 -0.0625 0.0625
La FFT y la Serie de Fourier
Como el tren de pulsos es una funcin par, se
esperaba que b
n
=0; (el resultado obtenido es
errneo para b
n
, pero el error disminuye para N
grande):
0 10 20 30
-0.5
0
0.5
1
Coeficientes b
n
Coeficientes a
n
a
0
La FFT y la Serie de Fourier
Tarea: Usar el siguiente cdigo para generar 128
puntos de una funcin peridica con frecuencia
fundamental e
0
=120t (60 hertz) y dos armnicos
impares en el intervalo [0,T]:
N=128;
w0=120*pi;
T=1/60;
t=0:T/(N-1):T;
f=sin(w0*t)+0.2*sin(3*w0*t)+0.1*sin(11*w0*t);
Usando una funcin peridica diferente a la
subrayada:
a) Graficar la funcin.
b) Obtener y graficar el espectro de amplitud de la
seal usando la funcin FFT