Está en la página 1de 27

CAPITULO 4

La Transformada de Fourier

4.1. INTRODUCCIN
El estudio de las seales cotidianas en el dominio de la frecuencia nos proporciona un conocimiento de las caractersticas frecuenciales de stas. Por ejemplo nos es muy til el conocer la respuesta en frecuencias de un canal de telecomunicaciones, para poder determinar la mxima frecuencia que puede transmitir sin provocar distorsiones de la seal de modo que sta sea recibida y reconstruida con total garanta. Otro ejemplo puede ser el anlisis de la voz. Transformando la seal de voz en sus componentes frecuenciales podemos distinguir las diferencias entre las voces de distintas personas y determinar las palabras que est diciendo. Esto es muy til para reconocimiento e identificacin de voz, dos aplicaciones que estn hacindose muy familiares, al tiempo que aumenta la velocidad de los DSPs. Tambin podemos poner como ejemplo los Analizadores de Espectro que realizan transformacin de seales en el dominio del tiempo al dominio de la frecuencia. Este tipo de instrumentos se han hecho muy populares en los laboratorios electrnicos. Se utilizan para examinar la seal de salida de sensores conectados a estructuras que soportan esfuerzos mecnicos, como puentes o rascacielos en los cuales un cambio significativo de la respuesta en frecuencia puede suponer un exceso de carga en alguna parte de la estructura que puede provocar un derrumbamiento en el futuro. En este captulo intentamos presentar cmo se transforman las seales de un dominio al otro. Suponemos que no se tienen conocimientos previos en la utilizacin de este tipo de transformadas, de modo que el estudio va a ser introductorio, ya que las matemticas implicadas en este campo pueden llegar a ser muy complejas, y hay cantidad de libros de texto al respecto. Vamos a ver en este captulo cmo el advenimiento de los sofisticados DSPs que hay en la actualidad ha hecho posible el uso de estas, relativamente viejas, transformadas. Digo esto porque Jean Baptiste Joseph Fourier deriv su frmula en el ao 1822. En la parte final de este captulo presentaremos tambin otro tipo de transformada en frecuencia que se est haciendo muy popular en aplicaciones de procesado de imgenes. Desafortunadamente, es imposible realizar una explicacin prctica de las transformadas en frecuencia sin hacer uso de unas pocas matemticas.

Pgina

72

CAPITULO 4

La Transformada de Fourier

4.2. EL FASOR
Como punto de inicio necesitamos un mtodo simple de describir una seal, que usualmente llamaremos fasor (phasor model). En la figura 4.1 presentamos un fasor simple.

Figura 4.1 - Modelo de un fasor simple

El fasor es un vector rotando en el plano complejo, con una magnitud A y una velocidad de rotacin expresada en radianes/segundo. Si nosotros cogemos un valor instantneo de la seal en cualquier momento, x(t), viene dado por : x(t)=(coordenada real) + j(coordenada imaginaria) = a + jb donde : A =

a 2 + b2 b a

= t = tan 1

ste es un mtodo para escribir un numero complejo (recuerda : j2=-1), llamado la forma rectangular. El otro mtodo es la forma polar donde :

Pgina

73

CAPITULO 4

La Transformada de Fourier

x (t ) = Ae j ( t ) e j ( t ) = cos( t ) + j sen( t )
Estas ecuaciones bsicas dan lugar a muchas de las funciones de la trigonometra que la mayora de nosotros hemos tenido que aprender en la escuela. Recuerda tambin que se relaciona con la frecuencia de la siguiente forma :

= 2 f
Finalmente radianes equivale a 180o . Nuestra descripcin del fasor se puede extender fcilmente al tiempo discreto o sistemas digitales, en los cuales la seal slo tiene valor en los intervalos especficos de tiempo definidos por el periodo de muestreo Ts:

x (n) = Ae j ( n Ts )
A diferencia de la variable continua de tiempo t, nosotros tenemos ahora una variable discreta n, de modo que el fasor avanza en saltos de Ts. Cogiendo cualquiera de los dos casos (continuo o discreto), si nosotros tenemos un valor inicial de x de :

x ( 0) = Ae j ( )
nosotros podemos derivar la forma general de ambas ecuaciones como sigue :

x (t ) = Ae j ( t + )
x ( n) = Ae
j ( n Ts + )

Estas simples ecuaciones son la base de todo el anlisis que a continuacin haremos y podremos ver cmo usamos este modelo para describir seales que nos son muy familiares : senos y cosenos.

Pgina

74

CAPITULO 4

La Transformada de Fourier

4.3. MODELANDO SENOIDES


Volviendo atrs en la descripcin de e
j ( t )

, nosotros la podemos reescribir as :

e j = cos + j sen
Tambin :

e j = cos j sen
Donde :

= ( t + ) (n Ts + )
De estas dos ecuaciones nosotros podemos derivar las siguientes relaciones:

cos =

e j + e j 2 e j e j 2j

sen =

Esto significa que una seal seno o coseno general, x(t), se puede describir con la suma de dos fasores. Por ejemplo :

x ( t ) = R cos( t + ) = R j ( t + ) (e + e j ( t + ) ) 2

Por tanto nuestro coseno puede representarse con dos fasores que forman un nmero complejo conjugado. Esto significa que tiene el mismo valor real (a) e igual y el valor de b igual y de signo contrario, ver figura 4.2. Debemos recordar que nuestros fasores estn rotando tanto en direccin positiva (sentido horario), como negativa (sentido antihorario), podemos deducir una propiedad interesante que es que las seales reales estn hechas de un par de fasores que forman un nmero complejo conjugado de manera que la suma de los vectores siempre est sobre el eje real.

Pgina

75

CAPITULO 4

La Transformada de Fourier

Figura 4.2 - Representacin de una seal coseno mediante un fasor

Pgina

76

CAPITULO 4

La Transformada de Fourier

4.4. SERIES DE FOURIER


El desarrollo anterior lo hemos realizado sobre seales simples del tipo seno o coseno, de una sola frecuencia, pero existe la forma de dividir seales mucho ms complejas en distintos senos o cosenos. Por ejemplo un tren de pulso rectangulares consiste en la suma de un nmero infinito de senos de distinta amplitud. De este modo podemos describir cualquier seal peridica compleja en forma de una suma de muchos fasores (senos o cosenos). Un mtodo de describir una seal de esta forma es las llamadas series de Fourier, en las cuales asumimos que el conjunto de fasores tienen frecuencias mltiplos de alguna frecuencia fundamental, f0 (o frecuencia angular 0) :

x(t ) =

k = N

C e
k

j ( k 0 t )

Cualquier seal peridica se puede representar como una serie de Fourier donde N tiende a infinito. Los componentes frecuenciales individuales son conocidos como armnicos. Podemos hacer el modelo de Fourier ms general usando fasores cuyas frecuencias no son mltiplos del armnico fundamental, lo que ocurre generalmente cuando la seal no es peridica (la mayor parte de los casos en aplicaciones reales) :

x(t ) =

k = N

C e
k

j ( k t )

Cualquier seal arbitraria se puede representar como una serie de Fourier de esta forma general.

4.4.1 SERIES DE FOURIER DISCRETAS


Necesitamos traducir estas ecuaciones de tiempo continuo al dominio discreto o digital para poder derivar algunas frmulas tiles para los DSPs. El anlisis anterior se puede extender a sistemas de tiempo discreto. Lo nico que necesitamos es reemplazar la funcin continua, t, con otra que vare en saltos de 0 Ts, as para el caso en que la seal es peridica :

x ( n) =

k=N

C e
k

j ( k 0 Ts n )

Es interesante advertir que cuando el incremento de la fase para el k-simo armnico est dado por :

k0Ts = 2 m
Pgina 77

CAPITULO 4

La Transformada de Fourier

donde m es entero, la fase no es distinguible de la fase cuando k=0. Esto ocurre porque 2=360o y ocurre cuando :

0 = 1,2,3,4,... s

Si razonamos un poco lo anterior, podemos ver que esto significa que la respuesta en frecuencia de una seal discreta es peridica, con un periodo de 1/Ts. Usando el modelo del fasor simple hemos conseguido describir una seal discreta. Haciendo uso de esta descripcin vamos a explicar cmo podemos realizar la transformacin entre los dominios del tiempo y la frecuencia.

4.4.2 LA TRANSFORMADA DE FOURIER.


En aplicaciones reales la mayor parte de las seales no son peridicas y debemos transformar nuestras series de Fourier para poder analizarlas. Consideremos la serie de Fourier general en la cual todas las frecuencias son mltiplos de la fundamental, es decir :

k = k0
El hecho de que la seal no es peridica se puede representar por :

0 0
Esta simple ecuacin expresa que no hay mnimo comn denominador entre las frecuencias de todos lo fasores. Cuando el nmero de fasores tiende a infinito nuestro sumatorio se convierte en una integral :

1 x(t ) = 2

X ( ) e

j ( t )

En la anterior ecuacin asumimos que la amplitud de la seal se puede definir como funcin de la frecuencia (), es decir, X(). La ecuacin inversa que define X(), viene dada por :

X ( ) =

x (t ) e

j ( t )

dt

Por lo tanto, ahora tenemos una ecuacin que nos permite calcular la respuesta en amplitud de una seal continua en el dominio de la frecuencia usando su respuesta en el dominio del tiempo. Estas dos ecuaciones se denominan el par de Transformadas de Fourier, las cuales son muy tiles para los matemticos pero, 78

Pgina

CAPITULO 4

La Transformada de Fourier

desafortunadamente no es posible implementarlas directamente en un DSP. Por ello debemos deducir la forma discreta de estas ecuaciones. Obviamente, necesitamos un nmero infinito de medidas para determinar la funcin X(). En la prctica las transformadas de Fourier no se calculan cada vez, nosotros simplemente usamos tablas de transformadas de Fourier que aparecen en muchos libros de matemticas o libros de DSPs.

4.4.3 LA TRANSFORMADA DISCRETA DE FOURIER (DFT).


Para poder encontrar el equivalente discreto de la transformada de Fourier debemos transformar la variable continua t por la variable discreta nTs. Fuera de los lmites /Ts, el espectro se repite, por lo tanto podramos cambiar los lmites de este valor. Por conveniencia, sin embargo, haremos que la variable de integracin sea Ts as la integral se convierte en :

1 x ( n) = 2
La transformada inversa es :

X ( )e

j (Ts n )

d (Ts )

X ( ) =

n =

x ( n) e

j ( Ts n )

Hay que advertir que la segunda ecuacin an usa un sumatorio en lugar de una integral. Podramos haber esperado esto porque sabemos que x(n) slo es vlido en los instantes de tiempo nTs . Estas dos ecuaciones forman la DFT (Discrete Fourier Transform), la cual vamos a ver con un poco ms de detalle. Estas dos ecuaciones nos permiten transformar seales digitales entre los dominios del tiempo y la frecuencia. El espectro que obtenemos al usar la DFT tiene algunas propiedades interesantes, por ejemplo, es peridico con frecuencia s. Tambin para una seal real, como los fasores aparecen en forma de complejos conjugados, el espectro siempre tiene simetra par a lo largo del eje real, y simetra impar en el eje imaginario. Esto simplemente significa que si nosotros sabemos que trabajamos con una seal real, la cantidad de informacin que necesitamos recordar sobre el espectro en frecuencias es menor, ya que es repetitivo. Haciendo uso de estas ecuaciones podemos calcular la respuesta en frecuencia de una seal de voz digitalizada, o determinar los coeficientes de un filtro digital.

Pgina

79

CAPITULO 4

La Transformada de Fourier

4.4.4 CONSIDERACIONES PRCTICAS


Hasta aqu hemos introducido un mtodo para describir una seal que vara en el tiempo, al cual hemos denominado el modelo del fasor. Hemos hecho la explicacin en funcin de seales senoidales y cosenoidales, y hemos introducido las series de Fourier que nos indican cmo una seal peridica se puede representar por medio de un nmero determinado de senos (armnicos) equiespaciados en frecuencia. Despus de hacer las series de Fourier ms generales eliminando las relaciones entre los armnicos, hemos aplicado la forma discreta de nuestra ecuacin, la cual finalmente nos ha proporcionado el par de frmulas de la DFT. De este modo tenemos ahora un par de ecuaciones que nos permiten transformar cualquier seal discreta entre los dominios del tiempo y la frecuencia, pero ahora nos hacemos la siguiente pregunta, cmo podemos programar un DSP para que realice la DFT ? qu problemas podemos encontrar cuando intentemos disear un algoritmo que realice la DFT de una seal ?. Volviendo atrs a la ecuacin de la DFT para X(), observamos dos problemas obvios : primero, es que en el mundo real no es posible realizar un sumatorio infinito. En segundo lugar, nosotros siempre vamos a estar limitados en el tiempo requerido para computar la salida. De este modo el nmero de frecuencias al que nosotros podemos aplicar la DFT se ve restringido por estas dos causas. El primer problema es fcil de superar, debemos coger slo una parte de los valores de entrada x(n). Esto usualmente se denomina enventanado, y tambin se usa para muchas otras aplicaciones como por ejemplo codificacin de voz. Si entonces realizamos la DFT sobre los valores de la ventana, el espectro resultante viene dado por : XN()=X() * W() donde XN() indica el espectro enventanado, N es el nmero de muestras usadas, W() denota el espectro de la ventana y el * es la convolucin entre W() y X(). La convolucin es una operacin que ya conocemos y que podemos expresar de la siguiente manera :
N 1 r =0

X N ( ) =

X (r ) * W ( N r )

Si recordamos que el espectro en frecuencia ser peridico, con frecuencia s, podemos ver que un espectro rectangular en el dominio de la frecuencia implica que no causaremos ninguna interferencia entre lbulos adyacentes de la respuesta. Desafortunadamente una respuesta en frecuencia rectangular es prcticamente imposible de realizar, por tanto siempre deberemos llegar a un compromiso.

Pgina

80

CAPITULO 4

La Transformada de Fourier

Asumamos que hemos escogido una funcin de enventanado, lo que necesitamos conocer ahora es el efecto de usar slo un nmero limitado de frecuencias, y cuntas frecuencias necesitamos para mantener una precisin aceptable. Bsicamente no hay una respuesta simple a esta cuestin. Por regla general el nmero ptimo de fasores es igual al nmero de puntos iniciales de x(n), esto es, N. La forma ms simple de imaginar esto es asumir que nuestra porcin enventanada de x(n) consiste en un periodo de una larga secuencia (ver figura 4.3), con periodo NTs y frecuencia s/N. Si hacemos esto podemos tratar la secuencia como una serie de Fourier y veremos cmo el espectro consiste de N fasores.

Figura 4.3 - Porcin enventanada de la seal como un periodo de la secuencia En muchos libros detallados sobre DSPs probablemente no encontraremos el par de ecuaciones de la DFT exactamente igual como aqu lo hemos explicado. Generalmente usan otra variable en la ecuacin a la que se denomina factor W (en ingls twiddle factor). Retrocedamos un poco y veamos cmo aparece esta nueva funcin. Dijimos antes que el espectro de una DFT es repetitivo con periodo s, as si decimos que los fasores estn espaciados por un valor (figura 4.4), as : N = s

Pgina

81

CAPITULO 4

La Transformada de Fourier

Figura 4.4 - Fasores espaciados por

Esto nos permite digitalizar nuestra escala de frecuencias de modo que el espectro puede escribirse ahora en trminos de k en lugar de :

X ( k ) = K ( ) =

x ( n) e
n=0

N 1

j ( kTs n )

Recordando que :

s =
y que :

2 Ts s N

=
Podemos reescribir la ecuacin de este modo :
N 1 n=0

X N (k ) =

x ( n) e

j(

2kn ) N

Esta es la forma de la DFT prctica que normalmente se usa y el factor twiddle, denominado WN, se define como :
j( 2 ) N

WN = e

Pgina

82

CAPITULO 4

La Transformada de Fourier

De modo que finalmente podemos escribir el par de ecuaciones de la DFT en su forma ms comn :
N 1 n=0

X N (k ) =
y:

x ( n) W

kn N

x ( n) =

1 N

N 1 k =0

kn ( k ) WN

4.4.5 LA TRANSFORMADA RPIDA DE FOURIER (FFT)


La DFT es un mtodo muy eficiente para determinar el espectro en frecuencia de una seal, el nico inconveniente de esta tcnica es la cantidad de tiempo requerida para computar la salida. Esto se debe a que los ndices k y n, deben variar de 0 a N-1, para conseguir el rango de salida completo, y por tanto se debe realizar N2 operaciones. Si miramos las anteriores ecuaciones podemos observar que cada parte de la ecuacin realiza una funcin de multiplicacin-y-suma, as que una DFT con N=1000 (DFT de 1000 puntos), usa 106 ciclos mquina en cualquier DSP. Si usamos un DSP con un tiempo de ciclo de 50 ns le costar 0.05 segundos, y por lo tanto la mayor velocidad de muestreo que podr alcanzar ser de 20 Hz, lo cual evidentemente es muy poco teniendo en cuenta que cualquier seal audible puede alcanzar frecuencias del orden de 20 KHz o algo ms. Si examinamos de nuevo el factor twiddle, WN :
j( 2 ) N

WN = e

vemos que calculamos muchas veces los mismos valores de WN durante la DFT debido a que WN es una funcin peridica con un nmero limitado de valores distintos. El objetivo de la transformada rpida de Fourier (FFT) y su inversa, la IFFT, es usar esta redundancia para reducir el nmero de clculos necesarios. El trmino genrico transformada rpida de Fourier abarca distintos algoritmos con distintas caractersticas, ventajas y desventajas. Por ejemplo, una FFT diseada y optimizada usando un lenguaje de alto nivel probablemente no funcionar bien en un DSP de coma fija. Sin embargo, todas las FFTs usan la misma aproximacin para reducir el algoritmo en un nmero reducido de DFTs sucesivas, cortas y simples. Vamos a ver en detalle un mtodo para reducir la DFT en una FFT. Aunque esto requiere una pequea cantidad de

Pgina

83

CAPITULO 4

La Transformada de Fourier

matemticas, nos permitir encontrar la explicacin de por qu casi todos los DSPs estn diseados para implementar las FFTs tan rpido como sea posible. El primer paso en esta reduccin es dividir la seal de entrada x(n) en muchas secuencias cortas intercaladas. Esto, usualmente, se llama diezmo en el tiempo. Si cogemos nuestra seal original con N valores, en primer lugar nos permite dividirla en dos secuencias, una con los nmeros impares y otra con los nmero pares :
N 1 n=0

X N (k ) =
se transforma en :
N 1 2 r=0

x ( n) W

kn N

X N (k ) =
o:

x ( 2r ) W

2 rk N

x( 2r + 1) W
r =0

N 1 2

( 2 r + 1) k N

X N (k ) =

x(2r ) (W
r=0

N 1 2

2 rk N

k ) + WN x(2r + 1) (WN2 ) rk r =0

N 1 2

Volviendo atrs en la definicin de WN :


j( 2 ) N

WN = e
As :
j( 2 2) N

2 WN =e

=e

j (

2 ) N /2

= WN / 2

Y nuestra ecuacin se convierte en :


N 1 2 r =0 N 1 2 r =0

rk k rk X N ( k ) x ( 2r ) WN / 2 + WN x ( 2 r + 1) WN / 2

Lo cual escribimos : 84

Pgina

CAPITULO 4
k X N ( k ) = G ( k ) + WN H(k )

La Transformada de Fourier

donde G(k) es la DFT de los puntos pares y H(k) es la DFT de los nmeros impares. Desafortunadamente debemos multiplicar la DFT impar por WNk antes de poderle sumar G(k). De este modo tenemos expresada la DFT original en forma de dos DFTs ms pequeas de longitud N/2. Si N=1000, el clculo de esto nos llevar 5002+5002+500=500500 en lugar de 106 de la DFT original. Si asumimos que la longitud de la transformada es una potencia de 2, podemos seguir realizando este diezmado y dividir las dos secuencias anteriores en dos partes cada una. El lmite de este proceso nos lleva a simples DFTs de dos puntos, una de las formas de la FFT ms usada, la de base 2. Como ejemplo cogeremos una secuencia pequea donde N=8, es decir, x(n) viene definida por : n={0,1,2,3,4,5,6,7} Si diezmamos una vez obtenemos dos secuencias : n={0,2,4,6,} y {1,3,5,7} Si diezmamos una vez ms obtenemos cuatro secuencias : n={0,4} {2,6} {1,5} {3,7} Entonces la FFT se calcula inicialmente realizando cuatro DFTs de dos puntos sobre los valores de los pares anteriores. Aunque esto simplifica tremendamente la operacin, debemos recordar los factores twiddle que aparecen cada vez que diezmamos la secuencia. Estos factores son tambin diferentes en cada etapa del diezmado. El objetivo de un buen algoritmo FFT es ser capaz de incorporar estos factores extra sin que estorbemos demasiado al DSP. Veamos un simple ejemplo donde N=4 para observar las operaciones a realizar :

X 4 ( k ) = x ( n) W4kn
n=0

= x ( 2r ) W + W
r=0 rk 2 k 2

k 4

x (2r + 1) W
r =0

rk 2

= [ x ( 0) + x ( 2) W ] + W4k [ x (1) + x (3) W2k ]


Podemos reescribir WN, de modo que :

Pgina

85

CAPITULO 4
2 k) 2 2 2k ) 4

La Transformada de Fourier

W2k = e

j (

=e

j(

= W42 k

Entonces nuestra FFT se transforma en :

X 4 ( k ) = [ x (0) + x (2) W42 k ] + W4k [ x (1) + x (3) W42 k ]


As desarrollando para todos los valores de k, obtenemos :

X 4 (0) = [ x (0) + x (2) W40 ] + W40 [ x (1) + x (3) W40 ] X 4 (1) = [ x (0) + x (2) W42 ] + W41[ x (1) + x (3) W42 ] X 4 (2) = [ x (0) + x (2) W40 ] + W42 [ x (1) + x (3) W40 ] X 4 (0) = [ x (0) + x (2) W42 ] + W43[ x (1) + x (3) W42 ]
Observar que :
j ( 2 )4 4

W =e
4 4

= 1 = W40

y que :
j( 2 )6 4

W46 = e

= 1 = W42

Es ms sencillo visualizar esta DFT de cuatro puntos si hacemos uso de un grfico como el de la figura 4.5 donde los nmeros de los crculos representan la potencia de W4 que se necesita en cada etapa. Si no hay smbolo, entonces no se necesita multiplicar. El grfico ilustra una de las caractersticas principales de cualquier tipo de FFT, la mariposa :

Pgina

86

CAPITULO 4

La Transformada de Fourier

Figura 4.5 - Mariposa caracterstica de una FFT

cada seccin est compuesta de varias mariposas como la mostrada en la figura 4.6.

Figura 4.6 - Diagrama de una mariposa bsica

La forma generalmente aceptada para la mariposa es en la que los factores de multiplicacin son x=0 e y=-1. Esto se toma como convencin de modo que muchos libros asumen esto y dibujan la mariposa tal y como se muestra en la figura 4.7. En el caso de que tengamos factores twiddle extra dibujaremos la mariposa tal y como aparece en la figura 4.8. Ahora la mariposa consiste solamente en simples sumas y restas, ya que todos los factores

Pgina

87

CAPITULO 4

La Transformada de Fourier

twiddle son +1 -1. Cuando hemos conseguido reducir las ecuaciones a este simple formato se vuelve extremadamente sencillo el disear un programa que realice la FFT.

Figura 4.7 - Diagrama generalmente usado para representar una mariposa

Figura 4.8 - Mariposa bsica con factores twiddle extra Un DSP es ideal para realizar FFTs ya que puede ejecutar las matemticas implicadas en stas muy rpidamente. Los DSPs tienen tambin caractersticas importantes que vamos a ver a continuacin. En cualquier FFT, con el propsito de obtener los valores de salida en orden ascendiente, debemos desordenar la secuencia de entrada de una forma especfica. Veremos que la consecuencia de no desordenar la secuencia de entrada provocar que la secuencia de salida salga desordenada. Si miramos cmo se puede implementar una FFT en un DSP observaremos que son necesarias dos tablas de datos, una con los valores de entrada y otra con los valores de salida. Con una FFT de cuatro puntos, para obtener la salida en orden ascendiente los valores de entrada tienen que cargarse en la tabla en el siguiente orden : n={0,2,1,3} Esto es trivial para una FFT de cuatro puntos, pero si nosotros tenemos que realizarlo para una FFT de 512 puntos o 1024, o incluso ms, se convierte en una tarea compleja. La mayor parte de los DSPs de propsito

Pgina

88

CAPITULO 4

La Transformada de Fourier

general actualmente ofrecen una solucin a este problema que es lo que se denomina direccionamiento con inversin de bit (bit-reversed adressing). Si vamos a hacer uso de este modo de direccionamiento, los valores iniciales se almacenan en orden ascendente, y con este modo de direccionamiento se van cogiendo de la forma desordenada que necesitamos. A continuacin vamos a ver cmo trabaja este modo de direccionamiento : Consideremos una direccin de 3 bits, la cual representa 23 u 8 posibles posiciones de memoria. Por lo tanto estamos delante de una FFT de ocho puntos. Despus de empezar en 0, lo que vamos a hacer es sumar la mitad de la longitud de la FFT a cada direccin de memoria, pero sumando el acarreo de izquierda a derecha, en lugar de la forma habitual de derecha a izquierda :

inicio en 000 000 + 100 100 + 100 010 + 100 110 + 100 001 + 100 101 + 100 011 + 100

= x(0) = 100 = x(4) = 010 = x(2) = 110 = x(6) = 001 = x(1) = 101 = x(5) = 011 = x(3) = 111 = x(7)

En los dispositivos DSP ms modernos esta manipulacin de las direcciones se hace como una tarea en segundo plano de modo que nos podemos beneficiar del uso de las tablas sin ninguna penalizacin temporal al utilizar direccionamiento con inversin de bit. Esto es posible en dispositivos que tienen unidades aritmticas asociadas a los generadores de direcciones. Son estas ALUs especializadas las que realizan las operaciones mostradas anteriormente. Usando estos modernos DSPs se ha hecho posible implementar FFTs de 1024 puntos con tiempos por debajo de los 5 ms, y esto es debido a que el tiempo para realizar los clculos se ha reducido a un valor tan pequeo que actualmente podremos realizar tareas en tiempo real. Hay incluso procesadores cuya nica finalidad es realizar FFTs, obviamente estos dispositivos son los ms rpidos en el clculo de las mismas.

Pgina

89

CAPITULO 4

La Transformada de Fourier

Volviendo atrs a nuestro ejemplo de la FFT de 4 puntos, veamos los valores de W que obtenemos en las mariposas :
j ( 2 ) 4

W41 = e

= e j 90

= cos( 90o ) + j sen( 90o ) = j


y:

W42 = (W41 ) 2 = j 2 = 1
finalmente :

W43 = W41 W42 = j


Por tanto, podemos simplificar el grfico tal y como lo representamos en la figura 4.9. Como hemos apuntado anteriormente, multiplicar por -1 es simplemente realizar una resta, y multiplicar por j simplemente es una conversin entre nmeros reales e imaginarios.

Pgina

90

CAPITULO 4

La Transformada de Fourier

Figura 4.9 - Grfico simplificado de una DFT de 4 puntos Por lo tanto la DFT es muy simple y es posible convertir el diagrama anterior a su forma estndar que representamos en la figura 4.10.

Figura 4.10 - Grfico estndar de una DFT de 4 puntos

Pgina

91

CAPITULO 4

La Transformada de Fourier

Hasta aqu hemos reducido las matemticas tanto como ha sido posible, hasta el punto de tener slo un factor W con valor -j. sta es slo una forma de describir la FFT, desafortunadamente hay muchos libros en los cuales se explica lo mismo de diferente forma, lo cual puede crear confusiones en un principio. Sin embargo, es muy posible que con la explicacin realizada, no haya problemas para comprender todos los mtodos que se explican en otros textos. Tal y como dijimos al principio de la explicacin, la ventaja de descomponer la DFT original en DFTs ms pequeas es la reduccin del nmero de operaciones necesarias para conseguir la funcin final. Si nosotros descomponemos una DFT de N puntos a DFTs de dos puntos conseguimos reducir el nmero de operaciones que realiza el procesador desde N2 hasta Nlog2N. Si cogemos como ejemplo una DFT de 512 puntos para ilustrar lo que acabamos de decir, podemos ver que se reduce el nmero de operaciones desde 260000 hasta 4600 consiguiendo una reduccin por encima de 50 veces, aproximadamente. Recordemos que el trmino transformada rpida de Fourier es general y lo usamos para muchos mtodos que reducen el nmero de operaciones requerido para realizar DFTs. Nosotros hemos visto aqu las FFTs de base 2 que son las ms populares pero no las nicas. Fcilmente podemos deducir del ejemplo anterior cmo la descomposicin en DFTs de dos puntos puede fcilmente alcanzarse con FFTs de cualquier tamao mientras sea potencia entera de dos. Obviamente si ste no es el caso deberemos buscar un mtodo distinto.

Pgina

92

CAPITULO 4

La Transformada de Fourier

4.5. IMPLEMENTACIN HARDWARE DE LA FFT


En trminos generales, la memoria necesaria para ejecutar una FFT de N puntos consiste en 2N posiciones para datos (N partes reales y N partes imaginarias) y N posiciones para los valores senoidales (coeficientes W o twiddle factors). Una vez satisfechos los requerimientos de memoria, el DSP debe ejecutar los clculos necesarios en el tiempo requerido. Muchos fabricantes de DSPs ofrecen bien un benchmark para una FFT de un tamao concreto, o bien el tiempo que precisa el clculo de una mariposa. Al comparar especificaciones, es importante asegurarse de que se ha utilizado el mismo tipo de FFT en todos los casos. Por ejemplo, el benchmark de una FFT de 1024 puntos pudiera haber sido derivado de una FFT de base 2 o de base 4; ambos casos no son comparables porque la cantidad de clculos necesarios es diferente. Una vez el hardware cumple los requerimientos, el software ha de hacer que el sistema funcione. Con el mismo hardware, diferentes rutinas harn posible ejecutar algoritmos distintos base 2, base 4, diezmado en el tiempo, o diezmado en la frecuencia, los cuales manejan los mismos datos de diferentes maneras.

Pgina

93

CAPITULO 4

La Transformada de Fourier

4.6. CONSIDERACIONES PARA ALGORITMOS DE FFT


El primer paso al disear una FFT consiste en determinar el nmero de puntos requeridos, N, o longitud del registro. Hay varias formas de abordar este problema. La frecuencia de muestreo, fs, debe ser al menos dos veces la mxima frecuencia de inters en la seal de entrada (por el teorema del muestreo de Nyquist). Una vez fijada la velocidad de muestreo, la resolucin espectral viene dada por fs/N. Cuantos ms puntos tenga la FFT, mejor ser dicha resolucin. Esta es una consideracin de principio en aplicaciones de anlisis espectral. En anlisis del habla en tiempo real, por ejemplo, el ancho de banda de la seal es de unos 4kHz, implicando una frecuencia de muestreo mnimo de 8kHz. El espectro del habla no es estacionario (en realidad, est continuamente cambiando). Por lo tanto, para estudiar la seal hay que dividirla en ventanas de tiempo, Tw, suficientemente cortas como para que los matices individuales no se vean promediados en la FFT ; todos los significados se pierden en FFTs para tratamiento del habla de largo trmino. Pero Tw debe ser suficientemente largo como para dar la resolucin espectral adecuada. Est comprobado, que para el habla humana, 20ms es un tiempo adecuado. Por tanto, haremos Tw igual a 20ms. Veamos un ejemplo de aplicacin de una FFT para el anlisis de voz en tiempo real : - BW = 4kHz. Frecuencia de muestreo = 8kHz. - Ventana = 20ms. - N > 8kHz 20ms = 160 N = 256 puntos. - Puede cumplir el DSP estas condiciones ? En general, un DSP antiguo a 12MHz de velocidad de reloj es capaz de realizar esta FFT en 0,59ms de modo que le quedan 19,41ms para realizar otras tareas. Ahora, qu determina si un DSP sirve para esa tarea ?. El nmero de puntos de nuestra ventana Tw es igual a Tw fs, es decir, 20ms 8KHz = 160 puntos, lo que, redondeado a la potencia de 2 inmediata superior, nos da 256 puntos. Esto significa que el DSP deber completar la FFT de 256 puntos en menos del tiempo de adquisicin de datos por ventana, Tw. De lo contrario no ser posible el proceso en tiempo real. Los tiempos de prueba de clculo de FFTs suelen ser suministrados por los fabricantes de DSPs. Al evaluar diferentes procesadores hay que asegurarse de que todos los datos se consiguieron bajo las mismas condiciones. Por ejemplo, una FFT de base 4 es algo ms rpida que una de base 2.

Pgina

94

CAPITULO 4

La Transformada de Fourier

4.7. FUGADO ESPECTRAL.


El fugado espectral durante el proceso de una FFT puede ser entendido mediante la consideracin del caso en que la entrada es una onda senoidal pura. Consideraremos dos situaciones. En la primera, reflejada en la figura 4.11 en su apartado a, la razn entre la velocidad de muestreo y la frecuencia de la seal senoidal de entrada es tal que dentro de la ventana de datos se contiene un nmero exacto de ciclos de la seal de entrada. Esto provoca que la respuesta espectral nos de un nico armnico correspondiente a la seal senoidal de entrada. La figura 4.11 apartado b, muestra la segunda situacin, en la que la ventana de datos no contiene un nmero entero exacto de ciclos de la seal de entrada. Las discontinuidades en los extremos son equivalentes a multiplicar la onda por un pulso rectangular de ventana, cuyo espectro tiene la forma sen(x)/x. Las discontinuidades en el dominio del tiempo dan as lugar al fenmeno llamado de fugado espectral (spectral leakage) en el dominio de la frecuencia, debido a que se precisa gran cantidad de trminos espectrales para describir la discontinuidad. La respuesta espectral obtenida mediante FFTs se aleja de la terica consistente en un solo armnico (figura a), para parecerse ms a la de la figura b, con el lbulo central horizontalmente dilatado y un gran nmero de lbulos laterales cuyas caractersticas bsicas proceden del pulso rectangular en el tiempo.

Figura 4.11 - Ejemplo de aparicin del efecto de fugado espectral Puesto que en las aplicaciones prctica de anlisis espectral por medio de la FFT las frecuencias exactas son desconocidas, debe hacerse algo para minimizar los lbulos laterales. Este algo consiste en elegir una funcin diferente de la rectangular para la ventana : las muestras de entrada en el tiempo son multiplicadas por una funcin tal que reduce la seal a cero en los extremos de la ventana. La seleccin de la seal de ventana apropiada es habitualmente un equilibrio entre el ensanchamiento del lbulo principal y la minimizacin de los laterales. El fugado puede ser reducido tambin ampliando los datos con ceros y ejecutando una FFT por lo tanto ms larga. 95

Pgina

CAPITULO 4

La Transformada de Fourier

4.8. TRANSFORMADA DISCRETA DE COSENO (DCT).


En este apartado vamos a ver por encima otro tipo de transformada en frecuencia a la que denominamos la Transformada Discreta de Coseno (DCT). El inters por esta transformada ha crecido en los ltimos aos gracias a que se ha hecho posible implementarla en los modernos DSPs para aplicaciones en tiempo real. La DCT es una de un conjunto de tcnicas heursticas de codificacin de imgenes, que comnmente sustituyen algoritmos ptimos pero que consumen grandes cantidades de tiempo en la realizacin de los clculos. Estas tcnicas no encuentran la solucin exacta, pero s una muy aproximada que en la mayora de los casos es vlida y consumen mucho menos tiempo de computacin. Una DCT puede proporcionar tasas de compresin del orden de 20:1, lo cual significa reducir una imagen de 8 bits con 10241024 puntos a un fichero de tan slo 50k bytes. Esto se debe a que la DCT transforma la imagen en sus componentes frecuenciales usando una simple operacin, mientras que en comparacin, por ejemplo, en codificacin de banda baja, es necesario un bloque de filtros pasa banda en paralelo. Invariablemente, para realizar la DCT, necesitamos partir la imagen en bloques de 88 puntos antes de poder aplicarla. Una razn de esto es que necesitamos la DCT para encontrar la redundancia existente en un conjunto de puntos. Bsicamente cualquier punto en una imagen es muy probable que est estrechamente relacionado con los cuatro puntos que le rodean y similarmente cada uno de estos cuatro puntos es muy probable que tenga alguna relacin con los cuatro puntos que tenga ms cercanos, pero el punto original es poco probable que est relacionado con otro punto que est muy lejano de l. Por tanto dividiendo la imagen podemos tener la esperanza de formar grupos de puntos que estn estadsticamente relacionados consiguiendo as un alto grado de redundancia. La segunda razn de dividir la imagen en bloques ms pequeos es reducir la cantidad de clculos necesarios. La DCT es similar a la DFT, adems no es prctico aplicar la DCT sobre toda la imagen sin dividir, ya que los clculos llevaran mucho tiempo, y no se podra realizar procesamiento de imgenes en tiempo real. Despus de aplicar la DCT en un bloque de puntos obtenemos un conjunto de datos que estn relacionados frecuencialmente. Si cogemos una imagen de televisin o una fotografa, generalmente encontramos que las componentes de baja frecuencia (incluyendo la componente de continua) son ms grandes que las componentes de alta frecuencia. Entonces podemos ignorar los coeficientes de alta frecuencia , o podemos usar un sistema de codificacin de longitud variable. Este tipo de sistemas de codificacin de longitud variable lo que hacen es asignar ms bits a aquellos coeficientes que contienen la informacin crucial, esto es, los de baja frecuencia en nuestro caso, mientras que para el resto se usa un nmero reducido de bits. De esta forma podemos

Pgina

96

CAPITULO 4

La Transformada de Fourier

reducir el nmero de bits necesario para transmitir la imagen y por tanto podemos reducir el ancho de banda de la seal a transmitir. Reducir el ancho de banda de la seal es el fin fundamental que se busca usando tcnicas de compresin de imgenes. Si volvemos atrs en el ejemplo anterior, la imagen de 8 bits y 10241024 puntos requiere alrededor de 50k bytes despus de que se haya aplicado la DFT sobre ella. Teniendo en cuenta esto y que el nmero de imgenes por segundo que por ejemplo utiliza un vdeo-telfono est alrededor de las 25, necesitamos un canal capaz de transmitir la seal resultante a una velocidad de 1.25 Mbytes/seg, an asumiendo que no vamos a consumir ningn tiempo en decodificar la imagen en su destino !. Si dividimos la imagen en bloques ms pequeos, en primer lugar conseguimos que la cantidad de informacin sea menor, despus de que la DCT haya sido aplicada, de modo que el tiempo necesario para aplicar la DCT inversa (IDCT) ser tambin menor. En segundo lugar se ve incrementada la relacin entre los puntos que queremos reducir con lo cual se reduce el nmero de coeficientes a transmitir y conseguimos as reducir la velocidad necesaria para transmitir la seal resultante. Vamos a explicar brevemente las matemticas envueltas en la DCT. La DCT de una serie de puntos discretos x(n)=0,1,2,3,4,...(N-1), se representa por la siguiente ecuacin :
N 1 2 ( 2n + 1) k C ( k ) x ( n) cos N 2N n=0

Xc (k ) = 2

Para k=0,1,2,3,4,..,(N-1). Donde :

C(k ) =

1 2

para k=0

y,

C(k ) = 1

para k=1,2,3,...,(N-1)

De la misma forma, la IDCT viene dada por :

x ( n) =

2 N 1 (2n + 1) k C ( k ) X c ( k ) cos N k =0 2N

En muchas aplicaciones donde no podemos tolerar ningn error de los que se introducen por el hecho de dividir la imagen en bloques ms pequeos necesitamos usar un mtodo basado en las DFTs. Un ejemplo de este caso son las imgenes mdicas, en las que la seal recibida es muy dbil siendo la relacin seal-ruido muy pobre de modo que algunas caractersticas son muy difciles de distinguir y no nos podemos permitir el perder detalles.

Pgina

97

CAPITULO 4

La Transformada de Fourier

Sin embargo en vdeo-telfonos los efectos de dividir la imagen en bloques ms pequeos no son distinguibles por el ojo humano y las DCTs estn siendo ampliamente utilizadas en este tipo de aplicaciones, aunque no se pueden encontrar directamente ya que ellas forman parte de algoritmos de compresin de imgenes ms extensos y complejos. En los ltimos aos han aparecido transformadas rpidas de coseno (FCT), pero actualmente an estn en fase de desarrollo e investigacin.

Pgina

98

También podría gustarte