Fourier

6
¿Cómo calculo numéricamente el desarrollo en serie de Fourier (DSF) de una función continua usando la FFT? F. J. Fraile Peláez En este documento explico cómo se usa la FFT para calcular el desarrollo en serie de Fourier (DSF) de una función continua (y periódica, claro). 1. ¿Qué es la FFT? Si quiere saberlo de verdad, búsquelo en un libro... A nuestros efectos, sólo necesitamos introducir la FFT de una forma muy breve y funcional. Concretamente: Considere un señal discreta periódica, ˜ [] de puntos. Al ser ˜ [] una secuencia perió- dica, tiene un desarrollo en serie de Fourier que viene dado por ˜ []= 1 X =0 2 (1) Pues bien, los coecientes del desarrollo son precisamente la FFT de ˜ [] Es decir, FFT []] = { 0 2 1 } (2) 2. FFT y Desarrollo en Serie de Fourier (DSF) de una función continua Veamos ahora cómo se relacionan los de (2) (la FFT) con los coecientes del desarrollo en serie de Fourier de una función periódica continua. Sea ˜ () una función periódica de periodo Su desarrollo en serie de Fourier es: ˜ ()= X =−∞ 2 = X =−∞ 0 (3) con 0 = 2 (4) Supongamos que ˜ () tiene un número nito de armónicos (o que se puede limitar, con error despreciable, a un número nito de armónicos ) O sea, =0 || Para representar a ˜ () mediante sus muestras, debemos muestrear a más del doble de su ancho de banda; es decir, llamando a la frecuencia de muestreo y 0 = 0 (2) 2( 0 )= 2 (5) Supongamos que muestreamos a veces el doble del ancho de banda. Es decir: 1

description

jklñ

Transcript of Fourier

  • Cmo calculo numricamente el desarrollo en serie deFourier (DSF) de una funcin continua usando la FFT?

    F. J. Fraile Pelez

    En este documento explico cmo se usa la FFT para calcular el desarrollo en serie deFourier (DSF) de una funcin continua (y peridica, claro).

    1. Qu es la FFT?

    Si quiere saberlo de verdad, bsquelo en un libro...A nuestros efectos, slo necesitamos introducir la FFT de una forma muy breve y funcional.

    Concretamente:Considere un seal discreta peridica, [] de puntos. Al ser [] una secuencia peri-

    dica, tiene un desarrollo en serie de Fourier que viene dado por

    [] =1X=0

    2 (1)

    Pues bien, los coeficientes del desarrollo son precisamente la FFT de [] Es decir,FFT [[]] = {0 2 1} (2)

    2. FFT y Desarrollo en Serie de Fourier (DSF) de unafuncin continua

    Veamos ahora cmo se relacionan los de (2) (la FFT) con los coeficientes del desarrollo enserie de Fourier de una funcin peridica continua. Sea () una funcin peridica de periodo Su desarrollo en serie de Fourier es:

    () =X

    = 2 =

    X=

    0 (3)con

    0 = 2 (4)Supongamos que () tiene un nmero finito de armnicos (o que se puede limitar, con errordespreciable, a un nmero finito de armnicos ) O sea, = 0 || Para representar a() mediante sus muestras, debemos muestrear a ms del doble de su ancho de banda; es decir,llamando a la frecuencia de muestreo y 0 = 0(2)

    2(0) = 2 (5)Supongamos que muestreamos a veces el doble del ancho de banda. Es decir:

    1

  • =2 1 (6)Llamando = 1 la secuencia obtenida al muestrar () ser:

    [] = () =X

    = exp

    2

    =X

    = exp

    2

    2

    =X

    = exp

    22

    =

    X=

    exp2

    (7)

    con

    = 2 (8)Y por tanto

    = (9)Obsrvese que debe ser entero; de lo contrario, la secuencia no sera peridica y no po-

    dramos hacer uso de (2). Puesto que es entero, debe ser entero o, al menos, un nmerofraccionario adecuado. Por ejemplo, si = 7 podra ser 1 5; pero no 1 4La expresin (7) es casi anloga a (1). Intentemos hacerlas iguales. En primer lugar, el

    sumatorio de (7) se puede extender formalmente a trminos, sin ms que considerar que los sobrantes son todos cero:

    [] =(1)2X

    =(1)2 exp

    2

    impar (10)

    [] =2X

    =21 exp

    2

    par. (11)

    Ahora bien, observamos que exp 2 = exp { }2 Utilizaremos esta propiedad

    para escribir (1) en forma idntica a (10) o (11). Procedemos de la siguiente manera:Supongamos que es impar. Dividamos en dos el sumatorio (1):

    [] =1X=0

    2 =(1)2X=0

    2 +1X

    =(1)2+1 2 1 + 2 (12)

    Pero haciendo uso de que exp 2 = exp { }2 , el segundo sumatorio se puede

    escribir:

    2 =1X

    =(1)2+1() 2 (13)

    Llamemos 0 en ( 13). Cuando = (1)2+1 0 = (1)2 y cuando = 10 = 1 de manera que

    2

  • 2 =1X

    0=(1)20+0 2 (14)

    Insertando (14) en (12), queda (cambiando el nombre del ndice de 2 0 ):

    [] =1X

    =(1)2+ 2 +

    (1)2X=0

    2 (15)

    Comparando (15) con (10), vemos que:

    =

    0 12

    + 12

    0(16)

    Un resultado similar se obtiene cuando es par (se deja como ejercicio para usted, lector).La conclusin es, por tanto, que los coeficientes de la FFT de la secuencia discreta obtenida

    de muestrear un periodo de la funcin continua peridica son, convenientemente ordenados, loscoeficientes del desarrollo en serie de Fourier (DSF) de la funcin continua peridica.

    3. Ejemplo

    Veamos un ejemplo. Sea la funcin

    () = 3 cos3() (17)El ancho de banda de () es, claramente, 3 as que en este caso () tiene exactamente 3armnicos, = 3. El nmero de muestras en un periodo ha de ser, por tanto,

    = 2 = 6 (18)Tomemos, por ejemplo, = 3 5 con lo que1 = 21Para una () tan sencilla como (17), es fcil obtener directamente la expresin analtica del

    desarrollo en serie de Fourier, lo cual nos servir para comparar los resultados. Concretamente,

    3 cos3() = 0 375 3 + 1 125 + 1 125 + 0 375 3 (19)Obtengamos este resultado mediante la FFT. La secuencia peridica ser

    [] = () = () = () = 3 cos3

    = 3cos32

    = 3cos3

    2 (20)

    Obsrvese que las muestras desde = 0 hasta = 1 cubren, efectivamente, un periodocompleto de la secuencia peridica [] [El periodo de la funcin continua () es = 2 yno 2(3), a causa de la componente de frecuencia que aparece claramente en (19)].El programa en MATLAB para calcular los coeficientes de Fourier sera, en este caso, el

    siguiente:

    1Como sabe, cuando hay que hacer clculos intensivos es muy juicioso ajustar a una potencia de 2 (8, 16,32, 64, 128...), pues es as como el algoritmo FFT muestra su enorme eficiencia.

    3

  • N = 21;x = 3*cos(2*pi/N*(0:N-1).^3;y0 = fft(x)/N;eje0 = (0:N-1);

    stem(eje0,abs(y0),o)figure

    y = fftshift(y0);% Estos son los coeficientes c_keje = (-(N-1)/2:(N-1)/2);

    stem(eje,abs(y),o)

    La funcin fft proporciona el vector y0, cuyos elementos son los {} de (2). El resultadose divide por porque la rutina fft de matlab difiere en este factor de la FFT tal como lahemos definido. La figura 1 muestra el vector y0.

    0 5 10 15 200

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    1.4

    Figura 1: FFT de []:Vector y0 formado por los Para obtener los coeficientes hay simplemente que reordenar los de acuerdo con (16).

    Esto lo hace automticamente la funcin fftshift de matlab. El resultado, vector y, se muestraen la figura 2.El eje de abcisas toma los valores del vector eje, definido para mostrar el nmero de armnico

    (es decir, ) desde ( 1)2 = 10 hasta ( + 1)2 = 10 El resultado (eje, y) es:

    4

  • -10.0000 0.0000 + 0.0000i-9.0000 0.0000 + 0.0000i-8.0000 0.0000 + 0.0000i-7.0000 0.0000 + 0.0000i-6.0000 0.0000 + 0.0000i-5.0000 0.0000 + 0.0000i-4.0000 0.0000 + 0.0000i-3.0000 0.3750 - 0.0000i-2.0000 0.0000 + 0.0000i-1.0000 1.1250 - 0.0000i0 0.00001.0000 1.1250 - 0.0000i2.0000 0.0000 - 0.0000i3.0000 0.3750 - 0.0000i4.0000 0.0000 - 0.0000i5.0000 0.0000 - 0.0000i6.0000 0.0000 - 0.0000i7.0000 0.0000 - 0.0000i8.0000 0.0000 + 0.0000i9.0000 0.0000 + 0.0000i10.0000 0.0000 + 0.0000i

    Claramente, aparecen los coeficientes correctos de las frecuencias y 3; todos los demsson cero.

    10 5 0 5 100

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    1.4

    Figura 2: Coeficientes del desarrollo en serie de Fourier de (): Vector y formado por los

    Comparando las figuras 1 y 2 se observa cmo, efectivamente, la funcin fftshift ha reor-denado los coeficientes de acuerdo con la frmula (16):

    5

  • 0 = 0 = 01 = 1 = 1 1252 = 2 = 03 = 3 = 0 3751 = 1+21 = 20 = 1 1252 = 2+21 = 19 = 03 = 3+21 = 18 = 0 375Todos los dems, 0

    La eleccin de = 21 en este ejemplo es arbitraria. Podamos haber elegido un nmeromenor; por ejemplo, = 43 = 8 En este caso se obtiene:

    -4.0000 0.0000-3.0000 0.3750 - 0.0000i-2.0000 0.0000 + 0.0000i-1.0000 1.1250 - 0.0000i0 0.00001.0000 1.1250 + 0.0000i2.0000 0.0000 - 0.0000i3.0000 0.3750 + 0.0000i,

    como era de esperar.

    c MMVI F. J. Fraile Pelez, Universidad de Vigo.Este documento se puede distribuir libremente sin modificaciones.Este documento ha sido escrito en LaTeX 2 mediante Scientific Workplace 5.5 http://www.com.uvigo.es/fot/jfraile/sci/ http://www.com.uvigo.es/fot/jfraile/ http://www.com.uvigo.es/fot/

    6