stringtranslate.com

Algoritmo FFT de base dividida

La FFT de radio dividido es un algoritmo de transformada rápida de Fourier (FFT) para calcular la transformada discreta de Fourier (DFT), y fue descrita por primera vez en un artículo inicialmente poco apreciado por R. Yavne (1968)[1] y posteriormente redescubierta simultáneamente por varios autores en 1984. (El nombre "radio dividido" fue acuñado por dos de estos reinventores, P. Duhamel y H. Hollmann). En particular, el radio dividido es una variante del algoritmo FFT de Cooley-Tukey que utiliza una mezcla de los radios 2 y 4: expresa recursivamente una DFT de longitud N en términos de una DFT más pequeña de longitud N /2 y dos DFT más pequeñas de longitud N /4.

La FFT de base dividida, junto con sus variaciones, tuvo durante mucho tiempo la distinción de lograr el recuento de operaciones aritméticas publicadas más bajo (número exacto total de sumas y multiplicaciones reales requeridas ) para calcular una DFT de tamaños de potencia de dos N . El recuento aritmético del algoritmo de base dividida original se mejoró en 2004 (con las ganancias iniciales logradas en el trabajo no publicado de J. Van Buskirk mediante la optimización manual para N = 64 [2] [3]), pero resulta que todavía se puede lograr el nuevo recuento más bajo mediante una modificación de la base dividida (Johnson y Frigo, 2007). Aunque el número de operaciones aritméticas no es el único factor (o incluso necesariamente el factor dominante) para determinar el tiempo requerido para calcular una DFT en una computadora , la cuestión del recuento mínimo posible es de interés teórico desde hace mucho tiempo. (Actualmente no se ha demostrado un límite inferior estricto en el recuento de operaciones).

El algoritmo de base dividida solo se puede aplicar cuando N es un múltiplo de 4, pero como divide una DFT en DFT más pequeñas, se puede combinar con cualquier otro algoritmo FFT según se desee.

Descomposición por raíz dividida

Recordemos que la DFT se define mediante la fórmula:

donde es un número entero que va de a y denota la raíz primitiva de la unidad :

y por lo tanto: .

El algoritmo de base dividida funciona expresando esta suma en términos de tres sumas más pequeñas. (Aquí, presentamos la versión de "diezmado en el tiempo" de la FFT de base dividida; la versión de diezmado dual en frecuencia es esencialmente el reverso de estos pasos).

En primer lugar, una suma sobre los índices pares . En segundo lugar, una suma sobre los índices impares dividida en dos partes: y , según si el índice es 1 o 3 módulo 4. Aquí, denota un índice que va de 0 a . Las sumas resultantes se ven así:

donde hemos utilizado el hecho de que . Estas tres sumas corresponden a porciones de pasos Cooley-Tukey de base 2 (tamaño N /2) y base 4 (tamaño N /4), respectivamente. (La idea subyacente es que la subtransformada de índice par de base 2 no tiene un factor multiplicativo delante de ella, por lo que debe dejarse como está, mientras que la subtransformada de índice impar de base 2 se beneficia al combinar una segunda subdivisión recursiva).

Estas sumas más pequeñas son ahora exactamente DFT de longitud N /2 y N /4, que pueden realizarse de forma recursiva y luego recombinarse.

Más específicamente, denotemos el resultado de la DFT de longitud N /2 (para ), y denotemos y los resultados de las DFT de longitud N /4 (para ). Entonces, el resultado es simplemente:

Sin embargo, esto realiza cálculos innecesarios, ya que resulta que comparte muchos cálculos con . En particular, si sumamos N /4 a k , las DFT de tamaño N /4 no cambian (porque son periódicas en N /4), mientras que la DFT de tamaño N /2 no cambia si sumamos N /2 a k . Por lo tanto, lo único que cambia son los términos y , conocidos como factores de twiddle . Aquí, usamos las identidades:

Para finalmente llegar a:

que proporciona todos los resultados si dejamos el rango de a en las cuatro expresiones anteriores.

Nótese que estas expresiones están organizadas de tal manera que necesitamos combinar las diversas salidas de DFT por pares de adiciones y sustracciones, que se conocen como mariposas . Para obtener el conteo mínimo de operaciones para este algoritmo, uno necesita tomar en cuenta casos especiales para (donde los factores de twiddle son la unidad) y para (donde los factores de twiddle son y pueden ser multiplicados más rápidamente); vea, por ejemplo, Sorensen et al. (1986). Las multiplicaciones por y se cuentan ordinariamente como libres (todas las negaciones pueden ser absorbidas convirtiendo las adiciones en sustracciones o viceversa).

Esta descomposición se realiza de forma recursiva cuando N es una potencia de dos. Los casos base de la recursión son N = 1, donde la DFT es solo una copia , y N = 2, donde la DFT es una suma y una resta .

Estas consideraciones dan como resultado un recuento: sumas y multiplicaciones reales, para N > 1 una potencia de dos. Este recuento supone que, para potencias impares de 2, el factor restante de 2 (después de todos los pasos de división de base, que dividen N por 4) se maneja directamente mediante la definición de DFT (4 sumas y multiplicaciones reales), o equivalentemente mediante un paso de FFT de Cooley–Tukey de base 2.

Referencias