Transformée de Fourier discrète

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La transformée de Fourier discrète (TFD) est un outil mathématique de traitement du signal numérique, qui est l'équivalent discret de la transformée de Fourier continue qui est utilisée pour le traitement du signal analogique.

Il ne faut pas confondre avec la transformée de Fourier rapide qui est un algorithme particulier de calcul de la transformée de Fourier discrète.

Sa définition mathématique pour un signal s de \mathrm{N} échantillons est la suivante :

\mathrm{S}(k) = \sum_{n=0}^{\mathrm{N}-1}s(n)\cdot e^{-2 i \pi k \frac{n}{\mathrm{N}}} \qquad \text{pour} \qquad  0 \leqslant k < \mathrm{N}

La transformée inverse est donnée par :

s(n) = \frac{1}{\mathrm{N}} \sum_{k=0}^{\mathrm{N}-1}\mathrm{S}(k)\cdot e^{2 i \pi n \frac{k}{\mathrm{N}}}

On obtient ainsi une représentation spectrale discrète du signal échantillonné s(n).

Il est important de comprendre que la TFD ne calcule pas le spectre continu d'un signal continu.

La TFD permet seulement d'évaluer une représentation spectrale discrète (spectre échantillonné) d'un signal discret (signal échantillonné) sur une fenêtre de temps finie (échantillonnage borné dans le temps).

L'exemple ci-dessous peut laisser croire que la TFD permet de calculer le spectre d'un signal continu, mais cela n'arrive que lorsque la fenêtre d'échantillonnage correspond à un multiple strictement supérieur à deux de la période du signal échantillonné (dans ce cas on a forcément évité le repliement de spectre, c'est le théorème de Shannon):

Figure 1 : Transformée de Fourier discrète sur N = 64 points d'un sinus de fréquence 7 812,5 Hz échantillonné à 100 000 échantillons par seconde (100 kéch/s).

Ces définitions ne sont pas uniques : on peut tout à fait normer la TFD par 1/\mathrm{N}, et ne pas normer la TFD inverse, ou encore normer les deux par \tfrac{1}{\sqrt{\mathrm{N}}}, le but étant dans tous les cas de retrouver le signal originel par la TFD inverse de sa TFD.

La TFD correspond à l'évaluation sur le cercle unité de la transformée en Z pour des valeurs discrètes de la fréquence.

Fréquence d'échantillonnage et interpolation[modifier | modifier le code]

On peut remarquer que ce signal est périodique de période \mathrm{N}, et renseigne sur les fréquences comprises entre -\mathrm{F_e}/2 et \mathrm{F_e}/2, \mathrm{F_e} étant la fréquence d'échantillonnage souvent noté f_\mathrm{s} dans la littérature anglo-saxonne. On n'a donc que \mathrm{N} points pour analyser le spectre, et il peut être intéressant d'augmenter ce nombre de points d'analyse afin d'augmenter la précision spectrale (\delta \mathrm{F} = \mathrm{F_e}/N , sans zero-padding, la résolution se confond avec la précision) et donc de mieux localiser les maxima de son spectre (un signal de fréquence non multiple de \mathrm{F_e}/\mathrm{N} ne sera pas vu après TFD. Il y a alors perte d'information). Il faut distinguer la précision de la résolution qui est la capacité de distinguer deux sinusoïdes à des fréquences proches (\mathrm{F_e}/\mathrm{N}).

Pour augmenter le nombre de points, on peut :

  • Augmenter la fréquence d'échantillonnage. Mais cela a un coût en terme de ressources matérielles.
  • Faire une interpolation.

Cela se fait par la technique du bourrage de zéros (en anglais zero-padding), qui consiste à compléter le signal s(n) par \mathrm{P} zéros. Le nombre de points d'analyse est donc augmenté, mais le nombre de points de signal utile reste le même (ce qui ne change donc pas la résolution). La nouvelle définition devient :

\mathrm{S}(k) = \sum_{n=0}^{\mathrm{N} + \mathrm{P} - 1}s(n)\cdot e^{-2 i \pi k \frac{n}{\mathrm{N} + \mathrm{P}}} = \sum_{n=0}^{\mathrm{N} - 1}s(n)\cdot e^{-2 i \pi k \frac{n}{\mathrm{N} + \mathrm{P}}}

On somme toujours les mêmes valeurs de s(n) (les P autres étant nulles), mais on obtient une TFD de période \mathrm{N} + \mathrm{P} au lieu de simplement \mathrm{N} : on a \mathrm{P} points supplémentaires pour décrire la même TFD, on a donc augmenté sa précision. Cette technique est notamment utilisée pour avoir un nombre de points total \mathrm{N} + \mathrm{P} en puissance de deux, et pouvoir utiliser un algorithme de transformée de Fourier rapide.

On peut, de la même manière, faire du bourrage de zéros sur le spectre afin d'obtenir, par transformée inverse, une interpolation sur le signal initial.

On considère ici toujours une fréquence d'échantillonnage de 1. En parlant en fréquences réduites (normalisées par rapport à la fréquence d'échantillonnage), la TFD est décrite pour des valeurs de la fréquence réduite variant entre 0 (pour k=0) et 1 (pour k = \mathrm{N} + \mathrm{P}).

Signaux réels[modifier | modifier le code]

Pour un signal réel, on a la relation

 \mathrm{S}(k)^* = \mathrm{S}(-k)~

(propriété de symétrie hermitienne). Lorsque l'on s'intéresse au spectre d'un signal, on élève le module de sa TFD au carré : le spectre est donc pair.

Or, on a vu que la TFD est périodique, de période \mathrm{N} + \mathrm{P} : les fréquences comprises entre \tfrac{\mathrm{N} + \mathrm{P}}{2} et \mathrm{N} + \mathrm{P} sont les mêmes que celles comprises entre -\tfrac{\mathrm{N} + \mathrm{P}}{2} et 0. Les fréquences négatives étant identiques aux positives, toute l'information spectrale est contenue entre les fréquences \tfrac{\mathrm{N} + \mathrm{P}}{2} et \mathrm{N} + \mathrm{P}.

Transformation à deux dimensions[modifier | modifier le code]

En traitement d'images, on utilise la transformée de Fourier à deux dimensions. Sa définition discrète est :

\mathrm{S}(u, v) = \sum_{m = 0}^{\mathrm{M} - 1} \sum_{n = 0}^{\mathrm{N} - 1} s(m, n) \cdot \mathrm{e}^{-2i\pi \left ( \frac{um}{\mathrm{M}} + \frac{vn}{\mathrm{N}} \right )}.

Applications[modifier | modifier le code]

La TFD est utilisée dans un large spectre d'applications, seuls les plus communs sont listés ici. Toutes ces applications nécessitent l'existence d'un algorithme rapide de calcul de la TFD et de son inverse, voir à ce sujet les méthodes de transformée de Fourier rapide.

Analyse spectrale[modifier | modifier le code]

L'analyse spectrale des signaux est un élément essentiel en électronique pour de nombreuses raisons parmi lesquelles on peut citer :

  • déterminer la largeur de bande de fréquence occupée par une transmission ;
  • évaluer les distorsions harmoniques apportées par le traitement des signaux ;
  • mesurer les filtres.

L'électronicien qui a toujours besoin de vérifier expérimentalement, a besoin d'un outil de mesure, l'analyseur de spectre. Il existe trois grandes familles d'analyseur de spectre, chacun ayant des caractéristiques intrinsèques :

L'analyseur de spectre à balayage (analogique)[modifier | modifier le code]

Comme son nom l'indique, cet analyseur balaye une plage de fréquence en utilisant un filtre de largeur réglable. Il est capable de mesurer des plages de fréquence allant de l'audio à l'optique et ce pour des signaux d'amplitude très faible.

L'analyseur de spectre à FFT (numérique)[modifier | modifier le code]

La FFT (Fast Fourier Transform ou transformée de Fourier rapide) est ici utilisée après échantillonnage du signal d'entrée basses fréquences (audio). Avantage : il est capable de capturer les signaux en temps réel avec une résolution spectrale très fine qui dépend du nombre de points \mathrm{N} et de la fenêtre de pondération utilisée.

L'augmentation de la rapidité et de la résolution des convertisseurs analogique numérique permettra d'analyser des signaux à des fréquences de plus en plus élevées.

L'analyseur de signaux vectoriel (analogique/numérique)[modifier | modifier le code]

Comme il combine les technologies des deux premiers (balayage et FFT), il permet d'analyser des signaux dont les fréquences ne sont séparées que de quelques mHz sur toute la gamme de fréquences radio. Très utilisé dans le domaine des transmissions numériques pour analyser des signaux complexes (QAM, QPSK,)

Compression de données[modifier | modifier le code]

Le traitement du signal en général utilise énormément les opérations dans le domaine fréquentiel et en particulier la TFD ou une de ses variantes. En compression du son ou de l'image, des transformées proches de la TFD (par exemple la transformée en cosinus discrète) sont appliquées en général sur des portions de signal, pour réduire la complexité. Les coefficients \mathrm{S}(k) sont ensuite quantifiés avec des pas de quantification plus élevés pour les hautes fréquences, qui sont considérées comme négligeables pour la perception humaine. Le gain en compression vient de la réduction de précision de ces coefficients (voire leur suppression totale) qui nécessitent alors moins de bits pour être codés. Il s'ensuit généralement une étape de codage entropique. La reconstruction du signal s'effectue alors à partir de cet ensemble réduit de coefficients quantifiés.

Exemple : Sur la figure 1, il est facile d'observer que le traitement temporel du signal sans perte d'information, nécessite de mémoriser 64 échantillons alors que le traitement fréquentiel n'en nécessite qu'un seul point (en rappelant que les deux raies portent la même information). Et il n'y a pas de perte.

Équations aux dérivées partielles[modifier | modifier le code]

Multiplication de grands nombres entiers[modifier | modifier le code]

Certains des algorithmes les plus rapides pour la multiplication de grands nombres entiers sont basés sur la TFD. Les séquences de chiffres sont interprétées comme les éléments d'un vecteur, dont on calcule la convolution. On calcule pour cela leur TFD, qui sont multipliées entre elles (une convolution en temps est un produit en fréquence) puis on effectue la TFD inverse.

Analyse de séries temporelles[modifier | modifier le code]

La TFD est utilisée pour l'étude des séries temporelles (ou chronologiques) où le but est de trouver des corrélations entre deux séquences de données. Un exemple classique est l'analyse des cours de la bourse, afin de repérer des événements particuliers. La problématique est en général celle de la fouille de données, ou de la recherche par similarité. La TFD est utilisée ici comme un moyen de réduire la dimensionnalité du problème. La TFD permet en effet de décorréler les données de départ et de ne travailler que sur un petit nombre de coefficients significatifs.

Quelques TFD de signaux classiques[modifier | modifier le code]

Quelques signaux et leur TFD
x_k=\frac{1}{\mathrm{N}}\sum_{n = -\mathrm{N}/2}^{(\mathrm{N}/2)-1}\mathrm{X}_n \cdot e^{i 2 \pi kn/\mathrm{N}} \mathrm{X}_n=\sum_{k=0}^{\mathrm{N} - 1}x_k \cdot e^{-i 2 \pi kn/\mathrm{N}} Note
y_k = x_k \cdot e^{i 2 \pi kl/\mathrm{N}} \, \mathrm{Y}_n = \mathrm{X}_{n-l}\, Propriété de translation
y_k = x_{k-n}\, \mathrm{Y}_n = \mathrm{X}_n \cdot e^{-i 2 \pi kn/\mathrm{N}}
x_n \in \mathbb{R} \mathrm{X}_n = \mathrm{X}_{\mathrm{N} - n}^*\, TFD d'un signal réel
a^k\, \frac{1-a^\mathrm{N}}{1-a \cdot e^{-i 2 \pi n/\mathrm{N}} }  
{\mathrm{N} - 1 \choose k}\, \left(1+e^{-i 2 \pi n/\mathrm{N}} \right)^{\mathrm{N} - 1}\,  

Références[modifier | modifier le code]

  • Analyse de Fourier et applications, Claude Gasquet, Patrick Witomski: Université de Grenoble I, Dunod (1996)
  • Efficient Similarity Search In Sequence Databases, Rakesh Agrawal, Christos Faloutsos, Arun Swami, Proceedings of the 4th International Conference of Foundations of Data Organization and Algorithms (1993)

Voir aussi[modifier | modifier le code]