Articulo de referencia

Algoritmo FFT de Bruun

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 do...

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: incógnitak=norte=0norte1incógnitanortemi2πinortenortekk=0,,norte1.{\displaystyle X_{k}=\sum _ {n=0}^{N-1}x_{n}e^{-{\frac {2\pi i}{N}}nk}\qquad k=0,\dots,N-1.}

Para mayor comodidad, denotemos las N raíces de la unidad por ω N n ( n  =  0,  ..., N 1):    ωnortenorte=mi2πinortenorte{\displaystyle \omega _ {N}^{n}=e^{-{\frac {2\pi i}{N}}n}} y definimos el polinomio x ( z ) cuyos coeficientes son x n : incógnita(z)=norte=0norte1incógnitanorteznorte.{\displaystyle x(z)=\sum _ {n=0}^{N-1}x_ {n}z^{n}.}

La DFT puede entenderse entonces como una reducción de este polinomio; es decir, X k viene dada por: incógnitak=incógnita(ωnortek)=incógnita(z)mod(zωnortek){\displaystyle X_{k}=x(\omega _{N}^{k})=x(z)\mod (z-\omega _{N}^{k})} 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 deincógnita(z){\displaystyle x(z)}mó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 evaluarincógnita(z){\displaystyle x(z)}módulo dos polinomiosU(z){\displaystyle U(z)}yV(z){\displaystyle V(z)}, primero podemos tomar el resto módulo su productoU(z){\displaystyle U(z)}V(z){\displaystyle V(z)}lo cual reduce el grado del polinomioincógnita(z){\displaystyle x(z)}y hace que las operaciones de módulo posteriores sean menos costosas desde el punto de vista computacional.

El producto de todos los monomios(zωnortek){\displaystyle (z-\omega _ {N}^{k})}para k =0.. N -1 es simplementeznorte1{\displaystyle z^{N}-1}(cuyas raíces son claramente las N raíces de la unidad). Entonces se desea encontrar una factorización recursiva deznorte1{\displaystyle z^{N}-1}en polinomios de pocos términos y de grado cada vez menor. Para calcular la DFT, se tomaincógnita(z){\displaystyle x(z)}mó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, queznorte1=F1(z)F2(z)F3(z){\displaystyle z^{N}-1=F_{1}(z)F_{2}(z)F_{3}(z)}y queFk(z)=Fk,1(z)Fk,2(z){\displaystyle F_{k}(z)=F_{k,1}(z)F_{k,2}(z)}y 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 2znorte1{\displaystyle z^{N}-1}enF1=(znorte/21){\displaystyle F_{1}=(z^{N/2}-1)}yF2=(znorte/2+1){\displaystyle F_{2}=(z^{N/2}+1)}Estas operaciones de módulo reducen el grado deincógnita(z){\displaystyle x(z)}por 2, lo que corresponde a dividir el tamaño del problema por 2. En lugar de factorizar recursivamenteF2{\displaystyle F_{2}}Sin 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 deF1{\displaystyle F_{1}}a 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:

z2METRO1=(zMETRO1)(zMETRO+1){\displaystyle z^{2M}-1=(z^{M}-1)(z^{M}+1)\,}z4METRO+az2METRO+1=(z2METRO+2azMETRO+1)(z2METRO2azMETRO+1){\displaystyle z^{4M}+az^{2M}+1=(z^{2M}+{\sqrt {2-a}}z^{M}+1)(z^{2M}-{\sqrt {2-a}}z^{M}+1)}

donde a es una constante real con | a | ≤ 2. Sia=2porque(ϕ){\displaystyle a=2\cos(\phi )},ϕ(0,π){\displaystyle \phi \in (0,\pi )}, entonces2+a=2porqueϕ2{\displaystyle {\sqrt {2+a}}=2\cos {\tfrac {\phi }{2}}}y2a=2porque(π2ϕ2){\displaystyle {\sqrt {2-a}}=2\cos({\tfrac {\pi }{2}}-{\tfrac {\phi }{2}})}.

En la etapa s , s = 0, 1, 2, n - 1, el estado intermedio consta de 2 s polinomiospags,0,,pags,2s1{\displaystyle p_{s,0},\dots ,p_{s,2^{s}-1}}de grado 2 n - s - 1 o menor, donde pags,0(z)=pag(z)mod(z2nortes1)ypags,metro(z)=pag(z)mod(z2nortes2porque(metro2sπ)z2norte1s+1)metro=1,2,,2s1{\displaystyle {\begin{aligned}p_{s,0}(z)&=p(z)\mod \left(z^{2^{ns}}-1\right)&\quad &{\text{y}}\\p_{s,m}(z)&=p(z)\mod \left(z^{2^{ns}}-2\cos \left({\tfrac {m}{2^{s}}}\pi \right)z^{2^{n-1-s}}+1\right)&m&=1,2,\dots ,2^{s}-1\end{aligned}}}

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. incógnitak=pag(mi2πik2norte){\displaystyle X_{k}=p(e^{2\pi i{\tfrac {k}{2^{n}}}})} 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 polinomiopags,(z){\displaystyle p_{s,\ell }(z)}se reduce a los polinomiospags+1,(z){\displaystyle p_{s+1,\ell }(z)}ypags+1,2s(z){\displaystyle p_{s+1,2^{s}-\ell }(z)}mediante 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: ϕnorte,α(z)={z2norte2porque(2πα)znorte+1si 0<α<1z2norte1si α=0{\displaystyle \phi _{N,\alpha }(z)={\begin{cases}z^{2N}-2\cos(2\pi \alpha )z^{N}+1&{\text{si }}0<\alpha <1\\\\z^{2N}-1&{\text{si }}\alpha =0\end{cases}}}

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 sonmi2πi(±α+k)/norte{\displaystyle e^{2\pi i(\pm \alpha +k)/N}}parak=0,1,,norte1{\displaystyle k=0,1,\dots ,N-1}en elα0{\displaystyle \alpha \neq 0}caso, ymi2πik/2norte{\displaystyle e^{2\pi ik/2N}}parak=0,1,,2norte1{\displaystyle k=0,1,\dots ,2N-1}en elα=0{\displaystyle \alpha =0}caso. Por lo tanto, estos polinomios pueden factorizarse recursivamente para un factor (base) r mediante:

ϕrMETRO,α(z)={=0r1ϕMETRO,(α+)/rsi 0<α0,5=0r1ϕMETRO,(1α+)/rsi 0,5<α<1=0r1ϕMETRO,/(2r)si α=0{\displaystyle \phi _{rM,\alpha }(z)={\begin{cases}\prod _{\ell =0}^{r-1}\phi _{M,(\alpha +\ell )/r}&{\text{if }}0<\alpha \leq 0.5\\\\\prod _{\ell =0}^{r-1}\phi _{M,(1-\alpha +\ell )/r}&{\text{if }}0.5<\alpha <1\\\\\prod _{\ell =0}^{r-1}\phi _{M,\ell /(2r)}&{\text{if }}\alpha =0\end{cases}}}

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.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Bruun%27s_FFT_algorithm&oldid=1320745047 "