Vous êtes sur la page 1sur 55

INSTITUTO POLITCNICO NACIONAL

Centro de Innovacin y Desarrollo


Tecnolgico en Computacin
La Transformada rpida de Fourier
Expositor: Jos Luis Oropeza Rodrguez

Mxico D. F., a 17 de agosto de 2006

OBJETIVO
Presentar al alumno la forma de obtencin de la Transformada
Discreta de Fourier de un conjunto de muestras mediante el
algoritmo de la Transformada Rpida de Fourier.

BOSQUEJO DE LA
PRESENTACIN
Introduccin
Antecedentes
Representacin
matemtica
Aplicaciones

frmula

Transformada Discreta de Fourier

x=[1 2 1 0]
x=
1 2
X=fft(x)

X=
4.0000

-0.0000 - 2.0000i

-0.0000 + 2.0000i

EL ALGORITMO DE LA FFT
Como:

Redefiniendo:

n
1

NT
N

N 1

m(kT )e

n
1 N 1
kn
F
m(kT )W
N k 0
NT
para W kn e 2 j / N

2nk
N

k 0

La expansin al hacer uso de la expresin anterior se convierte en:


N 1

X [ n] x[k ]W nk

para

0n4

k 0

N 1

X [0] x[k ]W 0 x[0]W 0 x[1]W 0 x[2]W 0 x[3]W 0


k 0

N 1

X [1] x[k ]W k x[0]W 0 x[1]W 1 x[2]W 2 x[3]W 3


k 0

N 1

x[2] x[k ]W 2 k x[0]W 0 x[1]W 2 x[2]W 4 x[3]W 6


k 0

N 1

x[3] x[k ]W 3k x[0]W 0 x[1]W 3 x[2]W 6 x[3]W 9


k 0

EL ALGORITMO DE LA FFT
La expresin anterior toma la forma matricial:

X [0]
X [1]


X [2]


X [3]
o bien

W 0 W 0 W 0 W 0 x[0]

0
1
2
3
x
[
1
]
W W W W

W 0 W 2 W 4 W 6 x[2]

0
3
6
9
W W W W x[3]

1
1 x[0]
X [0] 1 1
X [1] 1 W 1 W 2 W 3 x[1]

X [2] 1 W 2 W 4 W 6 x[2]

3
6
9
X [3] 1 W W W x[3]

EL ALGORITMO DE LA FFT
La expresin anterior se puede simplificar debido a que: Wnk=Wmod(nk,N), lo cual
se puede verificar con:

Considerando en este caso que N=8

EL ALGORITMO DE LA FFT
Por lo tanto la expresin se convierte en:

1
1 x[0]
X [0] 1 1
X [1] 1 W 1 W 2 W 3 x[1]

2
0
2
X [2] 1 W W W x[2]

3
2
1
X
[
3
]
1
W
W
W
x
[
3
]

La cual se puede descomponer en la forma:

X [0] 1 W 0
X [1]
2
1
W


X [2] 0 0


X [3] 0 0

0 0 1

0 0 0
1 W1 1
3
1 W 0

0 W 0 0 x[0]

0
1 0 W x[1]
0 W 2 0 x[2]

2
1 0 W x[3]

Que contiene el segundo y tercer rengln invertidos con relacin a la


matriz original.

EL ALGORITMO DE LA FFT
La matriz anterior puede ser descompuesta como el producto de 2 partes
separables, de tal forma que la expresin para la primera de ellas queda de la
forma:

X [0] 1 0 W 0 0 x[0] 1 W 0
X [1]

0
2
x
[
1
]
0
1
0
W
1
W


*
X [2] 1 0 W 2 0 x[2] 0 0



2
X [3] 0 1 0 W x[3] 0 0

0 0

0 0
1 W1
3
1 W

x1 (0) x(0) W 0 x( 2)

x1 (0) x(0) W 0 x(2)

x1 (1) x(1) W 0 x(3)

x1 (1) x(1) W 0 x(3)

x1 (2) x(0) W 2 x(2)

x1 (2) x(0) W 0 x(2)

x1 (3) x(1) W 2 x(3)

x1 (3) x(1) W 0 x(3)

EL ALGORITMO DE LA FFT
Con lo que se llega a la siguiente expresin:

X [0] 1 W 0
X [1]
2
1
W


X [2] 0 0


X [3] 0 0

0 0 x1 (0)

x
(
1
)
0 0 1
1 W 1 x1 (2)

3
x
(
3
)
1 W 1

X (0) x1 (0) W x1 (1)

X (0) x1 (0) W 0 x1 (1)

X (1) x1 (0) W 2 x1 (1)

X (1) x1 (0) W 0 x1 (1)

X (2) x1 (2) W 1 x1 (3)

X (2) x1 (2) W 1 x1 (3)

X (3) x1 ( 2) W 3 x1 (3)

X (3) x1 (2) W 1 x1 (3)

Generalizando el algoritmo se puede observar que el coste de clculo se reduce del


orden de O(Nlog2 N) frente al orden O(N2).

EJEMPLO DE LA FFT
Suponga la secuencia de entrada dada por el ejercicio antes analizado en esta
presentacin:

Se aplica el algoritmo de la FFT (Cooley-Tukey) mencionado anteriormente


para encontrar la DFT.
1
X [0]

X [1]

0
1
X [2]

X
[
3
]
0

0 W0
1 0
0 W2
1 0

W0
0

W 2

1 1 W 0
2
2
* 1 W
1 0 0

0 0 0

0 0

0 0
1 W1

1 W 3

x1 (0) x (0) W 0 x( 2)

x1 (0) x(0) W 0 x ( 2)

x1 (0) 1 W 0 (1) 1 1 2

x1 (1) x (1) W 0 x(3)

x1 (1) x(1) W 0 x (3)

x1 (1) 2 W 0 (0) 2 0 2

x1 (2) x (0) W 2 x( 2)

x1 ( 2) x(0) W 0 x ( 2)

x1 (2) 1 W 0 (1) 1 1 0

x1 (3) x (1) W 0 x(3)

x1 (3) 2 W 0 (0) 2 0 2

x1 (3) x (1) W 2 x (3)

EJEMPLO DE LA FFT
X [0] 1 W 0
X [1]
2
1
W


X [2] 0 0


X
[
3
]

0 0
X (0) x1 (0) W 0 x1 (1)

0 2

0 2
1 W 1 0

3
2
1 W
0
0

X (0) x1 (0) W 0 x1 (1)

X (1) x1 (0) W 2 x1 (1)

X (1) x1 (0) W 0 x1 (1)

X (2) x1 (2) W 1 x1 (3)

X (2) x1 (2) W 1 x1 (3)

X (3) x1 (2) W 3 x1 (3)

X (3) x1 ( 2) W 1 x1 (3)

X ( 0) 2 W ( 2) 2 2 4
0

X (1) 2 W 0 (2) 2 2 0
1
1
X (2) 0 W 1 (2) 2(e j 2 / 4) ) 2(cos( ) jsen( )) 2(0 j ) 2 j
2
2
1
1
X (3) 0 W 1 (2) 2(e j 2 / 4 ) 2(cos( ) jsen( )) 2(0 j ) 2 j
2
2

Aplicando bit
reversi
X(0)=4
X(1)=-2j
X(2)=0
X(3)=2j

Se puede observar que en el caso de la decimacin en el tiempo, la secuencia de


entrada debe ser reordenada mientras que la salida aparece en el orden correcto.
Para la decimacin en frecuencia, la secuencia est ordenada mientras que la
salida habr que reordenarla.
Se da la circunstancia que esa reordenacin es implemente invertir el ndice en
binario. Por ejemplo, en la misma posicin x[1[] aparece X[4], y 001 invertido es
100.

DECIMACIN EN TIEMPO
Otra forma de visualizar la descomposicin de la FFT es factorizar la expresin de
la DFT en muestras de entrada par e impar, tal que:
N 1

X (k ) x(n)WNnk

k 0,1,2,....., N

n 0

X (k )

par

( N / 2 ) 1
m 0

kn
N

n impar

x(2m)W

donde :

x(n)W

x(n)WNkn
2 mk
N

( N / 2 ) 1

x(2m 1)W

m 0

( 2 m 1) k
N

WN e 2 j / N

Considerando que f1 y f2 representen las componentes de la muestra de entrada


par e impar respectivamente; esto es, f1(m)=x(2m) y f2(m)=x(2m+1), m=0,1,..,
(N/2)-1, la suma anterior puede escribirse de la forma.

X (k )

( N / 2 ) 1

m 0

f1 (m)W

mk
N /2

k
N

( N / 2 ) 1

m 0

f 2 (m)WNmk/ 2

2n
n
W

W
N
N
/ 2, y cada una de los trminos de la sumatoria es reducido a
En donde
N/2 puntos de la DFT. Grficamente, el clculo se ha reducido a:

DECIMACIN EN TIEMPO
Tomando en consideracin el hecho
de que:

F1 (k )

F2 (k )

Son las DFTs de N/2 puntos de las


secuencias
f1(m)
y
f2(m),
respectivamente

La forma general que adoptan las ecuaciones anteriores es:

X (k )

F1 (k ) WNk F2 (k )

X (k N / 2) F1 (k ) WNk N / 2 F2 (k )
F1 (k ) WNk F2 (k )
donde
WNk N / 2 WNk , y WNm/(2k N / 2 ) WNmk/ 2
con k 0,1,....,

N
1
2

Ya que la salida de la DFT es


peridica,
X1(k)=X1(k+N/2)
y
X2(k)=X2(k+N/2).
La
ltima
ecuacin es comnmente llamada
la mariposa de la FFT de la
Decimacin en Tiempo.

DECIMACIN EN TIEMPO
Para ser consistentes con la notacin que anteriormente se utiliz, se tiene:

X (k )

F1 ( k ) WNk F2 ( k )

G1 (k ) F1 (k )

k 0,1,....., ( N / 2) 1

G2 ( k ) WNk F2 (k )

k 0,1,2,...., ( N / 2) 1

As la DFT X(k) se puede expresar como:

X (k )
X (k

G1 (k ) G2 (k )

k 0,1,...., ( N / 2) 1

N
) G1 (k ) G2 (k )
2

k 0,1,...., ( N / 2) 1

Este clculo se muestra en la siguiente figura:

DECIMACIN EN TIEMPO
x(N-2)

X(N/2-1)

DFT de
x(4)
x(2)
x(0)
x(3)
x(1)

G1(k)

F1(N/2-1)

F1(2)
F1(1)
F1(0)

N/2 puntos

F2(1)
F2(0)

X(N-1)
X(0)

Factores de
WNk
fase

DFT de
2 puntos

X(N/2+1)
X(N/2)

G2(k)

X(1)

DECIMACIN EN TIEMPO
Habiendo realizado el diezmado en tiempo una vez, se puede repetir el proceso
para cada una de las secuencias f1(n) y f2(n). Por lo tanto, f1(n) dar lugar a las dos
secuencias de N/4 puntos.

v11 (n) f1 (2n)


v12 (n) f1 (2n 1)

n 0,1,.....,

N
1
4

N
n 0,1,....., 1
4

y f2(n) dar lugar a:

v21 (n) f 2 (2n)


v22 (n) f 2 (2n 1)

n 0,1,.....,

N
1
4

N
n 0,1,....., 1
4

DECIMACIN EN TIEMPO
Calculando las DFTs de N/4 puntos obtendremos las DFTs de dos puntos F1(k) y
F2(k) a partir de las relaciones.

F1 ( k ) V11 (k ) W

k
N / 2 12

V (k )

N
F1 ( k ) V11 (k ) WNk / 2V12 (k )
4
F2 (k ) V21 (k ) WNk / 2V22 (k )
N
F2 (k ) V21 (k ) WNk / 2V22 (k )
4

N
k 0,1,......., 1
4
N
k 0,1,......., 1
4
N
k 0,1,......., 1
4
N
k 0,1,......., 1
4

EJEMPLO

x n x0 , x1 , x2 , x3

siendo :

( N / 2 ) 1

x (2n)W

X (k )

n 0

X (k N / 2)

( N / 2 ) 1

x (2n)W
e

n 0

X (k N / 2)

( N / 2 ) 1

x (2n)W
e

n 0

para

N 4,

adems

k 0,

2 nN / 2

WN

quedando al

( N / 2 ) 1

x (2n 1)W

2n k N / 2
N

2 nk
N

x (2n)W
e

( N / 2 ) 1

x (2n)W
e

2 nk
N

2 nk
N

X (k )

x (2n)W
n 0

kN / 2
N

2 nN / 2
N

2 nk
N

( N / 2 ) 1

x (2n 1)W

m 0

kN /2
N

x (2n 1)W
o

m 0

j 2 n

2 nk
N

f1 (k ) W f 2 ( k )
k
N

X (k N / 2) f1 (k ) WNk f 2 (k )

( N / 2 ) 1

x (2n 1)W
o

n 0

( N / 2 ) 1

x (2n 1)W
n 0

( N / 2 ) 1

x (2n 1)W
n 0

1/ 2

2 nk
N

WN2 nN / 2

e j 1

cos 2n jsen 2n 1
2 nk
N

2 nk
N

anteriores :

f 2 (k )

k
N

2n k N / 2
N

( N / 2 ) 1

WNN / 2 W 1/ 2 e j 2

WNk

reduciendo las exp resiones


f1 (k )

N
1 0,1
2

( N / 2 ) 1

n 0

( N / 2 ) 1

n 0

W n e j 2

n 0

X (k N / 2)

k
N

final

X (k )

2 nk
N

2 nk
N

para k 0

x(0)

f1(0)

X0

X (0) f1 (0) W40 f 2 (0)


X (2) f1 (0) W40 f 2 (0)
para k 1

x(2)

X (1) f1 (1) W41 f 2 (1)


X (3) f1 (1) W41 f 2 (1)
( N / 2 ) 1

x (2n)W
n0

f 2 (0)
f1 (1)
f 2 (1)
en la

x (2n 1)W
o

n0

( N / 2 ) 1

x (2n)W
n 0

2 nk
N

( N / 2 ) 1

x (2n 1)W
n 0

figura

mientras que

x(1)

x(0)W40 x(2)W40

2 nk
N

( N / 2 ) 1

2 nk
N

x(3)

f1 (0),

f 2 (1) son las


0
4

0
4

f1 (1) son salidas

salidas
0
4

f 2 (0) x(1)W40 x(3)W40 x(1)W40 x(3)W40


f 2 (1) x(1)W40 x(3)W42 x(1)W40 x(3)

x(1)W

X (0) x(0)W40 x(2)W40 W40 x(1)W40 x(3)W40


X (2) x(0)W40 x(2)W40 W40
para k 1

0
4

x(2) W x(1)W

x(3)W40

x(3)

X (1) x(0)W40 x(2) W41 x(1)W40 x(3)


X (3) x(0)W40

1
4

0
4

X2

W1 4

-1

f1 (1) x(0)W40 x(2)W42 x(0)W40 x(2)

para k 0

f2(1)

W04

x(1)W40 x(3)W42

se observa que
f 2 (0),

W0 4
-1

x(0)W40 x(2)W42
2 nk
N

f2(0)

x(1)W40 x(3)W40

f1 (0) x(0)W x(2)W x(0)W x(2)W


0
4

X1

-1

Sustituyendo
f 1 ( 0)

f1(1)

W04

de una mariposa

X3
-1

de la otra mariposa , analizando

salidas

DECIMACIN EN TIEMPO
W80
-1

W80
-1

W82

0
8

-1

-1

W80
-1
W80

W80

-1

W82
-1

-1

W80

-1

W81

-1

W82

-1

W83

-1

MARIPOSA BSICA DEL ALGORITMO DE


LA FFT DE DIEZMADO EN EL TIEMPO
Obsrvese que el clculo bsico que se realiza en cada etapa, como se muestra
en la figura de la diapositiva anterior, consiste en tomar dos nmeros complejos,
esto es (a,b), multiplicar por
WNr , y restar el producto obtenido de a para
obtener los dos nuevos nmeros complejos (A,B). Este clculo bsico, que se
ilustra en la siguiente figura

A=a+WNb

WN
-1

B=a-WNb

DECIMACIN EN FRECUENCIA

ALGORITMO DE LA FFT POR


DECIMACIN EN FRECUENCIA CON
RADIX-2
Considere una secuencia de entrada en el dominio del tiempo x(n) que
se puede separar en dos mitades
x(0), x(1),......, x( N2 1)
y

N N
1 ,......., x N 1

, x
2 2

Tomando la DFT de cada conjunto de secuencia en las expresiones


anteriores, queda
X (k )

( N / 2 ) 1

x(n)W

nk

n 0

Considerando

N 1

x(n)W

nk

n N / 2

n n N / 2 en la segunda suma de 6.8; X(k) se convierte en


X (k )

( N / 2 ) 1

x(n)W

nk

n 0

( N / 2 ) 1

n 0

x(n

N
)W nk
2

kN / 2

En donde W
se toma fuera de la seguna sumatoria debido a que no es
una funcin de n. Utilizando

W kN / 2 e jk e j

cos jsen 1
k

DECIMACIN EN FRECUENCIA
X (k )

( N / 2 ) 1

n 0

N nk
k

x
(
n
)

1
x
n

Debido a que 1 para cada k par y -1 para k impar, la ecuacin anterior puede ser separada
para k par e impar, o bien
k

1. Para k impar:

X (k )

( N / 2 ) 1

N nk

x ( n ) x n 2 W

n 0

2. Para k par:

X (k )

( N / 2 ) 1

n 0

N nk

x ( n ) x n 2 W

Sustituyendo k=2k para k par, y k=2k+1 para k impar, las expresiones anteriores
pueden escribirse de la forma k=0,1,..,(N/2)-1 como
X ( 2k )

( N / 2 ) 1

n0

X (2k 1)

N 2 nk

x
(
n
)

x
n

( N / 2 ) 1

n 0

N n 2 nk

x
(
n
)

x
n

W W

Debido a que la constante twiddle W es una funcin de longitud N, sta puede ser
representada como W . Entonces W se puede escribir comoW . Considere
N

2
N

N /2

a(n) x(n) x(n N / 2)


b ( n ) x ( n ) x ( n N / 2)
Las ecuaciones anteriores pueden ser escritas de forma ms clara como DFTs de
(N/2) puntos, o bien

X (2k )

N / 2 1

nk
a
(
n
)
W

N /2
n 0

X (2k 1)

( N / 2 ) 1

n
nk
b
(
n
)
W
W

N
N /2
n 0

La siguiente figura muestra la descomposicin de una DFT de N puntos en dos DFTs


de (N/2)-puntos para N=8. Como un resultado del proceso de descomposicin, las Xs
en la figura son pares en la mitad superior y los impares en la mitad ms baja. El
proceso de descomposicin se puede repetir de tal forma que cada (N/2)-puntos ser
descompuesto en dos DFTs de (N/4) puntos, como se ilustra en la figura de la
derecha, tambin para N=8.

Considere que la entrada x(n) representa una forma de onda


rectangular, o x(0)=x(1)=x(2)=x(3)=1 y x(4)=x(5)=x(6)=x(7)=0. Los
ocho puntos del diagrama de flujo de la figura anterior se pueden
utilizar para encontrar las secuencias de salida X(k), k=0,1,..,7. Con
N=8, cuatro constantes gemelos (twiddle) a ser calculadas, o

W 0 1
W 1 e j 2 / 8 cos( / 4) j sin( / 4) 0.7071 j 0.7071
W 2 e j 4 / 8 j
W 3 e j 6 / 8 0.7071 j 0.7071
La salida de secuencia intermedia se puede encontrar despus de cada
etapa.

Etapa 1
x(0) x(4) 1 x' 0
x(1) x(5) 1 x' 1
x(2) x(6) 1 x' 2
x(3) x(7) 1 x' 3

x(0) x(4)W 0 1 x' (4)


x(1) x(5)W 1 0.7071 j 0.7071 x' (5)
x(2) x(6)W 2 j x' (6)
x(3) x(7)W 3 0.7071 j 0.7071 x' (7)
En donde x(0), x(1),..,x(7) representa la secuencia de la salida
intermedia despus de la primera iteracin, lo cual se convierte en la
entrada a la segunda etapa.

Etapa
2
x' (0) x' (2) 2 x' ' 0
x' (1) x' (3) 2 x' ' 1

x' (0) x' (2)W 0 0 x' ' 2


x' (1) x' (3)W 2 0 x' ' 3
x' (4) x' (6) 1 j x' ' 4

x' (5) x' (7) (0.7071 0.7071) (0.7071 j 0.7071) j1.41 x' ' 5

x' (4) x' (6)W 0 1 j x' ' 6


x' (5) x' (7)W 2 j1.41 x' ' 7

El resultado intermedio, la secuencia de salida de la segunda etapa


x(0), x(1),..,x(7) se convierte en la secuencia de entrada de la
tercera etapa.

Etapa

X (0) x' ' (0) x' ' (1) 4


X (4) x' ' (0) x' ' (1) 0
X (2) x' ' (2) x' ' (3) 0
X (6) x' ' (2) x' ' (3) 0

X (1) x' ' (4) x' ' (5) 1 j j1.41 1 j 2.41


X (5) x' ' (4) x' ' (5) 1 j 0.41

X (3) x' ' (6) x' ' (7) 1 j j1.41 1 j 0.41


X (7) x' ' (6) x' ' (7) 1 j 2.41
Ahora se utiliza la notacin de Xs para representar la secuencia de salida
final. Los valores de X(0), X(1), , X(7) froman la secuencia de salida
invertida. Estos resultados pueden ser verificados con MATLAB, la secuencia
de salida se debe de reordenar y con ellos graficar la magnitud de salida.
La FFT de 16 puntos. Dados los valores de una seal de entrada
x(0)=x(1)==x( 7)=1, y x(8)=x(9)=.=x(15)=0, la cual representa una
secuencia de entrada rectangular. La secuencia de salida puede encontrarse
utilizando el grafo de 16 puntos que se ilustra en la siguiente figura. Los
resultados intermedios de la salida de cada etapa se encuentran de una
forma similar a la del ejercicio anterior. Ocho constantes gemelas W 0, W1,
.,W7 se requieren calcular para N=16.

DECIMACIN EN FRECUENCIA
El algoritmo se estructura en log 2 N niveles de cmputo 1,2,3,.....,.
Para el desarrollo de este algoritmo deben tenerse en cuenta los siguientes
puntos:
Cada par de puntos de un cierto nivel s obtienen a partir de otros dos del nivel
anterior. Estos dos puntos origen se dicen que son nodos duales.
El espaciado entre dos nodos duales es
Cmputo de nodos duales: mariposas. El cmputo de dos nuevos nodos a
partir de dos nuevos nodos duales se denomina mariposa. Su estructura se
muestra en la grfica (b) y se corresponde con la siguiente expresin:

xl (k ) xl 1 (k ) W p xl 1 (k N / 2l )
xl (k N / 2l ) xl 1 (k ) W p xl 1 (k N / 2l )
Lo cual se puede simplificar a la estructura mostrada en la parte c de la
figura.

DECIMACIN EN FRECUENCIA
Determinacin de Wp
1.Escribir k (nodo actual) en forma de nmero binario de
2.Desplazar

bits

1 bits a la derecha (rellenando con ceros)

3.Invertir el orden de los bits (001 pasa a 100). El resultado es p.

log 2 N
1,2,3,.....,

PSEUDOCDIGO PARA IMPLEMENTAR LA


TRANSFORMADA RPIDA DE FOURIER
m=LOG(N)/LOG(2)
N2=N
DO k=1, m
N1=N2
N2=N2/2
angle=0
arg=2(pi)/N1
DO j=0, N2-1
c=cos(angle)
s=-sin(angle)
DO i=j, N-1, N1
kk=i+N2
xt=x(i)-x(kk)
x(i)=x(i)+x(kk)
yt=y(i)-y(kk)
y(i)=y(i)+y(kk)
x(kk)=xt*c-yt*s
y(kk)=yt*c+xt*s
END DO
angle=(j+1)*arg
END DO
END DO

j=0
DO i=0, N-2
IF (i<j) THEN
xt=xj
xj=xi
xi=xt
yt=yj
yj=yi
yi=yt
END IF
k=N/2
DO
IF (k>=j+1) EXIT
j=j-k
k=k/2
END DO
j=j+k
END DO
DO i=0, N-1
x(i)=x(i)/N
y(i)=y(i)/N
END DO

CONCLUSIONES

Se realiz un breve panorama histrico del algoritmo de


la trasformada rpida de Fourier
Se demostr la representacin en algebra lineal del
algoritmo de la FFT.
Se encontraron los elementos adecuados para
determinar de manera adecuada un algoritmo sencillo y
prctico para determinar la Transformada rpida de
Fourier.

Vous aimerez peut-être aussi