Sunteți pe pagina 1din 18

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

Curso 2o. Ingeniero de Telecomunicacin. Ampliacin de Matemticas. Leccin 5.

ANLISIS DISCRETO DE FOURIER. Curso 2010-11

La transformacin discreta de Fourier es una herramienta fundamental en el estudio y tratamiento de las seales digitales. Puede decirse, sin temor a exagerar, que su implementacin computacional, conocida como el algoritmo de la transformada rpida de Fourier o algoritmo FFT (acrnimo del ingls fast Fourier transform) ha inuido en nuestra vida cotidiana ms que cualquier otro concepto matemtico en la Historia a travs de su utilizacin en la discretizacin y reconstruccin de seales. Su campo de aplicacin abarca el funcionamiento de los discos compactos, la mecnica aplicada, la acstica, la ingeniera biomdica, el anlisis sismogrco, el procesado digital de seales, el rdar o el electromagnetismo aplicado, por citar unas pocas reas. Existen ya dispositivos electrnicos chips que llevan el algoritmo FFT incorporado y que se pueden instalar en mquinas controladas por ordenadores. En este tema veremos este algoritmo, cuyas races se encuentran en la obra de K. F. Gauss y que fue creado en 1965 por J. W. Cooley y J. W. Tukey, y una serie de aplicaciones interesantes, como la aproximacin de los coecientes de Fourier de una seal peridica o de la transformada de Fourier de una seal continua no peridica, el anlisis de los modos de vibracin de los valores de una onda obtenidos a intervalos iguales y la sntesis de dicha onda, la eliminacin de ruidos aleatorios y el clculo del producto de polinomios. En asignaturas posteriores de la carrera podrs estudiar otras aplicaciones ms directamente relacionadas con el procesamiento digital de seales acsticas y visuales.

La transformacin discreta de Fourier

Para realizar el tratamiento digital de seales continuas es necesario discretizar stas, tomando muestras, y trabajar con las seales discretas que se obtienen. En la prctica, sin embargo, las seales discretas que se pueden manejar deben tener duracin nita. Es necesario, entonces, plantearse lo que podramos llamar un anlisis de Fourier discreto que relacione seales discretas en el dominio del tiempo con seales discretas en el dominio de la frecuencia o, en trmino abstractos, vectores de dimensin nita con vectores de dimensin nita. Puesto que una de las propiedades ms importantes del anlisis de Fourier continuo es la linealidad, debemos tratar de

Leccin 5. Anlisis Discreto de Fourier

conservarla en el caso discreto, lo que nos llevar a plantear dicha relacin entre vectores como una aplicacin lineal dada por una matriz. Hay varios problemas cuya resolucin acaba en la misma cuestin: una relacin entre vectores de valores en los dominios del tiempo y de la frecuencia denida por una matriz muy especial que se conoce como matriz de Fourier. Dicha relacin y las propiedades de dicha matriz son la base del anlisis discreto de Fourier. Veamos ahora uno de estos problemas, concretamente el de interpolar datos peridicos mediante un polinomio trigonomtrico adecuado; ms adelante estudiaremos otras aplicaciones. Interpolacin trigonomtrica. Tomando N muestras de una seal peridica f de perodo T en instantes separados por intervalos regulares, t0 = 0, t1 = T 2T kT (N 1)T , t2 = , . . . , tk = , . . . , tN 1 = , N N N N

conocemos los valores reales o complejos yk = f(tk ) que toma en estos puntos. Si queremos reconstruir la seal a partir de dichos valores y no tenemos otra informacin, lo ms sensato es aproximarla mediante una combinacin g(t) de funciones T -peridicas conocidas que tome en dichos puntos el mismo valor que f , o sea, tal que g(tk ) = yk para k = 0, 1, . . . , N 1. Este procedimiento se conoce como interpolacin trigonomtrica y se dice que g es la funcin que interpola los valores de la interpolacin yk en los nodos de interpolacin tk . 2 y, Las funciones T -peridicas que se utilizan son los armnicos complejos ejnt con = T puesto que hay N puntos, si queremos que el problema tenga solucin nica debemos combinar un total de N armnicos. El problema es, entonces, el siguiente: Dados N nodos tk = kT /N, con k = 0, 1, 2, . . . , N 1, igualmente espaciados en [0, T ] y sus correspondientes valores de interpolacin y0 , y1 , . . . , yN1 C, hallar una funcin g de la forma:
N1 1 1 X jt j2t j(N1)t + + N 1 e ejnt g(t) = + 1e + 2e = N 0 N n=0 n

tal que g(tk ) = yk para cada k = 0, 1, . . . , N 1. El factor 1/N que aparece delante no es ms que un convenio; lo incluimos para seguir la notacin habitual en los textos de procesado digital de seales. Los valores de interpolacin (yk ) son valores de la seal en el dominio del tiempo y los coecientes ( n ) estn en el dominio de la frecuencia; de hecho, los mdulos de estos coecientes nos dan el espectro de amplitudes de g. Para resolver el problema, imponemos las N condiciones y nos queda
N1 N1 N1 1 X 1 X 1 X jntk jnk2/N yk = e = e = wnk , N n=0 n N n=0 n N n=0 n N

k = 0, 1, . . . , N 1;

siendo wN = exp(j2/N) la raz primitiva N-sima de la unidad1 . Podemos expresar estas igualdades en forma matricial (mientras no haya lugar a confusin, suprimiremos el subndice N
En algunos textos se utiliza WN o bien N en vez de wN . En otros, se usa WN = exp(2j/N ). Hay que tener un poco de cuidado con esta cuestin.
1

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11 de wN y escribiremos w): 1 1 1 y0 1 y1 w w2 2 1 w y2 w4 . . . . 1 . . . . . . . . = N k w2k 1 w yk . . . . . . . . . . . . N1 2(N1) yN1 1 w w

... ... ... ...

1 wn w2n . . . wnk . . .

... ... ... ...

1 wN1 w2(N1) . . . w(N1)k . . .

. . . wn(N1) . . . w(N 1)(N1)

N 1 Deniciones. La matriz cuadrada que aparece en la igualdad anterior, FN = wnk n,k=0 , se 1 llama matriz de Fourier de orden N. Si expresamos dicha igualdad como y = N FN , entonces diremos que el vector es la transformada discreta de Fourier del vector y, lo que escribiremos como = DF T (y) (la notacin DF T proviene del ingls Discrete Fourier Transform), y que el vector y es la transformada inversa del vector , lo que escribiremos como y = IDF T (). Esta notacin tiene sentido ya que, como se deduce del teorema que enunciamos a continuacin, la transformada discreta de Fourier goza de existencia y unicidad. El paso de y, valores en el dominio del tiempo, a , coecientes en el dominio de la frecuencia, se suele llamar anlisis de Fourier y el paso de a y es la sntesis de Fourier. Es interesante observar que DF T (y) es independiente del perodo de la funcin cuyas muestras forman el vector y. Teorema. Sea FN la matriz de Fourier de orden N, es decir, la matriz cuadrada cuyo elemento (k, n) es wnk para n, k = 0, 1, . . . , N 1, siendo w = exp(j2/N ) la raz primitiva N-sima de la unidad. Entonces se verican: 1. FN es simtrica.

n . . . N1

0 1 2 . . .

2. Las columnas de FN son ortogonales dos a dos y tienen norma igual a N; es decir, la 1 matriz FN es unitaria. N N1 1 1 1 3. La inversa de FN es FN = FN = N wnk n,k=0 (el asterisco indica la matriz traspuesta N N y conjugada). Es decir, FN FN = NI. 4. La transformada discreta de Fourier de un vector y CN existe y es nica. Ms concretamente, = DF T (y) se obtiene mediante = FN y, con lo que sus componentes son: N1 X n = wnk yk n = 0, 1, . . . , N 1.
k=0

A partir de este teorema pueden deducirse las propiedades de la transformada discreta. Linealidad. La transformacin discreta de Fourier es lineal: Si y, z CN tienen transformadas = DF T (y) y = DF T (z) entonces para cualesquiera a, b C se tiene DF T (ay + bz) = a + b.

Leccin 5. Anlisis Discreto de Fourier

Relaciones de Plancherel y Parseval. Sean y, z CN con transformadas = DF T (y) y = DF T (z). Entonces se verica la relacin de Plancherel entre los correspondientes productos escalares: 1 (y, z) = (, ). N En particular (para z = y) se verica la igualdad de Parseval: 1 2 2 N1 2 . | 0 | + | 1 | + + |y0 | + |y1 | + + |yN1 | = N
2 2 2

1 En otras palabras, kyk2 = kk2 (donde kk2 es la norma eucldea). N Convolucin. A estas alturas del curso debe haber quedado claro que una de las operaciones matemticas avanzadas ms importantes es el producto de convolucin. Ya se ha visto la convolucin de seales continuas y veremos ms adelante la de seales discretas innitas. Veremos aqu la convolucin discreta de vectores y su relacin con la transformada discreta de Fourier. Denicin. Sean y, z dos vectores de dimensin N. Se dene su producto de como el vector z0 y0 + z1 yN1 + z2 yN2 + + zN2 y2 + zN1 y1 z0 y1 + z1 y0 + z2 yN1 + + zN2 y3 + zN1 y2 z0 y2 + z1 y1 + z2 y0 + + zN2 y4 + zN 1 y3 yz = . . . z0 yN2 + z1 yN3 + z2 yN4 + + zN2 y0 + zN1 yN1 z0 yN1 + z1 yN2 + z2 yN3 + + zN2 y1 + zN1 y0 convolucin y z .

Es decir, la n-sima componente de y z viene dada por cualquiera de las siguientes expresiones (y z)n = z0 yn + z1 yn1 + + zn y0 + zn+1 yN1 + + zN1 yn+1 n N1 X X X X = zj ynj + zj yN +nj = zj yk + zj yk .
j=0 j=n+1 j+k=n j+k=N+n

Es fcil ver que el producto de convolucin es lineal y conmutativo. La forma ms sencilla de analizar el producto de convolucin es expresarlo de forma matricial: z0 y0 yN1 yN2 . . . y2 y1 y1 y0 yN1 . . . y3 y2 z1 y2 y1 y0 . . . y4 y3 z2 yz = . . ... . . yN2 yN3 yN4 . . . y0 yN1 zN2 yN1 yN2 yN3 . . . y1 y0 zN1

Una matriz cuadrada como la anterior se llama circulante ya que los elementos de la primera columna van rotando su posicin en las columnas sucesivas. Observemos que tiene diagonales constantes y que el vector y ocupa su primera columna. Como esta primera columna nos permite

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

reproducir toda la matriz, diremos que es la matriz circulante generada por y. La relacin de las matrices circulantes con la transformada discreta de Fourier viene dada por el siguiente resultado. Autovalores de las matrices circulantes. Sea Cy la matriz circulante generada por el vector y CN . Entonces cada columna de la matriz de Fourier del mismo orden es un autovector de Cy cuyo autovalor es el correspondiente elemento de la transformada discreta de Fourier de y. En otras palabras, Cy es diagonalizable con matriz de paso FN : Cy FN = FN
1 Cy = FN FN

Cy =

1 FN FN N

siendo la matriz diagonal cuyos elementos diagonales son, en el mismo orden, los de DF T (y). Este teorema nos permite hallar el producto de convolucin usando las transformadas de Fourier directa e inversa: Sean = DF T (y), = DF T (z). Entonces (con la notacin anterior): y z = Cy z = 1 1 FN FN z = FN . N N

Observemos que es el vector que se obtiene multiplicando y coordenada a coordenada, ()n = n n . Este tipo de producto se conoce con el nombre de producto de Hadamard y lo denotaremos por . Nos queda: yz = 1 FN ( ) = IDF T ( ). N

En resumen, para calcular yz se hacen las transformadas de y y de z, se multiplican coordenada a coordenada y se hace la transformada inversa de este vector. De paso hemos probado el siguiente resultado. Corolario. Sean y, z CN . Entonces la transformada discreta de Fourier del producto de convolucin de y z es el producto de Hadamard de las correspondientes transformadas de y y de z: DF T (y z) = DF T (y) DF T (z). Aplicacin. La convolucin puede usarse para multiplicar polinomios. Si p(x) es un polinomio de grado m y q(x) es un polinomio de grado n, entonces su producto p(x)q(x) es un polinomio de grado m + n. Los coecientes de p(x)q(x) se pueden hallar de la siguiente manera: si escribimos dos vectores cp y cq que contienen los coecientes de p y q en potencias decrecientes de x y se rellenan con ceros hasta tener dimensin m + n + 1, entonces cp cq es el vector de los coecientes de p q en potencias decrecientes de x. Observacin. Si quisiramos calcular = DF T (y) resolviendo por eliminacin gaussiana el 1 sistema y = N FN , necesitaramos del orden de N 3 /3 multiplicaciones. Sin embargo, la multiplicacin = FN y ya slo requiere unas N 2 , lo que supone un ahorro considerable. Por ejemplo, si N = 128, pasamos de unas 700.000 multiplicaciones a unas 16.500; el 2.3%. Aun as, N 2 es un nmero de operaciones demasiado elevado para ciertas aplicaciones. Veremos en la siguiente seccin el algoritmo de la transformada rpida de Fourier, que nos permitir reducirnos todava ms: para N = 128, se nos queda en algo menos de 900!

Leccin 5. Anlisis Discreto de Fourier

El algoritmo FFT

El resultado esencial que nos permitir acelerar el clculo de la transformada discreta de un vector es el Teorema de Duplicacin que dice lo siguiente: Teorema de Duplicacin. Dado el vector y = (y0 , y1 , . . . , yN 1 )T de dimensin N = 2M, sean y 0 = (y0 , y2 , . . . , yN2 )T , y 00 = (y1 , y3 , . . . , yN1 )T , donde la T denota el vector transpuesto. Si las transformadas discretas de Fourier de y 0 e y 00 son, respectivamente, 0 = DF T (y 0 ) = ( 00 , 01 , . . . , 0M1 )T , 00 = DF T (y 00 ) = ( 00 , 00 , . . . , 00 )T , 0 1 M1 entonces las componentes de la transformada discreta de Fourier de y, = DF T (y), pueden obtenerse de la siguiente manera: para n = 0, 1, . . . , M 1 n = 0n + 00 wn , n M+n = 0n 00 wn , n

donde w = exp(j2/N) es la raz primitiva N-sima de la unidad.

Supongamos, por ejemplo, que N = 8. Para calcular DF T (y) usando el Teorema de Duplicacin necesitamos conocer las transformadas de sus mitades y 0 e y 00 que corresponden, respectivamente, a las coordenadas con ndice par y a las que lo tienen impar. En la etapa anterior, para calcular la transformada de y 0 usando el Teorema de Duplicacin, necesitamos las transformadas de los vectores [y0 , y4 ]T e [y2 , y6 ]T y algo anlogo para hallar la de y 00 . En una primera etapa necesitamos calcular las de vectores de dimensin 2 como los anteriores a partir de las de dimensin uno que son triviales: si dim(z) = 1 entonces DF T (z) = z. Esto se representa en el siguiente esquema: y0 y0 [y0 ] & y0 & [y4 ] % y4 y2 & y1 y2 y4 [y2 ] & y2 % y3 [y6 ] % y6 y6 y4 y1 [y1 ] & y1 & y5 [y5 ] % y5 y3 y5 % y6 [y3 ] & y3 % [y7 ] % y7 y7 y7

donde aparecen, en columnas de izquierda a derecha, los vectores cuyas transformadas se calculan en cada etapa. Las echas indican qu componentes de las correspondientes transformadas de una etapa anterior se necesitan para calcular una nueva mediante el Teorema de Duplicacin. Supongamos que N es una potencia de 2, N = 2r . La idea del algoritmo rpido es la siguiente: empezamos con las componentes sueltas (vectores de dimensin 1) y, durante r etapas, vamos calculando las transformadas de vectores cada vez el doble de grandes hasta terminar hallando la

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

transformada del vector inicial. Puesto que hay r etapas y en cada etapa se determinan un total de N coecientes cuyo clculo requiere una multiplicacin; el nmero total de multiplicaciones que hacen falta ser Nr = N log2 (N). Para N = 128 nos quedan 896 multiplicaciones. El Teorema de Duplicacin de la transformada discreta de Fourier, que es la base del algoritmo rpido, podemos interpretarlo matricialmente. La matriz F4 que permite calcular la transformada de Fourier de orden 4 se puede factorizar de la siguiente manera: 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 j 1 j 0 1 0 j 1 1 0 0 0 0 1 0 F4 = 1 1 1 1 = 1 0 1 0 0 0 1 1 0 1 0 0 . 0 1 0 j 0 0 1 1 0 0 0 1 1 j 1 j

La matriz de la derecha corresponde a la separacin de las coordenadas que ocupan posicin par de las que ocupan posicin impar, de forma que al aplicarla al vector y lo escribe como [y 0 , y 00 ]T . La segunda matriz es diagonal por bloques, y cada bloque es F2 ; el efecto de esta segunda matriz es calcular por separado las transformadas de y 0 e y 00 . Finalmente, la matriz de la izquierda corresponde al Teorema de Duplicacin: usa las transformadas de y 0 e y 00 para hallar la de y. En general, la aplicacin sucesiva del Teorema de Duplicacin consiste en una gigantesca factorizacin de la matriz FN en matrices que tienen una proporcin muy grande de elementos nulos y es por esto por lo que el ahorro en el nmero de operaciones es tan grande. Un aspecto importante de la programacin efectiva de este algoritmo es el siguiente: Si observamos el esquema anterior, resulta que las componentes originales del vector hay que desordenarlas en la etapa inicial para que la aplicacin sucesiva del Teorema de Duplicacin nos produzca la transformada deseada. Cmo tenemos que desordenar el vector al comienzo? Tukey se dio cuenta de que si escribimos en base 2 las posiciones (empezando desde la posicin cero) que ocupan las componentes al principio, entonces hay que desordenarlas haciendo que ocupen la posicin indicada por la expresin en dicha base despus de darle la vuelta. Por ejemplo, la componente y3 pasa a ocupar la posicin 6 porque 3 = (011)2 y (110)2 = 6. Podemos observar esto en el esquema siguiente (000) (100) (010) (110) (001) (101) (011) (111) [y0 ] [y4 ] [y2 ] [y6 ] [y1 ] [y5 ] [y3 ] [y7 ] y0 y4 y2 y6 y1 y5 y3 y7 y0 y2 y4 y6 y1 y3 y5 y7 y0 y1 y2 y3 y4 y5 y6 y7 (000) (001) (010) (011) (100) (101) (110) (111)

En el caso general, la reordenacin se hace mediante lo que se conoce como aplicacin de inversin binaria que es la permutacin N que intercambia la posicin cuyo ndice n {0, 1, . . . , 2r 1} se expresa en base 2 como n = (dr1 dr2 . . . d1 d0 )2 con la posicin cuyo ndice es (d0 d1 . . . dr2 dr1 )2 . Otro aspecto interesante de la programacin del algoritmo es que se pueden almacenar los datos intermedios a lo largo del mismo sin ocupar muchas posiciones de memoria. Tal como est

Leccin 5. Anlisis Discreto de Fourier

o sea, calculamos primero M+n . Una vez que hemos usado 00 ya no necesitamos ms este n nmero, as que podemos poner M+n en la posicin que ocupaba. Luego calculamos n = 2 0n M+n . Como 0n no se vuelve a usar, guardamos n en dicha posicin.

explicado, necesitamos 2N posiciones para almacenar la columna de una etapa y la de la siguiente. Podemos reducir este nmero a un slo vector de dimensin N si hacemos las operaciones de duplicacin en el siguiente orden: M+n = 0n 00 wn , n = 0n + 00 wn = 2 0n M+n ; n n

Algoritmo FFT. Para un vector y de dimensin N = 2r , el siguiente algoritmo calcula su transformada discreta de Fourier. (Notacin: y(k) es la componente k-sima del vector y, N es la aplicacin de inversin binaria en el conjunto {0, 1, ..., N 1}, wn es la raz primitiva n-sima de la unidad y a b signica almacenar b en la posicin que ocupa a.) Para n = 0, 1, . . . , N 1 : y (N (n)) yn . Para m = 1, 2, . . . , r : q 2m1 , Para k = 0, 1, . . . , q 1. k u w2q , Para n = 0, 1, . . . , N 1 con incremento 2q : y(n + k + q) y(n + k) u y(n + k + q), y(n + k) 2y(n + k) y(n + k + q).

Observaciones. (1) Cuando N no es una potencia de 2, existen algoritmos similares que usan teoremas de duplicacin anlogos al visto que se basan en la factorizacin de N en nmeros primos. (2) Puesto que la transformada inversa tiene una estructura matricial similar, tambin existe un algoritmo rpido de inversin llamado algoritmo IFFT.

Algunas aplicaciones de la transformada discreta de Fourier

Interpolacin trigonomtrica real. Cuando la funcin que interpolamos es una funcin real de perodo T , se hace deseable poder expresar el polinomio trigonomtrico interpolante de P 2 . Es decir, buscamos un polinomio la forma g(t) = n (an cos(nt) + bn sen (nt)) con = T trigonomtrico g(t) del menor grado posible tal que g(tk ) = yk para k = 0, 1, ..., N 1, siendo tk = kT /N e yk valores arbitrarios. Veamos cmo se hace esto. Supondremos que N = 2M es par y partimos del vector real y = (yk ) cuyas componentes son los valores de interpolacin. Calculamos su transformada discreta de Fourier = DF T (y) y obtenemos un polinomio interpolador
N1 1 1 X jt j2t j(N1)t h(t) = + + N1 e ejnt + 1e + 2e = N 0 N n=0 n

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

Ahora bien, en este caso es fcil ver que las coordenadas de verican: 0 , M R y n = Nn para n = 1, 2, . . . , M 1. Teniendo esto en cuenta vamos a escribir el polinomio h de la siguiente manera: Nh(t) = 0 + = 0 + = 0 + = 0 +
M1 X n=1 M1 X n=1 M1 X n=1 M1 X n=1

n ejnt + M ejMt + ne
jnt

n=M+1

+ M e

jMt

M1 X n=1 M1 X

2M1 X

n ejnt

N n ej(N n)t n ejnt ejNt 1 n ejnt ejNt + M ejMt ejNt . 2

n ejnt + M ejMt +

1 n ejnt + M ejMt + 2

Construimos una nueva funcin obtenida de la anterior suprimiendo las exponenciales de la forma ejNt del segundo sumatorio y del ltimo sumando aislado. Es decir, sea Ng(t) = 0 +
M1 X n=1

n=1 M1 X n=1

ne

jnt

M1 X 1 1 jMt + M e + n ejnt + M ejMt . 2 2 n=1

En los nodos de interpolacin tk = kT /N, se tiene exp(jNtk ) = exp(j2k) = 1, por tanto g toma en dichos nodos el mismo valor que h: g(tk ) = h(tk ) = yk (en otros puntos quizs toma un valor distinto). Vamos a ordenar un poco la expresin de g(t): Ng(t) = 0 +
M1 X n=1

Si usamos que ejnt = cos(nt) + jsen (nt) y que ejnt = cos(nt) jsen (nt), y escribimos n = n + j n , cada sumando queda n ejnt + n ejnt = (n + j n ) (cos(nt) + jsen (nt)) + (n j n ) (cos(nt) jsen (nt)) = 2n cos(nt) 2 n sen (nt). Por tanto, obtenemos el polinomio trigonomtrico real Ng(t) = 0 +
M1 X n=1

1 n ejnt + n ejnt + M ejMt + ejMt . 2

(2n cos(nt) 2 n sen (nt)) + M cos(Mt).

En resumen: si = DF T (y) y tomamos 0 2 Re( n ) 2 Im( n ) , an = , bn = N N N entonces el polinomio trigonomtrico a0 = g(t) = a0 +


M1 X n=1

(n = 1, 2, . . . M 1),

aM =

M , N

(an cos(nt) + bn sen (nt)) + aM cos(Mt)

10

Leccin 5. Anlisis Discreto de Fourier

satisface g(tk ) = yk para k = 0, 1, . . . , N 1. Un polinomio trigonomtrico escrito de la forma anterior se dice que est equilibrado. La razn de prescindir del trmino con sen (Mt) es que sen (Mtk ) = sen (Mk/M) = 0 con lo que esta funcin no aporta nada a la interpolacin. Observemos que hemos impuesto 2M condiciones y que tenemos que determinar un total de 2M coecientes: a0 , a1 , . . . , aM , por un lado, y b1 , . . . , bM1 , por otro. Estimacin de los coecientes de Fourier. Sea f una funcin peridica de perodo T que verica las condiciones de Dirichlet. Sabemos que, entonces, f puede representarse mediante su serie de Fourier X f(t) = cn ejnt ,
n=

donde =

2 y los coecientes de Fourier cn vienen dados por T Z 1 T f(t)ejnt dt para n = 0, 1, 2, . . . cn = T 0

Supongamos que la serie formada por los coecientes de Fourier es absolutamente convergente. P Es decir, que n |cn | < +. Nos proponemos estimar los coecientes de Fourier de f usando la transformada discreta de Fourier. Fijemos un nmero par N = 2M. Dividimos el intervalo [0, T ] kT para k = 0, 1, 2 . . . , N. en N subintervalos del mismo tamao con extremos en los puntos tk = N Para simplicar la notacin escribimos yk = f (tk ) para k = 0, 1, 2 . . . , N 1. Finalmente llamemos ( 0 , 1 , ..., N 1 ) = DF T (y0 , y1 , ..., yN1 ). Operando tenemos que ! ! N1 N1 N1 X X X X X kl kl kl f (tl )wN = cn ejntl wN = cn exp(jnl2/N) wN k = = N1 X X
l=0 l=0 l=0 nl kl cn wN wN = n=

n=

l=0

n=

n=

P P (nk)l (nk)l = 0 si n k no es un mltiplo de N y N1 wN = N si n k es Puesto que N1 wN l=0 l=0 un mltiplo de N obtenemos que k = N
X

cn

N1 X l=0

wN

(nk)l

ck+nN

n=

para k = 0, 1, ..., N 1.

Por consiguiente, para k = 0, 1, ..., N 1, concluimos que


X k ck = ck+nN = ... + ck2N + ckN + ck+N + ck+2N + .... N n=, n6=0

Es decir, la diferencia ck k depende de los valores de cn para n de la forma k pN, con p 6= 0. N Observemos que esto no implica que n sea grande. Basta tomar k = N 1. En la prctica slo usamos la anterior informacin para 0 k M. De esta forma, la diferencia ck k depende de N

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

11

Claramente, en general, k /N no es igual a ck . Las igualdades anteriores muestran que adems de ck puede haber contribuciones de frecuencias ms altas al valor de k . Este fenmeno usualmente se denomina aliasing. Puesto que la serie de los coecientes de Fourier es absolutamente convergente, deducimos que las mencionadas contribuciones de las altas frecuencias en las igualdades anteriores tienden a cero cuando N tiende a innito. Hasta ahora todo el estudio para aproximar las coecientes de Fourier ck usando la transformada discreta de Fourier es vlido para k = 0, ..., N 1. Pensemos por un momento lo que ocurre con k para k prximo a N. Recordemos que, si f es real, se tiene que Nk = k para 1 k = 1, ..., M 1. Por tanto, N 1 = N1 c1 y esta aproximacin es independiente del valor de N N. Por otro lado, la sucesin ck converge a cero cuando k tiende a innito. Esto hace que no debamos aproximar cN1 por N 1 ya que este valor se mantiene casi constante. En la prctica, N lo que se hace es usar la aproximacin ck k para k = 0, ..., M 1. N Si adems sabemos que f es real, entonces tenemos que ck = ck k N para k = 0, ..., M 1

cn para Pde la forma k pN donde |k pN| pN k M. En estas condiciones, puesto que n la serie n |cn | es convergente, para N sucientemente grande tenemos que ck k . N

con lo que obtenemos aproximaciones para ck con k = (M 1), (M 2), ..., 0, ..., M 1. Estimacin de la transformada de Fourier. Sea f : R R una funcin que satisface las condiciones de Dirichlet para la integral de Fourier y sea Z F () = f ( )ej d

su transformada de Fourier. Hay varios procedimientos muy utilizados para estimar el valor de F () a partir de una coleccin nita de muestras de la funcin f. El primer paso es elegir el intervalo de tiempo [t0 , t1 ] en el que vamos a tomar las muestras, teniendo en cuenta que los valores de f(t) deben ser sucientemente pequeos antes de t0 y despus de t1 . Supongamos que t0 = 0 (si no fuera as hacemos una traslacin, estimamos los valores de la transformada de Fourier de la funcin trasladada y usamos la propiedad correspondiente para estimar la transformada de Fourier de la funcin de partida) y que dichas muestras estn tomadas a intervalos regulares de duracin T segundos, de manera que los valores que tenemos son y0 = f(0), y1 = f (T ), y2 = f(2T ), . . . , yk = f(kT ), . . . , yN1 = f((N 1)T ). Ahora aproximamos la integral que dene la transformada de Fourier de f (t) mediante una suma de Riemann en [0, NT ]: F () = Z

f ( )ej d

N 1 X k=0

f (kT )ejkT T = T

N1 X k=0

yk ejkT .

Para permitir la evaluacin computacional de F () se trabaja slo con estimaciones F (n ) obtenidas para un nmero nito de valores de la frecuencia. Si estos valores los tomamos de la

12 siguiente manera 0 = 0, 1 =

Leccin 5. Anlisis Discreto de Fourier

2 4 2n 2(N 1) , 2 = , . . . , n = , . . . , N1 = , NT NT NT NT

es decir, separados por una frecuencia constante de (NT )1 hertzios, entonces para cada n = 0, 1, 2, . . . , N 1 tenemos F ( n ) T Es decir, (F (0 ), F (1 ), . . . , F ( N1 )) T DF T (f(0), f(T ), f(2T ), . . . , f (2(N 1)T )) . En resumen, la transformada discreta de Fourier nos permite convertir la muestra digital (yk = f (kT )) en el dominio del tiempo en un conjunto de puntos (F ( n )) que aproximan el contenido en frecuencias de f(t). Que estas aproximaciones sean buenas o no depende de la velocidad de muestreo de la funcin f(t); a ms velocidad, mejor aproximacin. De hecho, puesto que los puntos en los que tomamos muestras estn igualmente espaciados en el intervalo temporal [0, NT ], los coecientes calculados con la transformada discreta corresponden a frecuencias separadas por (NT )1 Hz. La eleccin de la frecuencia de muestreo para generar una seal digital debe hacerse con cuidado para evitar aliasing, un problema que aparece cuando se muestrea muy lentamente. El Teorema del Muestreo de Nyquist y Shannon, nos dice que para reproducir adecuadamente una seal de frecuencia limitada debemos tomar muestras al menos el doble de rpido que la frecuencia ms alta presente en la propia seal, lo que se conoce como frecuencia de Nyquist 2 de la seal. Es decir, T 1 debe ser al menos el doble de la frecuencia de Nyquist. Cuando la seal es real y el nmero de muestras es par N = 2M, entonces las coordenadas de = DF T (y) verican: 0 , M R y n = Nn para n = 1, 2, . . . , M 1 (prueba esto como ejercicio); eso quiere decir que la informacin de la segunda mitad de las coordenadas de es redundante. Correlacin. Supongamos que una instalacin de radar barre una cierta regin del espacio transmitiendo una seal discreta (x[k]) desde su antena. Si dicha seal alcanza un objeto, sta rebotar y ser recogida por el receptor como un eco dbil (y[k]) de la seal original contaminado con ruido, por ejemplo y[k] = x[k d] + v[k],
N1 X k=0

yk e

jn kT

=T

N1 X k=0

yk e

j2nk

=T

N1 X k=0

nk yk wN .

donde es una factor de atenuacin, x[k d] es la seal original afectada por un retraso y v[k] representa el ruido. Nuestro problema es examinar el parecido entre la seal transmitida (x[k]) y la seal recibida (y[k]) para detectar si sta es, de verdad, un eco de la primera, en cuyo caso podemos estimar la distancia del objeto a partir del retraso d y la velocidad de propagacin. Para resolver este problema se utiliza la nocin de correlacin de dos seales. Denicin. La correlacin cruzada (o, simplemente, correlacin) de dos vectores x, y CN es el vector z denido por z = (Cx )T y,
En algunos textos se reserva el nombre de frecuencia de Nyquist para el doble de la frecuencia ms alta presente en la seal.
2

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11 donde Cx es la matriz circulante denida por el vector x. En otros trminos, y0 x0 x1 x2 . . . xN2 xN1 xN1 x0 x1 . . . xN3 xN2 y1 xN2 xN 1 x0 . . . xN4 xN3 y2 z= . . ... . . x2 x3 x4 . . . x0 x1 yN2 x1 x2 x3 . . . xN1 x0 yN1

13

Es decir, la n-sima componente de z viene dada por cualquiera de las siguientes expresiones zn = xNn y0 + xNn+1 y1 + + xN1 yn1 + x0 yn + x1 yn+1 + + xNn1 yN1 n1 N 1 X X = xNn+k yk + zkn yk .
k=0 k=n

Transformada Discreta de Fourier de la Correlacin. Sean x e y dos vectores de dimensin N y sea z su correlacin. Entonces DF T (z) = DF T (x) DF T (y). Volviendo al problema del rdar: Es posible comprobar que cuando la seal recibida (u[k]) es un retraso (x[k d]) de la seal enviada (x[k]), entonces d es la posicin en la que se alcanza el mximo de los mdulos de las componentes de la correlacin de x e y. Por lo tanto, aunque en la prctica la seal recibida y puede venir atenuada y afectada por ruido, dicho valor del retraso (una vez calculada la correlacin mediante los algoritmos rpidos) es el que se utiliza para estimar la distancia del objeto, que vendr dada por cdT /2, donde c es la velocidad de propagacin de la seal, T es el intervalo de tiempo entre dos componentes consecutivas de la seal y el 2 indica que la seal ha hecho un viaje de ida y vuelta. Sistemas discretos. Supongamos que tenemos un sistema que recibe y emite seales de forma discreta en los instantes temporales t = . . . , 2T, T, 0, T, 2T, . . . , donde T es el intervalo (constante) entre dos instantes seguidos. El sistema acta del siguiente modo: cuando recibe una seal discreta de entrada (input) y = (y[n]), su respuesta es una seal discreta de salida (output) b = (b[n]) = S(y). S y = (y[n])nZ b = (b[n])nZ . El problema que nos plantearemos es el siguiente: Queremos hallar una seal desconocida y = (y[n]), conociendo la respuesta de nuestro sistema a dicha seal b = S(y). Analizaremos este problema haciendo las siguientes hiptesis fundamentales: (1) El sistema es lineal: las respuestas a seales separadas se suman y la respuesta a una seal amplicada y es veces la respuesta a y. (2) El sistema es invariante por traslaciones temporales: si dos seales se obtienen una de otra mediante una traslacin en el tiempo, sus respuestas se obtienen una de otra mediante la misma traslacin. O sea, si la seal (y[n]) produce una respuesta b([n]), entonces la seal x denida por x[n] = y[n k] produce la respuesta c dada por c[n] = b[n k].

14

Leccin 5. Anlisis Discreto de Fourier

En muchas ocasiones el sistema es causal: transforma seales causales en seales causales lo que quiere decir que el efecto no precede a la causa, es decir no hay respuestas anteriores. Nosotros no haremos esta suposicin, por ahora. P Escribamos la seal y mediante un tren de impulsos: y = y[n] n y supongamos que conocemos la respuesta (a[n]) de nuestro sistema a un impulso unidad en el instante cero, es decir, que la seal 0 produce la respuesta a[n] en el instante nT . Esto es, hay una respuesta inmediata a[0], a la que siguen a[1], a[2], . . . , y tambin consideraremos la posibilidad de que existan respuestas anteriores a[1], a[2], . . . , que aparecen, por ejemplo, en sistemas con realimentacin o con regularizacin. La invariancia por traslaciones signica, en particular, que la respuesta a la seal k es la seal ak denida por ak [n] = a[n k]. Entonces, empleando primero la linealidad y luego la invariancia por traslaciones, tendremos: b = S(y) = =
X X

y[n]S( n )
X

y[n]

n=

k=

a[k n] k

k=

n=

a[k n]y[n] k ,

o sea, el elemento k-simo de la respuesta b es: b[k] = o, en trminos de convolucin, b = a y. En resumen, si tenemos un sistema lineal e invariante en el tiempo cuya respuesta a un impulso unidad en t = 0 es la seal a = (a[n]), entonces la respuesta a una seal de entrada y es el producto de convolucin y a. Usaremos esto para resolver el problema planteado cuando las seales son peridicas. Es fcil ver que si la seal de entrada y es peridica con perodo N, entonces la de salida b tambin lo es. En este caso lo que nos interesa de ambas seales es tan slo el primer bloque de N valores: y (N) = (y[0], y[1], . . . y[N 1]) , b(N) = (b[0], b[1], . . . b[N 1]) .
X

n=

a[k n]y[n]

Puede probarse que se tiene la siguiente relacin b(N) = y (N) , siendo el producto de convolucin de vectores de CN y CN el vector dado por: n =
X

a[n + kN],

k=

n = 0, 1, 2 . . . , N 1.

Donde representa el cociente coordenada a coordenada.

Entonces, usando las propiedades que relacionan la convolucin de vectores con la transformada discreta de Fourier, se tiene: DF T b(N) = DF T () DF T y (N) y (N) = IDF T DF T b(N) DF T () .

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

15

La igualdad anterior tambin nos permite resolver de forma anloga el problema de hallar conocidos la entrada peridica y y su respuesta b. En este caso, lo que hallamos son los valores de pero no los valores de a. Si sabemos que a[n] = 0 para valores grandes (en valor absoluto) de n, digamos para |n| > M, entonces podemos hallar todos los valores no nulos de a tomando N > 2M + 1. Asimismo, si conocemos e y y queremos hallar b, es mejor usar la expresin b(N) = IDF T DF T () DF T y (N)

ya que las tres transformadas que aparecen hechas con el Algoritmo FFT comprenden muchas menos operaciones que el producto y.

Ejercicios

Ejercicio 1. Calcula la transformada discreta de Fourier del vector y = [1, 0, 2, 1, 2, 0, 1]T y esboza el espectro de amplitudes correspondiente. Ejercicio 2. Enuncia y demuestra el Teorema de Duplicacin para la inversa de la transformada discreta de Fourier. Ejercicio 3. Prueba que si el vector y es real y de dimensin par N = 2M, entonces las coordenadas de = DF T (y) verican: 0 , M R y n = N n para n = 1, 2, . . . , M 1. Ejercicio 4. De una funcin peridica de perodo 2 se conocen sus valores en los puntos 0, /2, y 3/2 que son, respectivamente, 2, 4, 6 y 8. Usando la transformada discreta de Fourier, calcula el valor aproximado de dicha funcin en /4 interpolando mediante un polinomio trigonomtrico. Ejercicio 5. Un cierto da, la marea en Cdiz se comporta de acuerdo con el siguiente esquema (en el que h y m signican horas y metros, respectivamente): 6 h 10 h 14 h 4.6 m 9m 10.7 m

suponiendo un perodo de 12 horas, interpola esta tabla mediante la transformada discreta de Fourier para aproximar el comportamiento de la marea a las 8 h y a las 15 h. Ejercicio 6. Se ha registrado la siguiente gama de temperaturas en intervalos de 6 horas a partir de la media noche: 11 , 17 , 32 y 23 . Usa la transformada discreta de Fourier para interpolar la temperatura a las 9 de la maana y a las 3 de la tarde. Ejercicio 7. Se ha registrado la siguiente gama de temperaturas en intervalos de 2 horas a partir de la media noche: 11 , 10 , 8 , 7 , 11 , 15 , 21 , 25 , 27 , 27 , 19 , 15 . Usa la transformada discreta de Fourier para interpolar la temperatura a las 9 de la maana, a las 5 de la tarde y a las 11 de la noche.

16

Leccin 5. Anlisis Discreto de Fourier

Nota. Para los siguientes ejercicios deberas hacer un pequeo programa de ordenador que te permita calcular transformadas discretas de Fourier directas e inversas. Los paquetes de programas Maple V y Matlab tienen incorporado tanto el clculo directo como el inverso, mediante las instrucciones t e it. Ejercicio 8. Considera la funcin f denida en [0, 2] por f (x) = x(x 2)ex y extendida peridicamente a toda la recta real. (1) Determina el polinomio trigonomtrico T8 que interpola a f en los puntos 0, 0.25, 0.5, 0.75, . . . y 1.75 del intervalo [0, 2]. (2) Determina el polinomio trigonomtrico T16 que interpola a f en los puntos 0, 0.125, 0.25, 0.375, . . . y 1.875 del intervalo [0, 2]. (3) Es signicativa la diferencia entre T8 y el polinomio que resulta de truncar T16 en su octavo armnico? Justica la respuesta y trata de dar una interpretacin del resultado. Ejercicio 9. Se nos enva una seal f(t) que es una combinacin de armnicos puros de perodo 1: 7 X f (t) = (an cos(2nt) + bn sen (2nt)) .
n=0

Sin embargo, la seal llega contaminada por un ruido aleatorio y debemos eliminarlo. Para ello tomamos 16 muestras de la seal en instantes separados por 1/16 segundos y obtenemos los siguientes valores que constituyen el vector y (la primera la son los cuatro primeros, etc.) 3.9894 4.7119 1.4207 3.5892 2.0137 3.5936 1.4349 4.6775 3.9645 1.0276 1.4022 2.0540 6.0159 2.0187 1.3816 0.9882 Limpia la seal interpolando estos valores mediante un polinomio trigonomtrico y eliminando las frecuencias cuyos coecientes sean sucientemente pequeos. Ejercicio 10. Considera los polinomios p(x) = 1 + 3x3 8x6 + 2x12 + x20 x31 , q(x) = 1 x + 2x2 3x3 + 4x4 + 30x30 31x31 , r(x) = 1 + 2x + 3x2 + 4x3 + + 40x39 .

Cules son los coecientes de las potencias 3, 18, 30, 45, 70, 92 y 101 del polinomio que se obtiene al multiplicar los anteriores, p(x) q(x) r(x)? Ejercicio 11. Toma tres de tus funciones peridicas favoritas y aproxima sus 16 primeros coecientes de Fourier complejos mediante la transformada discreta de Fourier. Ejercicio 12. Toma tres de tus funciones no peridicas favoritas y aproxima su transformada de Fourier en 16 valores de la frecuencia mediante la transformada discreta de Fourier.

Ampliacin de Matemticas (Ingeniera de Telecomunicacin) Curso 2010/11

17

Ejercicio 13. Toma pares de vectores de dimensin 4 arbitrarios y calcula su correlacin cruzada. Ejercicio 14. Tenemos un sistema lineal e invariante en el tiempo que recibe y emite seales cada segundo y regulariza la seal de entrada dando como salida en un instante un cierto valor medio ponderado de las 4 entradas anteriores a la del mismo instante (incluida sta); o sea, un proceso de smoothing basado slo en los datos del pasado reciente. Concretamente, la respuesta a 0 es . . . , 0, 0, 0.4 , 0.3, 0.2, 0.1, 0, 0, . . . , donde el recuadro corresponde a la posicin cero. Si la salida a una cierta entrada es la siguiente seal peridica de perodo 8 1, Cul es la seal de entrada? Ejercicio 15. Tenemos un sistema lineal e invariante en el tiempo que recibe y emite seales digitales. Este sistema acta como un ltro que se realimenta y regulariza la seal de entrada promedindola ponderadamente con las dos anteriores y las dos posteriores. Concretamente, la respuesta al impulso unidad 0 es . . . , 0, 0, 0.1, 0.2, 0.4 , 0.2, 0.1, 0, 0, . . . , donde el recuadro corresponde a la posicin cero. La salida a una cierta entrada es la siguiente seal peridica de perodo 8 ..., 1 , 1.7, 1.8, 2.4, 1.6, 1.3, 0.4, 0.8, ... . 1, 4, 3, 2, 2, 7, 3,

(1) Cul es el vector que da la relacin entre los bloques peridicos de la salida y la entrada? (2) Cul es la seal de entrada? (3) Cuntas operaciones han hecho falta para hallarla? Ahora se cambian los coecientes de ponderacin del ltro de manera que de una entrada peridica de perodo 8 ..., se obtiene una salida ..., 1.5 , 1.1, 0.8, 1.7, 2.2, 1.3, 1.3, 1.1, ... . 2 , 1, 0, 2, 3, 1, 1, 1, ...

(4) Cul es la respuesta de este nuevo ltro al impulso unidad 0 ? Ejercicio 16. Consideremos una seal discreta peridica x = (xn ) de perodo N = 24 cuyo bloque principal x(N) consiste en 24 muestras de la funcin f (t) = 6 cos(2t) + 3 cos(10t) + 2 cos(12t) tomadas cada T = 1/24 segundos a partir de t = 0.

18

Leccin 5. Anlisis Discreto de Fourier Luego transformamos la seal x en otra seal y = (yn ) dada por 1 1 1 1 1 yn = xn2 + xn1 + xn + xn+1 + xn+2 , 8 4 2 4 8 n Z.

(1) Escribe los primeros 5 valores de la seal x. (2) Escribe la relacin de convolucin que existe entre las seales x e y. (3) Cmo se emplea la transformada discreta de Fourier para pasar de x a y? Escribe los valores y0 , y1 , . . . , y4 . (4) Cules son los armnicos presentes en la seal y? Ejercicios y cuestiones de exmenes de cursos anteriores. Ejercicio 17. Sabiendo que 1 0 DF T (x) = 1 3 j j DF T (y) = 0 2

calcula el producto de convolucin x y.

Ejercicio 18. Usa la Transformada Discreta de Fourier para aproximar el valor de la transformada de Fourier de la seal 0 si t < 0 f (t) = 4 t te si t 0, en las frecuencias = 0, 1, 2 y 3.

Bibliografa

Para desarrollar esta leccin pueden consultarse los siguientes textos. [51:62/ADV] G. James, Advanced Modern Engineering Mathematics, Cap. 3 y 5. [517.5/WUN] W.A. Wunsch, Variable Compleja con Aplicaciones, Cap. 5.

S-ar putea să vă placă și