Ce que la FFT vous montre réellement
Chaque son que vous entendez est une somme d'ondes sinusales. La transformation rapide de Fourier décompose cette somme. Voilà ce que ça veut dire, comment ça marche, et pourquoi un algorithme de 60 ans est toujours partout.
La question
Jouez un accord sur un piano — disons, C et E ensemble. Votre oreille entend un son. Mais ce son est deux fréquences superposées: 261,6 Hz et 329.6 Hz. Votre cochlée les sépare physiquement — différentes cellules capillaires résonnent à différentes fréquences, en envoyant des signaux distincts à votre cerveau.
Le Fast Fourier Transform fait la même chose, mais avec des nombres au lieu de cellules capillaires. Donnez-lui un signal (une séquence d'échantillons d'amplitude au fil du temps) et il retourne une liste de fréquences et de leurs forces. Il répond : ** Quelles sont les fréquences présentes et combien de chacune ?**
Ce qui se passe en fait
Un signal échantillonné dans le temps est une liste de nombres : l'amplitude à chaque point d'échantillonnage. Un enregistrement d'une seconde à 44 100 Hz est 44 100 numéros. Ces nombres décrivent le signal dans le domaine time — amplitude en fonction du temps.
La FFT convertit cela au domaine fréquence — amplitude en fonction de la fréquence. Même information, représentation différente. Comme la commutation entre les coordonnées cartésiennes et polaires : rien n'est créé ou détruit, seulement réexprimé.
Le noyau mathématique: chaque signal périodique peut être écrit comme une somme d'ondes sinus et cosinus à différentes fréquences. Voici le théorème de Fourier (1807). La FFT calcule les coefficients de cette somme — la quantité de chaque fréquence dans le signal.
Pourquoi "Fast"
La façon naïve de calculer une transformation de Fourier nécessite Opérations N2 pour les échantillons d'azote. Pour 1024 échantillons, c'est environ 1 million d'opérations. L'algorithme Cooley-Tukey (1965) réduit ce chiffre à N·log2(N) — environ 10 000 opérations pour la même entrée. Une accélération de 100x. Pour un million d'échantillons, la vitesse est de 50 000x.
L'astuce : diviser le point N en deux transformations N/2, récursivement. Cela exige que N soit une puissance de 2 (ou que vous pad avec des zéros). Chaque division réduit de moitié le problème. L'opération "butterfly" combine les moitiés:
X[k] = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]
Où W est un exponentiel complexe (une rotation dans le plan complexe). Les deux mêmes sous-résultats vous donnent deux points de sortie. C'est pourquoi l'algorithme est "rapide", il réutilise chaque calcul deux fois.
L'implémentation de PinePaper est un manuel Cooley-Tukey radix-2 DIT (décimation dans le temps). 40 lignes de JavaScript. Nous l'avons écrit de zéro plutôt que d'importer une bibliothèque parce que nous voulions que les étudiants puissent lire la source et comprendre chaque ligne.
Ce que ces barres signifient
Lorsque vous voyez un analyseur de spectre — des barres sautant à la musique — chaque barre représente une boîte de fréquences. La hauteur est la magnitude (force) de cette fréquence dans le signal courant.
- Une onde sinusoïdale pure produit une barre haute à sa fréquence et rien d'autre.
- Une onde carrée produit des barres à l'harmonique fondamental et à chaque harmonique impair (3ème, 5ème, 7ème...), diminuant comme 1/n. C'est pourquoi les ondes carrées sonnent "buzzy" — elles contiennent de l'énergie haute fréquence que les sines pures ne font pas.
- Bruit blanc produit des barres d'une hauteur à peu près égale partout. Chaque fréquence est présente avec une probabilité égale.
- Une voix humaine produit un fondamental (la hauteur que vous entendez) plus des formants – des pics résonnants de la forme de votre tract vocal qui distinguent les voyelles.
Fenêtre : Pourquoi les bords comptent
Il y a une prise. La FFT suppose que le signal se répète pour toujours. Mais notre échantillon est fini — il commence et s'arrête. Si le signal ne se trouve pas à zéro aux deux extrémités, la coupure abrupte crée une teneur artificielle en haute fréquence. Ceci s'appelle une fuite spectrale**.
La correction : multipliez le signal par une fonction window qui s'éteint facilement à zéro aux bords. Fenêtres communes:
- Hann (cosine cloche): bon but général, perd une certaine résolution de fréquence
- Hamming: similaire à Hann mais n'atteint pas zéro aux bords, un peu mieux suppression de lobe latéral
- Blackman: lobe principal plus étroit, meilleure suppression de lobe latéral, perd plus de résolution de fréquence
Le choix est toujours un compromis entre la résolution de fréquence (comment précisément vous pouvez identifier une fréquence) et la fuite spectrale (combien d'énergie saigne dans les bacs voisins). Il n'y a pas de fenêtre parfaite. Il s'agit là d'une conséquence du principe de l'incertitude — vous ne pouvez pas avoir arbitrairement une connaissance précise du temps et de la fréquence simultanément.
Où vit la FFT
Vous interagissez constamment avec les résultats de FFT :
- ** compression MP3 et AAC** : transformer l'audio en domaine de fréquence, rejeter les fréquences en dessous du seuil auditif, compresser ce qui reste. La transformation est la base complète de la compression audio perdue.
- JPEG compression: la version 2D (DCT) transforme les blocs de 8×8 pixels en domaine de fréquence, quantifie les composants haute fréquence. C'est pourquoi les artefacts JPEG apparaissent comme des blocs.
- WiFi et 5G: OFDM codifie les données sur de nombreux sous-porteurs de fréquences. La FFT convertit entre la transmission temporelle et les symboles de données de domaine de fréquence.
- ** Imagerie MRI** : le signal brut d'un scanner IRM est dans l'espace de fréquence. L'inverse FFT reconstruit l'image spatiale. Littéralement : chaque IRM que vous avez jamais vue est une transformation inverse de Fourier.
- Shazam: calcule le spectrogramme (FFT sur les fenêtres coulissantes), extrait les pics, correspond au motif d'une base de données. La FFT est la première étape pour reconnaître chaque chanson.
Un algorithme vieux de 60 ans, dans votre poche, fonctionnant des milliards de fois par jour.
Essaie
Ouvrez PinePaper, sélectionnez le générateur d'analyseur de spectre. Générer une vague carrée. Regardez les barres — vous verrez les harmoniques étranges tomber comme 1/n. Passer à une porte de scie — maintenant toutes les harmoniques sont présentes, tombant de 1/n. Passer au bruit — spectre plat, toutes les fréquences également probables.
Modifier la fonction de fenêtre. Regardez comment Hann lisse le spectre au prix de pics plus larges. Passer à Blackman — pics plus étroits mais lobes latéraux inférieurs.
Vous ne lisez pas sur le FFT. Vous mesurez les signaux et observez ce que la transformation révèle. C'est la différence entre savoir et comprendre.
Références
- Brigham, E.O. (1988). La transformation rapide de Fourier et ses applications. Salle Prentice.
- Cooley, J.W. et Tukey, J.W. (1965). Un algorithme pour le calcul machine de la série complexe Fourier. Mathématiques de calcul, 19(90), 297-301.
- Fourier, J. (1822). Théorie analytique de la chaleur. Paris : Firmin Didot.
- Harris, F.J. (1978). Sur l'utilisation de Windows pour l'analyse harmonique avec le Discret Fourier Transform. Procédures de l'IEEE, 66(1), 51-83.
- Oppenheim, A.V. et Schafer, R.W. (2009). * Traitement des signaux en temps réel* (3e éd.). Salle Prentice.
- Shannon, C.E. (1949). Communication en présence de bruit. Procédures de l'IRE, 37(1), 10-21.
- Smith, S.W. (1997). Le Guide du scientifique et ingénieur sur le traitement numérique des signaux. Édition technique de Californie.
- Wang, A., et al. (2003). Un Algorithme de recherche audio industriel. Procédures d'ISMIR 2003. (Algorithme d'empreinte audio de Shazam.)
- Wallace, G.K. (1991). La norme JPEG Still Picture Compression. Communications de l'ACM, 34(4), 30-44.
- La FFT de PinePaper est une implémentation de Cooley-Tukey radix-2 avec Hann, Hamming et Blackman, ainsi que des filtres passe-bas et passe-haut. Essayez-le gratuitement à pinepaper.studio/editor.*
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor