Transformada rápida de Fourier (FFT): ¿Tiene el ‘FFTW’ un costo de k * N * log_2 (N)?

Sí, FFTW tiene un rendimiento [matemático] O (n \ lg n) [/ matemático] para cualquier tamaño de entrada n . El valor de la constante k que está oculta por la notación O grande dependerá del algoritmo específico que utilice (que elige probando muchos algoritmos diferentes, midiendo el tiempo de ejecución real de cada uno y luego eligiendo el más rápido).

El algoritmo de decimación en el tiempo radix-2 (DIT) Cooley-Tukey requiere [matemáticas] \ frac {3} {2} N \ lg N – 5 N + 8 [/ matemáticas] multiplicaciones y [matemáticas] \ frac {7 } {2} N \ lg N – 5 N + 8 [/ matemáticas], para un recuento total de operaciones de [matemáticas] 5 N \ lg N – 10 N + 16 [/ matemáticas], por lo tanto, [matemáticas] k = 5 [/matemáticas]. (Fuente: P. Duhamel y M. Vetterli, “Transformaciones rápidas de Fourier: una revisión tutorial y un estado del arte”, Procesamiento de señales , vol. 19, no. 4, pp. 259-299, abril de 1990. [En línea ]. Disponible: http://dx.doi.org/10.1016/0165-1…)

Para un Cooley-Tukey de decimación en el tiempo radix-4 (DIT), podemos reducir el recuento de operaciones a [matemáticas] \ frac {9} {8} N \ lg N – \ frac {43} {12} N + \ frac {16} {3} [/ matemáticas] multiplicaciones y [matemáticas] \ frac {25} {8} N \ lg N – \ frac {43} {12} N + \ frac {16} {3} [/ matemáticas], para un recuento total de operaciones de [matemáticas] \ frac {17} {4} N \ lg N – \ frac {43} {6} N + \ frac {32} {3} [/ matemáticas], por lo tanto [matemáticas] k = 4.25 [/ matemáticas].

Durante mucho tiempo, el algoritmo split-radix fue el FFT radix-2 más eficiente. Requiere [matemáticas] N \ lg N – 3 N + 4 [/ matemáticas] multiplicaciones y [matemáticas] 3 N \ lg N – 3 N + 4 [/ matemáticas], para un recuento total de operaciones de [matemáticas] 4 N \ lg N – 6 N + 8 [/ matemáticas], por lo tanto, [matemáticas] k = 4 [/ matemáticas].

Recientemente, se propuso un nuevo algoritmo modificado de radix dividido con un recuento total de operaciones de [matemáticas] \ frac {34} {9} N \ lg N – \ frac {124} {27} N – 2 \ lg N – \ frac {2} {9} (- 1) ^ {\ lg N} \ lg N [/ math]
[matemáticas] + \ frac {16} {27} (- 1) ^ {\ lg N} + 8 [/ matemáticas], es decir, [matemáticas] k = \ frac {34} {9} = 3. \ bar {7 } [/ math] (Fuente: SG Johnson y M. Frigo, “Una FFT Split-Radix modificada con menos operaciones aritméticas”, IEEE Transactions on Signal Processing , vol. 55, no. 1, pp. 111-119, enero. 2007. [En línea]. Disponible: http://dx.doi.org/10.1109/tsp.20…). Se implementa en FFTW, pero parece tener un efecto insignificante en el rendimiento (a excepción de algunas transformaciones discretas de coseno de tamaño pequeño).