14
Cálculo eficiente de la transformada de Fourier Escuela Superior de Ingenieros 6 2.- Cálculo eficiente de la Transformada discreta de Fourier. La DFT (Transformada Discreta de Fourier) de una secuencia finita de longitud N es [1] [2]: 1 0 [] [] , 0,1,..., 1 N kn N n Xk xnW k N - = = = - (2.1) Siendo -j(2π/N) N W =e . La Transformada Discreta de Fourier inversa viene dada por: 1 0 1 [] [] , 0,1,..., 1 N kn N k xn XkW n N N - - = = = - (2.2) En las ecuaciones (2.1) y (2.2), tanto x[n] como X[k] pueden ser complejos. Las expresiones del lado derecho de esas ecuaciones difieren solamente en el signo de la exponencial W N y en el factor de escala 1/N. Debido a que x[n] puede ser compleja, si usamos directamente la ecuación (2.1) como una fórmula para el cálculo, necesitaremos N multiplicaciones complejas y (N-1) sumas complejas para calcular cada valor de la DFT. Para calcular todos los N valores necesitaremos un total de N 2 multiplicaciones complejas y N(N-1) sumas complejas. Expresando la ecuación (2.1) en función de operaciones con números reales obtenemos, { } { } { } { } ( ) { } { } { } { } ( ) 1 0 Re [ ] Re Im [ ] Im [] Re [ ] Im Im [ ] Re 0,1,... 1 kn kn N N N kn kn n N N xn W xn W Xk j xn W xn W k N - = - = + + = - (2.3) La ecuación (2.3) nos muestra que cada multiplicación compleja requiere cuatro multiplicaciones reales y dos sumas reales, y que cada suma compleja requiere dos sumas reales. Por lo tanto, para cada valor de k, el cálculo directo de X[k] requiere 4N multiplicaciones reales y (4N-2) sumas reales 1 . Debido a que X[k] se calcula para N valores diferentes de k, el cálculo directo de la Transformada Directa de Fourier de una secuencia x[n] requiere 4N 2 multiplicaciones reales y N(4N-2) sumas reales. Luego es aproximadamente proporcional a N 2 . Es evidente que el número de operaciones aritméticas requeridas para calcular la DFT por el método directo se vuelve cada vez 1 La figura del número de operaciones es solo aproximado. Multiplicar por 0 N W , por ejemplo, no requiere una multiplicación. Sin embargo, la estimación de la complejidad operacional obtenida incluyendo tales multiplicaciones es lo suficientemente precisa para comparar entre diferentes clases de algoritmos.

Calculo Eficiente de La Transformada de Fourier

Embed Size (px)

DESCRIPTION

Algoritmos rápidos para obtener la FFT

Citation preview

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 6

    2.- Clculo eficiente de la Transformada discreta de

    Fourier.

    La DFT (Transformada Discreta de Fourier) de una secuencia finita de longitud

    N es [1] [2]:

    1

    0

    [ ] [ ] , 0,1,..., 1 N

    kn

    N

    n

    X k x n W k N

    =

    = = (2.1)

    Siendo -j(2pi/N)N

    W =e . La Transformada Discreta de Fourier inversa viene dada

    por:

    1

    0

    1[ ] [ ] , 0,1,..., 1

    Nkn

    N

    k

    x n X k W n NN

    =

    = = (2.2)

    En las ecuaciones (2.1) y (2.2), tanto x[n] como X[k] pueden ser complejos.

    Las expresiones del lado derecho de esas ecuaciones difieren solamente en el signo

    de la exponencial WN y en el factor de escala 1/N.

    Debido a que x[n] puede ser compleja, si usamos directamente la ecuacin

    (2.1) como una frmula para el clculo, necesitaremos N multiplicaciones complejas y

    (N-1) sumas complejas para calcular cada valor de la DFT. Para calcular todos los N

    valores necesitaremos un total de N2 multiplicaciones complejas y N(N-1) sumas

    complejas. Expresando la ecuacin (2.1) en funcin de operaciones con nmeros

    reales obtenemos,

    { } { } { } { }( ){ } { } { } { }( )

    1

    0

    Re [ ] Re Im [ ] Im[ ]

    Re [ ] Im Im [ ] Re

    0,1,... 1

    kn knN N N

    kn knn

    N N

    x n W x n WX k

    j x n W x n W

    k N

    =

    = + +

    =

    (2.3)

    La ecuacin (2.3) nos muestra que cada multiplicacin compleja requiere

    cuatro multiplicaciones reales y dos sumas reales, y que cada suma compleja requiere

    dos sumas reales. Por lo tanto, para cada valor de k, el clculo directo de X[k] requiere

    4N multiplicaciones reales y (4N-2) sumas reales1. Debido a que X[k] se calcula para N

    valores diferentes de k, el clculo directo de la Transformada Directa de Fourier de una

    secuencia x[n] requiere 4N2 multiplicaciones reales y N(4N-2) sumas reales. Luego es

    aproximadamente proporcional a N2. Es evidente que el nmero de operaciones

    aritmticas requeridas para calcular la DFT por el mtodo directo se vuelve cada vez

    1 La figura del nmero de operaciones es solo aproximado. Multiplicar por

    0

    NW , por ejemplo, no

    requiere una multiplicacin. Sin embargo, la estimacin de la complejidad operacional obtenida incluyendo tales multiplicaciones es lo suficientemente precisa para comparar entre diferentes clases de algoritmos.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 7

    mayor a medida que se incrementa N. Por esta razn, estamos interesados en

    mtodos de clculo que reduzcan el nmero de multiplicaciones y sumas.

    La mayora de los algoritmos que buscan un cmputo ms eficiente de la DFT

    explotan las propiedades de simetra y periodicidad de knN

    W ; en concreto,

    1. ( )[ ]k N n kn knN N NW W W = = (simetra compleja conjugada).

    2. ( ) ( )kn k n N k N nN N N

    W W W+ += = (periodicidad en n y en k).

    Todos los algoritmos que buscan disminuir el nmero de operaciones se

    conocen bajo el nombre de Transformada Rpida de Fourier (FFT). Los algoritmos de

    la FFT se basan principalmente en descomponer la Transformada Discreta de Fourier

    de una secuencia de longitud N en sucesivas DFT de menor tamao. La manera en la

    que se implementa este principio bsico es la que da lugar a los diferentes tipos de

    algoritmos. Hay dos clases bsicas de algoritmos:

    1. Diezmado en el tiempo.- El nombre proviene de que la secuencia x[n] se

    descompone en subsecuencias sucesivamente ms pequeas.

    2. Diezmado en frecuencia.- En este caso son los coeficientes de la DFT de la

    secuencia X[k] los que se descomponen en subsecuencias menores.

    2.1.- Diezmado en el tiempo.

    El principio de este algoritmo se ilustra ms convenientemente considerando el

    caso especial de que N es una potencia entera de 2, es decir, N=2p. Como N es un

    nmero entero par, podemos calcular X[k] separando x[n] en 2 secuencias de (N/2)

    puntos, una con los n pares y otra con los n impares. X[k] viene dado por:

    1

    0

    (2 / )

    [ ] [ ] , 0,1,..., 1N

    nk

    Nn

    nk j N kn

    N

    X k x n W k N

    W e pi

    =

    = =

    =

    (2.4)

    Separando x[n] en 2 sumatorios, uno con los n pares y otro con los impares

    tenemos:

    [ ] [ ] [ ]nk nkN N

    n par n impar

    X k x n W x nW= + (2.5)

    Haciendo el cambio de variables n=2r para el caso par, y n=2r+1 para el caso

    impar:

    ( / 2) 1 ( / 2) 12 (2 1)

    0 0

    ( / 2) 1 ( / 2) 12 2

    0 0

    [ ] [2 ] [2 1]

    [2 ]( ) [2 1]( )

    N Nrk r k

    N Nr r

    N Nrk k rk

    N N N

    r r

    X k x r W x r W

    x r W W x r W

    +

    = =

    = =

    = + +

    = + +

    (2.6)

    Sabemos que 2/ 2N N

    W W= , luego:

    2 2 (2 / ) 2 ( / 2)

    / 2

    j N j N

    N NW e e Wpi pi = = = (2.7)

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 8

    Finalmente podemos reescribir la ecuacin (2.6):

    ( / 2) 1 ( / 2) 1

    /2 /2

    0 0

    [ ] [2 ] [2 1]

    [ ] [ ], 0,1,..., 1.

    N Nrk k rk

    N N N

    r r

    k

    N

    X k x r W W x r W

    G k W H k k N

    = =

    = + +

    = + =

    (2.8)

    Cada una de las sumas de la ecuacin (2.8) se reorganiza como una DFT de

    (N/2) puntos. La primera suma es la DFT de (N/2) puntos de los puntos pares de la

    secuencia original, y la segunda suma es la DFT de (N/2) puntos de los puntos

    impares de la secuencia original. Aunque el ndice k alcanza N valores, k=0,1,...N-1,

    cada una de las sumas se calcula solo para los valores de k entre 0 y (N/2)-1, ya que

    tanto G[k] como H[k] son peridicas en k con periodo (N/2). Una vez realizada las dos

    DFT, stas se combinan conforme a la ecuacin (2.8).

    En la Fig. 2. 1, se calculan dos DFT de 4 puntos, donde G[k] designa la DFT de

    4 puntos de los puntos pares y H[k] la de los puntos impares. X[0] se obtiene

    multiplicando H[0] por 0N

    W , y sumando al producto G[0]. X[1] se obtiene multiplicando

    H[1] por 1N

    W , y sumando al producto G[1]. La ecuacin (2.8) nos indica que para

    obtener X[4], deberamos multiplicar H[4] por 4N

    W y sumar el resultado a G[4]. Sin

    embargo, tanto G[k] como H[k], son peridicas en k con periodo 4, H[4]=H[0] y

    G[4]=G[0]. Por tanto, X[4] se obtiene multiplicando H[0] por 4N

    W y sumando al

    resultado G[0]. Como se indica en la Fig. 2. 1 los valores X[5], X[6] y X[7] se obtiene de

    forma similar.

    Si (N/2) es par (esto sucede cuando N es una potencia de 2), podemos calcular

    cada una de las DFT de (N/2) puntos, rompindolas en dos sumatorios, cada uno de

    los cuales sera una DFT de (N/4) puntos. Reescribiendo G[k] tenemos:

    DFT

    N/2 puntos

    DFT

    N/2 puntos

    x[0]

    x[2]

    x[4]

    x[6]

    x[1]

    x[3]

    x[5]

    x[7]

    G[0]

    G[1]

    G[2]

    G[3]

    H[0]

    H[1]

    H[2]

    H[3]

    X[0]

    X[1]

    X[2]

    X[3]

    X[4]

    X[5]

    X[6]

    X[7]

    0

    NW

    1

    NW

    2

    NW

    3

    NW

    4

    NW

    5

    NW

    6

    NW

    7

    NW

    Fig. 2. 1.- Descomposicin de una DFT de N puntos en dos DFT de (N/2) puntos.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 9

    ( / 2) 1 ( / 4) 1 ( / 4) 1

    2 (2 1)

    / 2 / 2 /2

    0 0 0

    [ ] [ ] [2 ] [2 1]N N N

    rk lk l k

    N N N

    r l l

    G k g r W g l W g l W

    +

    = = =

    = = + + (2.9)

    ( / 4) 1 ( / 4) 1

    / 4 / 2 / 4

    0 0

    [ ] [2 ] [2 1]N N

    lk k lk

    N N N

    l l

    G k g l W W g l W

    = =

    = + + (2.10)

    Hacindolo de forma similar para H[k]:

    ( / 4) 1 ( / 4) 1

    / 4 /2 / 4

    0 0

    [ ] [2 ] [2 1]N N

    lk k lk

    N N N

    l l

    H k h l W W h l W

    = =

    = + + (2.11)

    La DFT de (N/2) puntos G[k] puede ser obtenida por la combinacin de dos

    DFT de (N/4) puntos, las secuencias g[2l] y g[2l+1]. De igual manera, la DFT de (N/2)

    puntos H[k] puede ser obtenida por la combinacin de dos DFT de (N/4) puntos, las

    secuencias h[2l] y h[2l+1]. Si insertamos estas modificaciones en la Fig. 2. 1

    obtenemos el grfico completo (Fig. 2. 2), donde hemos expresado los coeficientes en

    potencias de WN en vez de en potencias de WN/2.

    Al final, todo se ha quedado reducido al clculo de 4 DFT de 2 puntos. Si

    realizamos dichas DFT obtenemos el grafo completo para una DFT de 8 puntos en el

    caso de diezmado en frecuencia (Fig. 2. 3).

    x[0]

    x[2]

    x[4]

    x[6]

    x[1]

    x[3]

    x[5]

    x[7]

    X[0]

    X[1]

    X[2]

    X[3]

    X[4]

    X[5]

    X[6]

    X[7]

    0

    NW

    1

    NW

    2

    NW

    3

    NW

    4

    NW

    5

    NW

    6

    NW

    7

    NW

    DFT

    N/4 puntos

    DFT

    N/4 puntos

    DFT

    N/4 puntos

    DFT

    N/4 puntos

    0

    NW

    2

    NW

    4

    NW

    6

    NW

    0

    NW

    2

    NW

    4

    NW

    6

    NW

    Fig. 2. 2.- Descomposicin de una DFT de 8 puntos en 4 de DFT de 2 puntos.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 10

    De la Fig. 2. 3 podemos deducir que cada etapa de la DFT tiene N

    multiplicaciones complejas y N sumas complejas. Como hay log2N etapas, tenemos un

    total de Nlog2N multiplicaciones complejas y sumas.2

    Podemos reducir ms el clculo de la Fig. 2. 3 explotando la simetra y la

    periodicidad de los coeficientes rN

    W . El clculo bsico es de la forma de la Fig. 2. 4, es

    decir, realiza la obtencin de una pareja de valores de una etapa a partir de una pareja

    de valores de la etapa anterior. Los coeficientes son siempre potencias de WN y los

    exponentes estn separados por N/2. Debido a la geometra del grafo, esta operacin

    se le denomina butterfly.

    Teniendo en cuenta que:

    / 2 (2 / ) / 2 1N j N N jN

    W e epi pi = = = (2.12)

    El factor / 2r NN

    W + podemos escribirlo:

    / 2 / 2r N N r rN N N N

    W W W W+ = = (2.13)

    2 Si N=2

    10=1024, entonces N

    2=2

    20=1048576 y NlogN=10240. Conseguimos una reduccin de ms

    de dos rdenes de magnitud.

    x[0]

    x[2]

    x[4]

    x[6]

    x[1]

    x[3]

    x[5]

    x[7]

    X[0]

    X[1]

    X[2]

    X[3]

    X[4]

    X[5]

    X[6]

    X[7]

    0

    NW

    1

    NW

    2

    NW

    3

    NW

    4

    NW

    5

    NW

    6

    NW

    7

    NW

    0

    NW

    2

    NW

    4

    NW

    6

    NW

    0

    NW

    2

    NW

    4

    NW

    6

    NW

    0

    NW

    4

    NW

    0

    NW

    0

    NW

    4

    NW

    4

    NW

    0

    NW

    4

    NW

    Fig. 2. 3.- Grafo completo de la descomposicin de una DFT de 8 puntos.

    r

    NW

    (r+N/2)

    NW

    Etapa

    (m-1)

    Etapa

    m

    Fig. 2. 4.- Diagrama bsico de una butterfly

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 11

    Si usamos esto, el clculo de la butterfly que se realiza en la Fig. 2. 4 se puede

    simplificar como ilustra la Fig. 2. 5. Haciendo esto solo necesitamos una multiplicacin

    compleja en vez de dos.

    Si usamos el diagrama de la Fig. 2. 5 y lo sustituimos por la butterfly de la Fig.

    2. 3, obtenemos la Fig. 2. 6. En este caso en particular, hemos reducido en un factor

    de 2 el nmero de multiplicaciones complejas.

    2.2.- Diezmado en la frecuencia.

    Los algoritmos de FFT mediante diezmado en el tiempo se basan en

    estructurar los clculos de la DFT dividiendo la secuencia de entrada x[n] en

    subsecuencias cada vez ms pequeas. Tambin podramos dividir la secuencia de

    salida X[k] en subsecuencias cada vez ms pequeas de la misma forma que hicimos

    antes. Los algoritmos de FFT que se basan en este procedimiento se denominan

    algoritmos mediante diezmado en frecuencia.

    Etapa

    (m-1)

    Etapa

    mr

    NW

    -1

    Fig. 2. 5.- Diagrama simplificado de una butterfly

    x[0]

    x[2]

    x[4]

    x[6]

    x[1]

    x[3]

    x[5]

    x[7]

    X[0]

    X[1]

    X[2]

    X[3]

    X[4]

    X[5]

    X[6]

    X[7]

    0

    NW

    0

    NW

    0

    NW

    0

    NW

    0

    NW

    2

    NW

    0

    NW

    2

    NW

    0

    NW

    2

    NW

    1

    NW

    3

    NW

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1 -1

    -1

    -1

    -1

    Fig. 2. 6.- DFT de 8 puntos usando el diagrama de la Fig. 2. 5.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 12

    Restringimos de nuevo la discusin al caso en el que N es una potencia de 2

    (N=2p) de forma que podemos separar nuevamente el clculo para las muestras pares

    e impares.

    1

    0

    [ ] [ ] , 0,1,... 1N

    nk

    N

    n

    X k x n W k N

    =

    = = (2.14)

    Las muestras en frecuencia con numeracin par son:

    1

    (2 )

    0

    [2 ] [ ] , 0,1,...,( / 2) 1N

    n r

    N

    n

    X r x n W r N

    =

    = = (2.15)

    y las podemos expresar como:

    ( / 2) 1 1

    2 2

    0 / 2

    [2 ] [ ] [ ]N N

    nr nr

    N N

    n n N

    X r x nW x nW

    = =

    = + (2.16)

    Si hacemos un cambio de variable en el segundo sumatorio de la ecuacin

    (2.16) obtenemos:

    ( / 2) 1 ( / 2) 1

    2 2 [ ( / 2)]

    0 0

    [2 ] [ ] [ ( / 2)]N N

    nr r n N

    N N

    n n

    X r x nW x n N W

    +

    = =

    = + + (2.17)

    Finalmente, debido a la periodicidad de 2rnN

    W ,

    2 [ ( / 2)] 2 2r n N rn rN rnN N N N

    W W W W+ = = (2.18)

    Y a que 2/ 2N N

    W W= , podemos expresar la ecuacin (2.17) como,

    ( / 2) 1

    / 2

    0

    [2 ] ( [ ] [ ( / 2)]) , 0,1,...,( / 2) 1N

    rn

    N

    n

    X r x n x n N W r N

    =

    = + + = (2.19)

    La ecuacin (2.19) es la DFT de (N/2) puntos, de la secuencia de (N/2) puntos

    obtenida sumando la primera mitad y la ltima mitad de la secuencia de entrada.

    Podemos repetir el mismo proceso pero para el caso impar. Las muestras

    impares son:

    1

    (2 1)

    0

    [2 1] [ ] , 0,1,...,( / 2) 1N

    n r

    N

    n

    X r x n W r N

    +

    =

    + = = (2.20)

    Reordenando la ecuacin (2.20) tenemos

    ( / 2) 1 1

    (2 1) (2 1)

    0 / 2

    [2 1] [ ] [ ]N N

    n r n r

    N N

    n n N

    X r x n W x nW

    + +

    = =

    + = + (2.21)

    Una alternativa para el segundo sumatorio de la ecuacin (2.21) es:

    ( / 2) 11(2 1) [ ( / 2)](2 1)

    / 2 0

    ( / 2) 1( / 2)(2 1) (2 1)

    0

    ( / 2) 1(2 1)

    0

    [ ] [ ( / 2)]

    [ ( / 2)]

    [ ( / 2)]

    NNn r n N r

    N N

    n N n

    NN r n r

    N N

    n

    Nn r

    Nn

    x n W x n N W

    W x n N W

    x n N W

    + + +

    = =

    + +

    =

    +

    =

    = +

    = +

    = +

    (2.22)

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 13

    Para obtener la ecuacin (2.22) hemos usado que ( / 2)2 1N rN

    W = y ( / 2) -1NN

    W = .

    Sustituyendo la ecuacin (2.22) en la ecuacin (2.21) y combinando los dos

    sumatorios tenemos:

    ( / 2) 1

    (2 1)

    0

    [2 1] ( [ ] [ ( / 2)])N

    n r

    N

    n

    X r x n x n n W

    +

    =

    + = + (2.23)

    Finalmente, si tenemos en cuenta que 2/ 2N N

    W W= , obtenemos:

    ( / 2) 1

    / 2

    0

    [2 1] ( [ ] [ ( / 2)]) , 0,1,...,( / 2) 1N

    n nr

    N N

    n

    X r x n x n N W W r n

    =

    + = + = (2.24)

    La ecuacin (2.24) representa la DFT de (N/2) puntos de la secuencia obtenida

    restando la segunda mitad de la secuencia de entrada de la primera mitad y

    multiplicando la secuencia resultante por nN

    W . Si llamamos g[n]=x[n]+x[n+N/2] y

    h[n]=x[n]-x[n+N/2], podramos calcular la DFT formando primero las secuencias g[n] y

    h[n], luego calculamos h[n] nN

    W , y finalmente calculamos la DFT de (N/2) puntos de

    esas dos secuencias para obtener las muestras de salida pares e impares

    respectivamente. El procedimiento sugerido por la ecuaciones (2.19) y (2.24) se ilustra

    en la Fig. 2. 7 para el caso de una DFT de 8 puntos.

    Procedemos de forma similar a como obtuvimos el algoritmo de diezmado en el

    tiempo. Como N es potencia de 2, (N/2) es par, por lo tanto podemos calcular la DFT

    de (N/2) puntos separndola en dos DFT, una para las muestras pares y otra para las

    impares. Si seguimos el procedimiento indicado por las ecuaciones (2.19) y (2.24),

    combinamos la primera mitad y la ltima mitad de los puntos de entrada para cada

    DFT de (N/2) puntos y luego calculamos la DFT de (N/4) puntos. En la Fig. 2. 8 se

    ilustra este paso para el caso de 8 puntos.

    DFT

    N/2 puntos

    DFT

    N/2 puntos

    x[0]

    x[1]

    x[2]

    x[3]

    x[4]

    x[5]

    x[6]

    x[7]

    X[0]

    X[2]

    X[4]

    X[6]

    X[1]

    X[3]

    X[5]

    X[7]

    g[0]

    g[1]

    g[2]

    g[3]

    h[0]

    h[1]

    h[2]

    h[3]

    0

    NW

    1

    NW

    2

    NW

    3

    NW

    -1

    -1

    -1

    -1

    Fig. 2. 7.- Descomposicin de una DFT de N puntos en dos DFT de (N/2) puntos

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 14

    Para el caso de la DFT de 8 puntos, el sistema ha quedado reducido a calcular

    cuatro DFT de 2 puntos, que se realizan sumando y restando los puntos de entrada.

    La DFT de 2 puntos de la Fig. 2. 8 podemos sustituirla por la estructura que se

    muestra en la Fig. 2. 9, de tal forma que el clculo de la DFT de 8 puntos se realiza

    siguiendo el algoritmo mostrado en la Fig. 2. 10.

    Contando las operaciones aritmticas de la Fig. 2. 10 y generalizando para

    N=2p, vemos como necesitamos (N/2)log2N multiplicaciones complejas y Nlog2N

    sumas complejas. Por lo tanto el nmero total de operaciones es el mismo para los

    algoritmos de diezmado en el tiempo y diezmado en la frecuencia.

    x[0]

    x[1]

    x[2]

    x[3]

    x[4]

    x[5]

    x[6]

    x[7]

    X[0]

    X[4]

    X[2]

    X[6]

    X[1]

    X[5]

    X[3]

    X[7]

    DFT

    N/4 puntos

    DFT

    N/4 puntos

    DFT

    N/4 puntos

    DFT

    N/4 puntos

    0

    NW

    1

    NW

    2

    NW

    3

    NW

    0

    NW

    2

    NW

    0

    NW

    2

    NW

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    Fig. 2. 8.- Descomposicin de una DFT de 8 puntos en 4 de DFT de 2 puntos

    Fig. 2. 9.- DFT de dos puntos.

    0

    NW

    -1X [p]

    -1X [q]

    X [p]

    X [q]-1

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 15

    2.3.- Algoritmos para valores de N ms grandes.

    Aunque el caso especial de N potencia de 2 conduce a algoritmos con

    estructuras simples, no es la nica restriccin sobre N que puede producir una

    reduccin de los clculos necesarios para obtener la DFT. De hecho, en muchos

    casos es deseable evaluar eficientemente la DFT para obtener otros valores de N, y se

    pueden emplear los mismos principios aplicados cuando N es potencia de 2 para

    obtener los algoritmos de diezmado en el tiempo y en frecuencia al caso de que N sea

    un entero compuesto, es decir, el producto de dos o ms factores enteros. Por

    ejemplo, si N=RQ es posible expresar una DFT de N puntos como la suma de R DFT

    de Q puntos o como la suma de Q DFT de R puntos, y obtener as una reduccin en el

    nmero de operaciones. Si N tiene muchos factores, el proceso se puede repetir para

    cada uno de los ellos. Los algoritmos para el caso general de N compuesto utilizan un

    esquema de indexacin ms complicado que el caso de potencia de 2. Si los factores

    de N son primos entre s, el nmero de multiplicaciones se puede reducir a costa de la

    indexacin ms complicada de un algoritmo de factor primo.

    Por ejemplo, podemos analizar el caso en el que N es una potencia de 4

    (N=4v). Obviamente, podramos emplear para este clculo un radix-2, aunque es ms

    eficiente computacionalmente usar un radix-4.

    Para realizar una FFT radix-4 con diezmado en el tiempo, primero tomamos la

    secuencia de entrada y la dividimos en cuatro subsecuencias x(4n), x(4n+1), x(4n+2),

    x(4n+3), n=0, 1, , N/4-1. [3]

    x[0]

    x[1]

    x[2]

    x[3]

    x[4]

    x[5]

    x[6]

    x[7]

    X[0]

    X[4]

    X[2]

    X[6]

    X[1]

    X[5]

    X[3]

    X[7]

    0

    NW

    1

    NW

    2

    NW

    3

    NW

    0

    NW

    2

    NW

    2

    NW

    0

    NW

    0

    NW

    0

    NW

    0

    NW

    0

    NW

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    -1

    Fig. 2. 10.- DFT de 8 puntos usando DIF.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 16

    3

    4

    0

    ( / 4) 1

    / 40

    ( , ) ( , )

    ( , ) ( , )

    0,1,2,3; 0,1,2,3; 0,1,2,..., 1;4

    ( , ) (4 1)

    ( , ) ( )4

    lq lp

    N

    l

    Nmq

    Nm

    X p q W F l q W

    F l q x l m W

    Np l q

    x l m x m

    NX p q X p q

    =

    =

    =

    =

    = = =

    = +

    = +

    (2.25)

    As, las cuatro DFT de N/4 puntos F(l,q) de la ecuacin (2.25) se combinan

    para obtener la DFT de N puntos. La expresin que combina las DFT de n/4 puntos

    define una butterfly radix-4 con diezmado en el tiempo.

    La butterfly radix-4 se representa en la Fig. 2. 11.a, y de forma ms compacta

    en la Fig. 2. 11.b. En la figura se observa como cada butterfly conlleva 3

    multiplicaciones complejas y doce sumas complejas.

    En la Fig. 2. 12 se muestra la FFT radix-4 de longitud N=16 usando diezmado

    en el tiempo.

    0

    q

    2q

    3q

    -j

    -1

    j

    -1

    -1

    j

    -1

    -j

    0

    NW

    q

    NW

    2q

    NW

    3q

    NW

    a) b)

    Fig. 2. 11.- Clculo bsico de una butterfly en un algoritmo FFT radix 4.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 17

    Como valor ilustrativo, podemos obtener el algoritmo FFT radix-4 con diezmado

    en frecuencia fraccionando una DFT de N puntos en cuatro DFT de N/4 puntos.

    Tenemos:

    1

    0

    / 4 1 / 2 1 3 / 4 1 1

    0 / 4 / 2 3 / 4

    / 4 1 / 4 1/ 4

    0 0

    / 4 1/ 2 3 / 4

    0

    ( ) ( )

    ( ) ( ) ( ) ( )

    ( )4

    3

    2 4

    Nkn

    Nn

    N N N Nkn kn kn kn

    N N N N

    n n N n N n N

    N Nkn Nk kn

    N N Nn n

    NNk kn Nk

    N N N Nn

    X k x n W

    x n W x n W x n W x n W

    Nx n W W x n W

    N NW x n W W x n W

    =

    = = = =

    = =

    =

    =

    = + + +

    = + + +

    + + +

    / 4 1

    0

    Nkn

    n

    =

    (2.26)

    De la definicin de los twiddle factor, tenemos

    / 4 / 2 3 / 4( ) , ( 1) , ( ) kN k kN k kN kN N N

    W j W W j= = = (2.27)

    Luego,

    / 4 1

    0

    3( ) ( ) ( ) ( 1) ( )

    4 2 4

    Nk k k nk

    Nn

    N N NX k x n j x n x n j x n W

    =

    = + + + + + +

    (2.28)

    La relacin no es una DFT de N/4 puntos porque los twiddle factor dependen

    de N y no de N/4. Para convertirla en una DFT de N/4 puntos, subdividimos la

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    1

    2

    3

    0

    2

    4

    6

    0

    3

    6

    9

    x(0)

    x(1)

    x(2)

    x(3)

    x(4)

    x(5)

    x(6)

    x(7)

    x(8)

    x(9)

    x(10)

    x(11)

    x(12)

    x(13)

    x(14)

    x(15)

    X(0)

    X(4)

    X(8)

    X(12)

    X(1)

    X(5)

    X(9)

    X(13)

    X(2)

    X(6)

    X(10)

    X(14)

    X(3)

    X(7)

    X(11)

    X(15)

    Fig. 2. 12.- FFT radix-4 para N=16 usando diezmado en el tiempo.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 18

    secuencia en cuatro subsecuencias de N/4 puntos, X(4k), X(4k+1),X(4k+2) y X(4k+3),

    k=0, 1, , N/4. As obtenemos la DFT radix-4 con diezmado en frecuencia:

    / 4 10

    / 40

    / 4 1

    / 4

    0

    3(4 ) ( )

    4 2 4

    3(4 1) ( )

    4 2 4

    3(4 2) ( )

    4 2 4

    Nkn

    N Nn

    Nn kn

    N N

    n

    N N NX k x n x n x n x n W W

    N N NX k x n jx n x n jx n W W

    N N NX k x n x n x n x n

    =

    =

    = + + + + + +

    + = + + + +

    + = + + + +

    / 4 1

    2

    / 40

    / 4 13

    / 4

    0

    3(4 3) ( )

    4 2 4

    Nn kn

    N Nn

    Nn kn

    N N

    n

    W W

    N N NX k x n jx n x n jx n W W

    =

    =

    + = + + + +

    (2.29)

    Donde hemos usado la propiedad 4/ 4

    kn kn

    N NW W= . La entrada de cada DFT de

    N/4 puntos es una combinacin lineal de cuatro seales simples escaladas por un

    twiddle factor. Este procedimiento se repite v veces, donde v=log4N.

    Por ltimo podemos comparar el nmero de multiplicaciones y sumas de los

    distintos algoritmos que se usan para calcular una DFT de longitud N. [3] [4]

    Multiplicaciones Sumas

    N Radix-2 Radix-4 Radix-8 Radix-2 Radix-4 Radix-8

    16 24 20 152 148

    32 88 408

    64 264 208 204 1032 976 972

    128 712 2504

    256 1800 1392 5896 5488

    512 4360 3204 13566 12420

    1024 10248 7856 30728 28336

    Tabla 2. 1.- Nmero de multiplicaciones y sumas para calcular una DFT de de N puntos.

    2.4.- Aplicaciones de la DFT.

    Se ha comentado con anterioridad que la DFT es una de las herramientas ms

    importantes en el procesamiento digital de seales. Tres formas comunes en las que

    se usa son [5]:

    1.- Anlisis espectral de la seales.

    Es muy comn que la informacin se codifique en sinusoides que es lo que

    forma la seal. La forma de la forma de onda en el dominio del tiempo no es

    importante en este tipo de seales ya que la clave de la informacin esta en la

    amplitud, la frecuencia y la fase de la sinusoide. La DFT se usa para extraer esta

    informacin.

  • Clculo eficiente de la transformada de Fourier

    Escuela Superior de Ingenieros 19

    2.- Respuesta frecuencial de los sistemas.

    Los sistemas se analizan en el dominio del tiempo mediante la convolucin. Un

    anlisis similar se puede hacer en el dominio de la frecuencia. Usando la trasformada

    de Fourier, cada seal de entrada puede ser representada como un grupo de cosenos,

    cada uno con una amplitud y una fase especfica. De la misma manera, la DFT puede

    usarse para representar cada seal de salida de una forma similar. Esto significa que

    todo sistema lineal puede ser descrito completamente viendo como cambia la fase y la

    amplitud de los cosenos cuando pasan a travs de el. Esta informacin se denomina

    respuesta frecuencial del sistema. Desde que la respuesta al impulso y la respuesta

    frecuencial contienen informacin completa sobre el sistema, debe de haber una

    correspondencia unvoca entre ambas. Dada una, puedes calcular la otra. La relacin

    entre la respuesta al impulso y la respuesta frecuencial es uno de los fundamentos del

    procesamiento de seales: La respuesta frecuencial de un sistema es la Transformada

    de Fourier de la respuesta al impulso.

    3.- Convolucin va domino de la frecuencia.

    Si transformamos dos seales al domino de la frecuencia, las multiplicamos y

    transformamos el resultado al dominio del tiempo; obtenemos la convolucin de las

    dos seales. Aunque los pasos intermedios son muy diferentes, la salida es idntica a

    la convolucin estndar. Se elige este camino para realizar la convolucin debido a

    que la convolucin tiene dos problemas principales. El primero es que es

    matemticamente difcil de tratar, mientras que el segundo es la velocidad de clculo

    (la convolucin es lenta debido al gran numero de sumas y multiplicaciones que hay

    que calcular).