Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Analisis de Fourier

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Captulo 9

Analisis de Fourier

Contenidos del captulo


9.1. La transformada de Fourier discreta y la FFT . . . . . . . 129
9.2. Marcacion por tonos . . . . . . . . . . . . . . . . . . . . . . 131
9.3. La frecuencia de Nyquist . . . . . . . . . . . . . . . . . . . . 133
9.4. Manchas solares . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.5. Analisis de series temporales periodicas . . . . . . . . . . . 137

Todos nosotros usamos a diario el analisis de Fourier incluso sin conocerlo. Tele-
fonos moviles, discos duros, DVDs, JPEGs . . . todos ellos involucran transformadas
rapidas de Fourier (FFT). Por ello, este captulo pretende discutir tanto el calculo
como la interpretacion de la FFT.

9.1. La transformada de Fourier discreta y la FFT


La transformada de Fourier discreta de un vector y (real o complejo) con n ele-
mentos es otro vector Y complejo con n elementos,
n1

Yk = wjk yj
j=0

donde w es la n-esima raz compleja de la unidad,


w = e2i/n

y donde i = 1 es la unidad compleja, mientras que j y k son ndices que se mueven
desde 0 a n 1.
La transformada discreta de Fourier puede expresarse en la notacion de matriz-
vector que es tan habitual dentro del lenguaje Matlab
Y = Fy
donde la matriz de la transformada discreta de Fourier F tiene por elementos
Fk,j = wjk = e2ijk/n .
En Matlab, la matriz de Fourier F puede ser facilmente generada para cualquier
dimension n mediante

129

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
130 Herramientas informaticas de las matematicas en ingeniera

omega = exp(-2*pi*i/n);
j = 0:n-1;
k = j;
F = omega.(k*j)

Tengase en cuenta que el resultado del producto k*j es una matriz n n cuyos
elementos son los productos de los elementos de los dos vectores.
Sin embargo, esta aplicacion directa en forma matricial de la denicion
n1

Yk = wjk yj , k = 0, . . . , n 1
j=0

requiere n multiplicaciones y n sumas para cada una de las n componentes de Y ,


lo que hace un total de 2n2 operaciones en coma otante sin incluir la generacion
de las potencias de w. Transformadas de Fourier unidimensionales de un millon de
puntos, o bi-dimensionales sobre matrices de 1000 1000 elementos, son comunes en
la practica, por lo que la aplicacion del algoritmo de O(n2 ) en un ordenador capaz
de hacer una multiplicacion y una suma cada microsegundo requerira un millon
de segundos, aproximadamente 11.5 das, en realizar una de estas tranformadas de
Fourier.
La base del analisis de senal moderno y del procesamiento de imagen es la habili-
dad de realizar estos calculos rapidamente. Distintos investigadores descubrieron de
manera independiente diferentes algoritmos para realizar transformadas de Fourier
rapidas (Fast Fourier Transforms, FFT), aunque el artculo de 1965 rmado por John
Tukey de la Universidad de Princeton y John Cooley de IBM Research esta aceptado
como el punto de arranque de la utilizacion moderna de la FFT. Estos algoritmos mo-
dernos para la FFT tienen complejidad computacional O(n log2 n) en vez de O(n2 ),
lo que supone que si n = 220 el algoritmo sea un factor de 35.000 veces mas rapido
que O(n2 ). Incluso si n = 1024 = 210 el factor es sobre 70.
La clave de estos algoritmos rapidos FFT es el hecho de que el cuadrado de la
2n-esima raiz de la unidad es la n-esima raz de la unidad. Usando notacion compleja

w = wn = e2i/n

tenemos que
2
w2n = wn
La obtencion del algoritmo rapido parte de la denicion de la transformada rapida
de Fourier
n1

Yk = wjk yj , k = 0, . . . , n 1
j=0

Asumamos que n es par y dividamos la suma anterior en dos terminos, uno con los
subndices pares y otros con los subndices impares
 
Yk = wjk yj + wjk yj
j par j impar
n/21 n/21
 
= w2jk y2j + wk w2jk y2j+1
j=0 j=0

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
Analisis de Fourier 131

Las dos sumas de la derecha son las componentes de las FFTs de longitud n/2 de las
porciones de y con subndices pares e impares. Lo que hemos hecho en vez de calcular
la FFT completa de longitud n son dos FFTs de longitud n/2 cada una, multiplicar
una de estas porciones por las potencias de w y concatenar los resultados. Notese
que con ello pasamos de 2n2 a {2(n/2)2 + 2(n/2)2 + n} = n2 + n operaciones, lo que
supone practicamente reducir a la mitad en un solo paso el numero de calculos.
Ahora, si n no es solo par sino tambien una potencia de 2, el proceso puede ir
repitiendose de forma recursiva. La transformada de longitud n se expresa en terminos
de dos FFTs de longitud n/2, a continuacion como cuatro FFTs de longitud n/4,
equivalentemente ocho FFTs de longitud n/8 y sucesivamente hasta lograr n FFTs
de longitud uno, dado que la FFT de longitud uno (de un numero) es el propio numero
en cuestion. Gracias a esta recursividad es como se logra convertir la complejidad del
calculo de la FFT de O(n2 ) a O(n log2 n). Si n no es una potencia de 2, todava
es posible expresar la FFT de longitud n en terminos de otras FFTs de longitud
menor. Por ejemplo, una FFT de longitud 100 puede expresarse como dos FFTs de
longitud 50, o cuatro FFTs de longitud 25, y cada FFT de longitud 25 en terminos
de cinco FFTs de longitud 5. Obviamente, cuanto mayores sean los primos en los que
se divide la longitud inicial peor sera el rendimiento de la FFT, pero olvidad el falso
mito de que las FFTs de vectores con longitud de una potencia de 2 son siempre
las mas rapidas: el numero de subdivisiones a realizar por el algoritmo (directamente
relacionado con el numero de accesos a memoria) tambien juega un papel fundamental
en su rendimiento.

9.2. Marcacion por tonos


La marcacion por tonos constituye un ejemplo cotidiano al que puede ser aplicado
el analisis de Fourier. Esta marcacion por tonos se encuentra basada en el sistema
multifrecuencia de tonos duales (Dual Tone Multi-Frequency system, DTMF), donde
el teclado del telefono actua como una matriz 4 3 con una frecuencia asociada a
cada la y a cada columna (Fig. 9.1). Estas frecuencias basicas son

fr = [697 770 852 941];


fc = [1209 1336 1477];

de modo que el tono generado por el boton situado en la posicion (k,j) se obtiene
superponiendo los dos tonos fundamentales con frecuencias fr(k) y fc(j):

y1 = sin(2*pi*fr(k)*t);
y2 = sin(2*pi*fc(j)*t);
y = (y1 + y2)/2;

El chero de datos touchtone.mat contiene la grabacion de un numero de


telefono que ha sido marcado (Fig. 9.2). Es posible identicar dicho numero? La
orden

load touchtone

carga al espacio de trabajo tanto una senal y como su frecuencia de muestreo Fs.
Con el n de reducir el tamano del chero, el vector y se encuentra almacenado como
enteros de 8-bits con sus componentes en el rango 127 yk 127. Por ello la
instruccion

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
132 Herramientas informaticas de las matematicas en ingeniera

y = double(y)/128;

reescala el vector y lo convierte a doble precision para su posterior uso. Las ordenes

n = length(y);
t = (0:n-1)/Fs;

reproducen los tiempos para los cuales ha sido muestreada la senal. La ultima compo-
nente de t es 9.1309, indicando que la grabacion dura poco mas de nueve segundos.
La parte superior de la Fig. 9.2 es el trazado de la senal completa. Esta senal es
ruidosa, incluso pueden verse pequenos picos en el graco correspondiendose a los
tiempos en los que los botones fueron pulsados. Es facil de ver que un total de once
dgitos fueron marcados, aunque en esta escala es imposible determinarlos. La parte
inferior de la misma gura muestra la magnitud de la FFT, Fast Fourier Transform,
de la senal, que sera la base para determinar cada uno de los dgitos. Este graco fue
producido mediante

Y = fft(y);
f = (0:n-1)*Fs/n;
plot(f,abs(Y));
axis([500 1700 0 600]);

donde el eje-x se corresponde con la frecuencia y sus lmites han sido jados para
mostrar el rango de frecuencias del sistema DTMF. Este graco de la FFT de la senal
completa muestra que siete frecuencias se hayan presentes a lo largo de la senal, pero
no ayuda a determinar los dgitos individuales.
Sin embargo, esto puede lograrse dividiendo la senal en trozos y analizando cada
uno de los segmentos como una senal independiente. La Fig. 9.3 muestra el analisis
del primer segmento.

y1 = y(1:6400);
t1 = t(1:6400);
n1 = length(y1);
f1 = (0:n1-1)*Fs/n1;
plot(f1,abs(fft(y1)));

697
ABC DEF
1 2 3
GHI JKL MNO
770
4 5 6
852
PRS TUV WXY
7 8 9
OPER
941
* 0 #
1209 1336 1477

Figura 9.1: Teclado telefonico con las frecuencias asociadas a cada la y columna.

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
Analisis de Fourier 133

1
0 1 2 3 4 5 6 7 8 9
Tiempo (s)
600

400

200

0
600 800 1000 1200 1400 1600
Frecuencia (Hz)

Figura 9.2: (Arriba) Grabacion de un numero de telefono de 11 dgitos. (Abajo) Transfor-


mada de Fourier de la senal grabada.

1
0 1 2 3 4 5 6 7 8 9
1

1
0.4 0.405 0.41 0.415 0.42 0.425 0.43 0.435 0.44
300
200
100
0
600 800 1000 1200 1400 1600

Figura 9.3: El primer segmento de la senal y su FFT.

Para este segmento hay unicamente dos picos en su FFT, indicando que solo dos
de las frecuencias basicas estan presentes en esta porcion de la senal. Como puede
extraerse de la Fig. 9.1, estas dos frecuencias provienen del boton 1, de modo que
puede concluirse que el numero marcado en touchtone comienza con un 1. Uno de
los ejercicios propuestos pide continuar el analisis e identicar el numero de telefono
completo.

9.3. La frecuencia de Nyquist


Cuando en la practica tiene que muestrearse una senal el parametro crtico es la
eleccion de la frecuencia de muestreo. Aparentemente es razonable pensar que, para
poder registrar toda la informacion necesaria de lo que esta ocurriendo en el sistema,

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
134 Herramientas informaticas de las matematicas en ingeniera

100 100

80 80
abs(fft(y1))

abs(fft(y2))
60 60

40 40

20 20

0 0
0 5 10 15 20 25 0 5 10 15 20 25
Frecuencia (Hz) Frecuencia (Hz)

Figura 9.4: (Izquierda) Transformada de Fourier de una senoidal de frecuencia 5 Hz mues-


treada a 25 Hz. (Derecha) Transformada de Fourier de una senoidal de frecuencia 20 Hz
muestreada a 25 Hz.

la frecuencia de muestreo debe ser al menos igual a la frecuencia mas rapida presente
en el mismo. Como veremos, en realidad la restriccion es mayor de lo que intuitiva-
mente nos puede parecer razonable. Tomemos como ejemplo dos senales senoidales
de frecuencias 5 y 20 Hz, ambas muestreadas a una misma frecuencia de 25 Hz, y
representemos sus transformadas de Fourier:

Fs = 25;
dt = 1/Fs;
t = 0:dt:10;
y1 = sin(2*pi*5*t);
y2 = sin(2*pi*20*t);
n = length(y1);
f = (0:n-1)*Fs/n;
subplot(1,2,1); plot(f,abs(fft(y1)),b);
subplot(1,2,2); plot(f,abs(fft(y2)),r);

Como puede apreciarse en la Fig. 9.4 ambas senales poseen identicas transforma-
das de Fourier, a pesar de que las dos han sido muestreadas con una frecuencia mas
rapida que la frecuencia de la propia senal. Por lo tanto, con un analisis de Fourier
no seramos capaces de discriminar entre ambas senales Signica esto que la trans-
formada de Fourier deja de ser una herramienta valida de analisis? La respuesta es
no, tan solo que la segunda senal no ha sido sampleada correctamente.
La explicacion a lo que esta ocurriendo puede extraerse facilmente de la Fig. 9.5,
en donde la senal de 5 Hz aparece dibujada en azul y la de 20 Hz en rojo, y los puntos
sobre ambas senales se corresponden a los instantes en los que se muestrea la senal.
Vease que los datos muestreados son completamente simetricos respecto al eje y = 0,
por lo que se verica, para esta frecuencia de muestreo, la relacion y2 = y1 . Es por
tanto obvio que si ambas senales son iguales salvo multiplicadas por un escalar ambas
tendran el mismo contenido armonico.
Lo que hemos aprendido de forma cualitativa en esta seccion aparece plasmado
formalmente en el teorema de Nyquist, que puede expresarse de forma simplicada
como: la frecuencia de muestreo de un sistema debe ser, como mnimo, el doble de la
frecuencia mas rapida presente en el mismo. A la mitad de la frecuencia de muestreo
se la conoce como frecuencia de Nyquist, Fn = Fs/2. Vease, por ejemplo en la Fig.
9.4, que la transformada de Fourier de una senal presenta simetra en torno a esta

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
Analisis de Fourier 135

0.5

0.5

1
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

Figura 9.5: Explicacion graca del fenomeno de Nyquist

frecuencia de Nyquist, por lo que las transformadas de Fourier suelen representarse


solo en el rango [0 Fn]. De manera mas exacta, si y es cualquier vector real (cual-
quier senal fsica que haya sido medida) de longitud n e Y = t(y), entonces:

real(Y0 ) = yj
imag(Y0 ) = 0
real(Yj ) = real(Ynj ), j = 1,. . . ,n/2
imag(Yj ) = -imag(Ynj ), j = 1,. . . ,n/2.

9.4. Manchas solares


Durante siglos los astronomos han notado que la supercie del sol no es constan-
te o uniforme en apariencia, y que ciertas regiones oscuras aparecen en posiciones
aleatorias con una base cclica, habiendose demostrado una fuerte correlacion de esta
actividad con el tiempo y otros fenomenos terrestres de elevada importancia economi-
ca. En 1848, Rudolf Wolfer propuso una regla que combinaba el numero y el tamano
de estas manchas solares en un unico ndice. Usando archivos historicos, los astrono-
mos aplicaron la regla de Wolfer para determinar la actividad de las manchas solares
desde el ano 1700. Hoy en da, este ndice es medido por multitud de astronomos y
la distribucion mundial de datos es coordinada por el Solar Inuences Data Center
en el Royal Observatory de Belgica (http://sidc.oma.be).
El archivo de texto sunspot.dat, incluido dentro del directorio demos de
Matlab, contiene dos columnas de numeros. La primera columna corresponde a
los anos desde 1700 a 1987, y la segunda es la media de cada ano del ndice de Wolfer
para manchas solares.

load sunspot.dat
t = sunspot(:,1);
wolfer = sunspot(:,2);
n = length(wolfer);

Existe una ligera tendencia creciente en el comportamiento de estos datos. Un


ajuste por mnimos cuadrados nos proporciona la lnea de tendencia.

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
136 Herramientas informaticas de las matematicas en ingeniera

Indice de manchas solares con tendencia lineal


200

150

Indice de Wolfer
100

50

0
1700 1750 1800 1850 1900 1950
Ao

Figura 9.6: Indice de manchas solares.

c = polyfit(t,wolfer,1);
trend = polyval(c,t);
plot(t, [wolfer; trend],-,t,wolfer,k.)
xlabel(Ano)
ylabel(Indice de Wolfer)
title(Indice de manchas solares con tendencia lineal)

En este punto ya puede observarse facilmente la tendencia cclica del fenomeno:


los picos y los valles se encuentran separados entre s algo mas de unos 10 anos.
Ahora, sustraigamos la tendencia lineal a los datos y calculemos su transformada de
Fourier.

y = wolfer - trend;
Y = fft(y);

El vector |Y|2 representa la potencia de la senal, y a su trazado frente a la frecuen-


cia se le conoce como periodograma. En muchas ocasiones es preferible dibujar |Y|
en vez de |Y|2 , dado que de este modo el escalado de los datos no es tan exagerado.
Como ya se ha comentado, la frecuencia de muestreo para estos datos es de una vez
por ano, por lo que la frecuencia f tendra unidades de ciclos por ano.

Fs = 1; % Frecuencia de muestreo
f = (0:n-1)*Fs/n;
power = abs(Y);
stem(f,power)
axis([0 Fs/2 0 4500])
xlabel(Ciclos/Ano)
ylabel(Potencia)
title(Periodograma)

La frecuencia maxima ocurre cerca de una frecuencia = 0.09 ciclos/ano, pero nos
gustara conocer el periodo correspondiente en anos/ciclo. Para ello, simplemente

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
Analisis de Fourier 137

Periodograma Detalle del periodograma


4500 4500

4000 4000

3500 3500

3000 3000

Potencia
Potencia

2500 2500

2000 2000

1500 1500

1000 1000

500 500

0 0
0 0.1 0.2 0.3 0.4 0.5 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Ciclos/Ao Aos/Ciclo

Figura 9.7: (Izquierda) Periodograma del ndice de manchas solares. (Derecha) El detalle
del periodograma muestra un periodo de 11 anos por ciclo.

hagamos un zoom del graco y empleemos el inverso de la frecuencia como variable


independiente en el eje-x. Como se esperaba, se observa un ciclo prominente de apro-
ximadamente 11.1 anos. Esto demuestra que, al menos en los ultimos 300 anos, el
periodo del ciclo de las manchas solares ha sido ligeramente superior a 11 anos.

power = abs(Y);
find(power == max(power)), % Encontramos el indice del maximo (27)
parte = 15:40;
stem(1./f(parte),power(parte))
xlabel(Anos/Ciclo)
ylabel(Potencia)
title(Detalle del periodograma)

9.5. Analisis de series temporales periodicas


Los tonos generados por el teclado telefonico y el ndice Wolfer de las manchas
solares son dos ejemplos de series temporales periodicas, al menos aproximadamente.
El analisis de Fourier nos permite estimar el periodo de un conjunto discreto de va-
lores muestreados a una frecuencia ja. La siguiente tabla muestra la relacion entre
las distintas cantidades involucradas en este analisis.

y datos
Fs frecuencia de muestreo
n = length(y) numero de muestras
t = (0:n-1)/Fs tiempo total
dt = 1/Fs incremento de tiempo
Y = fft(y) transformada de Fourier discreta
abs(Y) amplitud de la FFT
abs(Y).2 potencia
f = (0:n-1)*Fs/n frecuencia (ciclos/unidad de tiempo)
(n/2)*Fs/n = Fs/2 frecuencia de Nyquist
p = 1./f periodo

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
138 Herramientas informaticas de las matematicas en ingeniera

El periodograma es la representacion graca de la amplitud de la FFT abs(Y), o


de la potencia abs(Y).2, frente a la frecuencia f. En realidad, tan solo es necesario
representar su primera mitad dado que la segunda mitad no es mas que el reejo de
la primera parte en torno a la frecuencia de Nyquist.

Ejercicios

9.1 Cual es el numero de telefono grabado en touchtone.mat?


9.2 El Nino. El fenomeno climatologico de El Nino es el resultado de cambios en
la presion atmosferica en el sur del oceano Pacco. El Indice de Oscilacion
Sures la diferencia en la presion atmosferica entre Easter Island y Darwin,
Australia, ambas medidas a nivel del mar en el mismo momento. El chero
de texto elnino.dat contiene valores de este ndice medidos cada mes en
el periodo de 14 anos comprendidos entre 1962 y 1975.
Tu labor con estos datos es llevar a cabo un analisis similar al ejemplo de las
manchas solares. Ten presente que para este ejemplo la unidad de tiempo es
un mes en lugar de un ano. Deberas encontrar que existe un ciclo prominente
con un periodo de 12 meses, y un segundo ciclo menos prominente con un
periodo mayor. Este segundo ciclo se muestra aproximadamente en tres de
los coecientes de Fourier, por lo que es algo difcil de estimar su longitud,
pero intenta ver si puedes conseguir una estimacion.
9.3 El silbido del tren. El directorio demos de Matlab contiene varias muestras
de sonidos. Uno de ellos es el silbido de un tren. La orden

load train

carga en el entorno de trabajo un vector y y un escalar Fs cuyo valor es el


numero de muestras por segundos. Si tu ordenador posee tarjeta de sonido,
la instruccion sound(y,Fs) reproduce la senal, pero no es necesario para
este problema.
Los datos cargados no poseen una tendencia lineal signicativa. Hay dos
pulsos del silbido del tren, pero el contenido armonico de ambos pulsos es el
mismo.

a) Representa los datos con el tiempo en segundos como variable indepen-


diente.
b) Construye el periodograma con la frecuencia en ciclos/segundo como
la variable independiente.
c) Identica las frecuencias de los seis picos que aparecen en el periodo-
grama. Deberas encontrar que existen ciertas proporciones entre estas
frecuencias, algunos de ellos cercanos a enteros pequenos. Por ejem-
plo, una de las frecuencias es 5/3 de otra. Por su parte, las frecuencias
que son multiplos enteros de otras frecuencias son resonancias de la

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html
Analisis de Fourier 139

frecuencia fundamental. Cuantos de los picos del periodograma son


frecuencias fundamentales y cuantos resonancias? Cuales son las fre-
cuencias fundamentales del silbido de este tren?

9.4 El canto de los pajaros. Analiza la muestra de sonido chirp del directorio
demos de Matlab. Ignorando una pequena porcion del nal, es posible seg-
mentar la senal en ocho partes, cada una conteniendo un trino. Representa
la magnitud de la FFT de cada segmento. Usa subplot(4,2,k) con k =
1:8 y los mismos margenes para los ejes de cada subplot. Frecuencias en el
margen entre 400 Hz y 800 Hz pueden ser apropiadas. Si observas con aten-
cion, deberas observar que al menos uno o dos de los trinos poseen gracos
distintivos.

Version del 29/10/2004


http://matematicas.uclm.es/ind-cr/him/index.html

También podría gustarte