Algorithme de calcul rapide (FFT) de Cooley Tuckey
Contents
3.3. Algorithme de calcul rapide (FFT) de Cooley Tuckey#
3.3.1. Principe#
La transformée de Fourier de départ \(X(n)\) porte sur les \(N\) points d’un signal numérique \(x(k)\) :
en notant \(W_N=e^{j \frac{2 \pi }{N}}\). On parle de TFD d’ordre \(N\). Son temps de calcul est évalué à \(N^2\) operations d’additions/multiplications.
On suppose que \(N\) est une puissance de \(2\) : \(N=2^p\) et on va commencer à décomposer le signal en sous suites entrelacées.
3.3.1.1. Première décomposition#
où
On peut évaluer le temps de calcul suite à cette première décomposition à \(2 \left(\frac{N}{2}\right)^2 + N\) operations d’additions/multiplications, ce qui est déjà \(\ll N^2\), surtout si \(N\) est grand.
3.3.1.2. Deuxième décomposition#
où :
avec \(x_1(p)=x(2i)\) et \(x_2(p)=x(2i+1), \; i,p=0,...,N/2-1\).
…
3.3.1.3. Dernière décomposition#
On continue jusqu’à arriver à la plus petite transformée de Fourier possible qui porte sur deux points et que l’on appelle le “papillon” de la transformée de Fourier numérique (Fig. 3.10).
On aura alors réalisé \(Np\) transformées de Fourier d’ordre \(2\) ou “papillons”, soit un temps de calcul de \(\mathbf{N log_2(N)\ll N^2}\) opérations d’additions/multiplications.
3.3.2. Exemple pour \(N=2^3=8\)#
3.3.2.1. Première décomposition#
où \(X_1(n)\) porte sur \(x(0),x(2),x(4),x(6)\) et \(X_2(n)\) porte sur \(x(1),x(3),x(5),x(7)\).
3.3.2.2. Deuxième et dernière décomposition#
où \(X_{11}(n)\) porte sur \(x(0),x(4)\) et \(X_{12}(n)\) porte sur \(x(2),x(6)\).
où \(X_{21}(n)\) porte sur \(x(1),x(5)\) et \(X_{22}(n)\) porte sur \(x(3),x(7)\).\
3.3.2.3. Graphe correspondant#
On a \(p=3\) colonnes de \(\frac{N}{2}=4\) papillons, soit \(p\times\left(\frac{N}{2}\right)\times 2 = pN = log_2(N)N = 3 \times 8 =24\) opérations d’additions multiplications, au lieu de \(N^2=64\) si nous n’avions pas utilisé l’algorithme de FFT. On remarque que les échantillons de signal ne se présentent pas dans leur ordre naturel à l’entrée de l’algorithme. On peut utiliser un algorithme de renversement de l’adresse binaire (“bit reversal”) afin de les présenter dans l’ordre voulu.