El algoritmo de Bruun es un algoritmo de transformada rápida de Fourier (FFT) basado en un enfoque de factorización polinomial recursiva inusual , propuesto para potencias de dos por G. Bruun en 1978 y generalizado a tamaños compuestos pares arbitrarios por H. Murakami en 1996. Debido a que sus operaciones involucran solo coeficientes reales hasta la última etapa de cálculo, se propuso inicialmente como una forma de calcular eficientemente la transformada discreta de Fourier (DFT) de datos reales. Sin embargo, el algoritmo de Bruun no ha tenido un uso generalizado, ya que los enfoques basados en el algoritmo FFT ordinario de Cooley-Tukey se han adaptado con éxito a datos reales con al menos la misma eficiencia. Además, hay evidencia de que el algoritmo de Bruun puede ser intrínsecamente menos preciso que Cooley-Tukey frente a una precisión numérica finita ( Storn 1993 ) .
Sin embargo, el algoritmo de Bruun ilustra un marco algorítmico alternativo que puede expresar tanto el algoritmo de Cooley-Tukey como a sí mismo, y por lo tanto proporciona una perspectiva interesante sobre las FFT que permite combinaciones de ambos algoritmos y otras generalizaciones.
Un enfoque polinomial para la DFT
Recordemos que la DFT se define mediante la fórmula:
Para mayor comodidad, denotemos las N raíces de la unidad por ω N n ( n = 0, ..., N − 1): y definimos el polinomio x ( z ) cuyos coeficientes son x n :
La DFT puede entenderse entonces como una reducción de este polinomio; es decir, X k viene dada por: donde mod denota la operación de resto polinomial . La clave de algoritmos rápidos como el de Bruun o el de Cooley-Tukey reside en el hecho de que este conjunto de N operaciones de resto se puede realizar en etapas recursivas.
Factorizaciones recursivas y FFT
Para calcular la DFT, necesitamos evaluar el resto demódulo N polinomios de grado 1 como se describió anteriormente. Evaluar estos restos uno por uno es equivalente a evaluar directamente la fórmula DFT usual y requiere O( N² ) operaciones. Sin embargo, se pueden combinar estos restos recursivamente para reducir el costo, utilizando el siguiente truco: si queremos evaluarmódulo dos polinomiosy, primero podemos tomar el resto módulo su productolo cual reduce el grado del polinomioy hace que las operaciones de módulo posteriores sean menos costosas desde el punto de vista computacional.
El producto de todos los monomiospara k =0.. N -1 es simplemente(cuyas raíces son claramente las N raíces de la unidad). Entonces se desea encontrar una factorización recursiva deen polinomios de pocos términos y de grado cada vez menor. Para calcular la DFT, se tomamódulo cada nivel de esta factorización a su vez, recursivamente, hasta llegar a los monomios y al resultado final. Si cada nivel de la factorización divide cada polinomio en un número O(1) (constante-acotado) de polinomios más pequeños, cada uno con un número O(1) de coeficientes distintos de cero, entonces las operaciones de módulo para ese nivel toman un tiempo O( N ); dado que habrá un número logarítmico de niveles, la complejidad general es O( N log N ).
Más explícitamente, supongamos, por ejemplo, quey quey así sucesivamente. El algoritmo FFT correspondiente consistiría en calcular primero x k ( z ) = x ( z ) mod F k ( z ), luego calcular x k , j ( z ) = x k ( z ) mod F k , j ( z ), y así sucesivamente, creando recursivamente más y más polinomios restantes de grado cada vez menor hasta llegar a los resultados finales de grado 0.
Además, siempre que los factores polinómicos en cada etapa sean relativamente primos (lo que para los polinomios significa que no tienen raíces comunes), se puede construir un algoritmo dual invirtiendo el proceso con el teorema chino del resto .
Cooley-Tukey como factorización polinómica
El algoritmo estándar de decimación en frecuencia (DIF) de Cooley-Tukey en base r se corresponde estrechamente con una factorización recursiva. Por ejemplo, los factores de Cooley-Tukey DIF en base 2enyEstas operaciones de módulo reducen el grado depor 2, lo que corresponde a dividir el tamaño del problema por 2. En lugar de factorizar recursivamenteSin embargo, Cooley-Tukey calcula primero x 2 ( z ω N ), desplazando todas las raíces (por un factor de rotación ) para poder aplicar la factorización recursiva dea ambos subproblemas. Es decir, Cooley-Tukey garantiza que todos los subproblemas también sean DFT, mientras que esto no suele ser cierto para una factorización recursiva arbitraria (como la de Bruun, más adelante).
La factorización de Bruun
El algoritmo básico de Bruun para potencias de dos N = 2 n factoriza z 2 n - 1 recursivamente mediante las siguientes reglas:
donde a es una constante real con | a | ≤ 2. Si,, entoncesy.
En la etapa s , s = 0, 1, 2, n - 1, el estado intermedio consta de 2 s polinomiosde grado 2 n - s - 1 o menor, donde
Mediante la construcción de la factorización de z 2 n - 1 , los polinomios p s , m ( z ) codifican cada uno 2 n - s valores. de la transformada de Fourier, para m =0, los índices cubiertos son k = 0 , 2 k , 2∙2 s , 3∙2 s ,..., (2 n - s -1)∙2 s , para m > 0 los índices cubiertos son k = m , 2 s +1 - m , 2 s +1 + m , 2∙2 s +1 - m , 2∙2 s +1 + m , ..., 2 n - m .
Durante la transición a la siguiente etapa, el polinomiose reduce a los polinomiosymediante división polinómica. Si se desea mantener los polinomios en orden ascendente de índice, este patrón requiere una implementación con dos arreglos. Una implementación in situ produce una secuencia de índices predecible, pero muy desordenada; por ejemplo, para N = 16, el orden final de los 8 restos lineales es (0, 4, 2, 6, 1, 7, 3, 5).
Al final de la recursión, para s = n -1 , quedan 2 n -1 polinomios lineales que codifican dos coeficientes de Fourier X 0 y X 2 n -1 para el primero y para cualquier otro k -ésimo polinomio los coeficientes X k y X 2 n - k .
En cada etapa recursiva, todos los polinomios de grado común 4 M -1 se reducen a dos partes de la mitad del grado 2 M -1 . El divisor de este cálculo del resto polinómico es un polinomio cuadrático z m , de modo que todas las reducciones se pueden reducir a divisiones polinómicas de polinomios cúbicos por polinomios cuadráticos. Hay N /2 = 2 n −1 de estas pequeñas divisiones en cada etapa, lo que da como resultado un algoritmo O ( N log N ) para la FFT.
Además, dado que todos estos polinomios tienen coeficientes puramente reales (hasta la última etapa), aprovechan automáticamente el caso especial en el que las entradas x n son puramente reales para ahorrar aproximadamente un factor de dos en cálculo y almacenamiento. También se puede aprovechar directamente el caso de datos reales simétricos para calcular la transformada discreta del coseno ( Chen y Sorensen, 1992 ) .
Generalización a raíces arbitrarias
La factorización de Bruun, y por lo tanto el algoritmo FFT de Bruun, se generalizó para manejar longitudes compuestas pares arbitrarias, es decir, dividiendo el grado del polinomio por una base (factor) arbitraria, como sigue. Primero, definimos un conjunto de polinomios φ N , α ( z ) para enteros positivos N y para α en [ 0, 1) de la siguiente manera:
Nótese que todos los polinomios que aparecen en la factorización de Bruun anterior se pueden escribir de esta forma. Los ceros de estos polinomios sonparaen elcaso, yparaen elcaso. Por lo tanto, estos polinomios pueden factorizarse recursivamente para un factor (base) r mediante:
Referencias
- Bruun, Georg (1978). " Filtros DFT de transformada Z y FFT" (PDF) . IEEE Transactions on Acoustics, Speech, and Signal Processing . 26 (1): 56– 63. doi : 10.1109/TASSP.1978.1163036 .
- Nussbaumer, HJ (1990). Algoritmos de convolución y transformada rápida de Fourier . Serie Springer en Ciencias de la Información. vol. 2. Berlín: Springer-Verlag. doi : 10.1007/978-3-642-81897-4 . ISBN 978-3-540-11825-1.
- Wu, Yuhang (1990). "Nuevas estructuras FFT basadas en el algoritmo de Bruun" (PDF) . IEEE Transactions on Acoustics, Speech, and Signal Processing . 38 (1): 188– 191. doi : 10.1109/29.45572 .
- Chen, Jianping; Sorensen, Henrik (1992). "Un algoritmo FFT eficiente para datos reales simétricos". [ Actas ] ICASSP-92: Conferencia Internacional IEEE de 1992 sobre Acústica, Habla y Procesamiento de Señales . Vol. 5. págs. 17–20 . doi : 10.1109/ICASSP.1992.226669 . ISBN 0-7803-0532-9.
- Storn, Rainer (1993). "Algunos resultados en el análisis de errores de punto fijo del algoritmo Bruun-FTT [ sic ] ". IEEE Transactions on Signal Processing . 41 (7): 2371– 2375. Bibcode : 1993ITSP...41.2371S . doi : 10.1109/78.224246 .
- Murakami, Hideo (1994). "Algoritmos de decimación en el tiempo y en la frecuencia de valores reales". IEEE Transactions on Circuits and Systems II: Analog and Digital Signal Processing . 41 (12): 808– 816. doi : 10.1109/82.338622 .
- Murakami, Hideo (1996). «Algoritmos de transformada discreta de Fourier rápida y convolución cíclica de valores reales y longitud par altamente compuesta». Actas de la Conferencia Internacional IEEE de Acústica, Habla y Procesamiento de Señales de 1996. Vol. 3. págs. 1311–1314 . doi : 10.1109/ICASSP.1996.543667 . ISBN 0-7803-3192-3.
- Mittal, Shashank; Khan, Md. Zafar Ali; Srinivas, MB (2007). "Estudio comparativo de diferentes arquitecturas FFT para radio definida por software". Sistemas informáticos embebidos: arquitecturas, modelado y simulación . Notas de clase en ciencias de la computación. Vol. 4599. pp. 375–384 . doi : 10.1007/978-3-540-73625-7_39 . ISBN 978-3-540-73622-6.
- transformadas rápidas de Fourier