Puis on va donc maintenant mettre en pratique la Transformée de Fourier discrète à l'aide de Scilab. Donc j'ai ici ouvert une fenêtre Scilab et puis je vais commencer par charger la bibliothèque, donc, que nous vous avons fournie. Donc je fais exec o n l point s c i, et puis maintenant je vais calculer ma Transformée de Fourier discrète. Alors initialement, l'algorithme de Cooley-Tucker ne fonctionnait qu'avec un nombre de points qui étaient à une puissance de deux, parce que je vous avais dit que c'était un algorithme dichotomique, donc on divisait par deux à chaque fois la taille de l'intervalle. Aujourd'hui les algorithmes sont beaucoup plus perfectionnés, vous pouvez prendre un nombre de points arbitraires, même si ça ira toujours un peu plus vite pour un nombre de points qui sera une puissance de deux, néanmoins, je vous recommande de toujours prendre un nombre de points qui est un nombre pair. Alors ici je vais définir un axe des x qui va aller de zéro à 255, et puis je vais définir une fonction gaussienne, qui, pour qu'elle soit centrée au milieu de l'axe, donc je vais dire que c'est le carré de x moins 128, puisque 128 ce sera le milieu de mon axe, x moins 128, donc je divise par huit par exemple, et donc ça, c'est ma fonction y qui va être une gaussienne, et maintenant, je vais représenter cette fonction dans une fenêtre, dans une figure que j'appelle un, et je vais faire plot de x et de y, comme on l'a vu la semaine dernière. Donc on obtient cette fonction, qui est une fonction gaussienne, je vais la mettre ici en haut, donc c'est une fonction gaussienne, centrée évidemment sur 128. Et puis maintenant je vais regarder à quoi ressemble ma Transformée de Fourier, donc je vais aller dans une fenêtre numéro deux, et puis je vais représenter la fonction f f t de y. La Transformée de Fourier évidemment est a priori une fonction complexe, mais quand on appelle plot avec une fonction qui va être une fonction complexe, et bien il va représenter la partie réelle de cette fonction. Donc voilà ici à quoi ressemble la Transformée de Fourier, donc je vais la mettre ici, voilà, alors comme vous allez le voir en TD, comme on vous l'a déjà dit, la Transformée de Fourier d'une gaussienne est a priori une gaussienne, mais il y a que là le résultat qu'on a n'est pas exactement ce qu'on avait attendu : moi j'aurais bien aimé avoir une gaussienne centrée au milieu de mon écran, et ce que j'ai c'est pas du tout ça. Donc pour comprendre d'où vient ce résultat, il faut regarder la définition de la Transformée de Fourier discrète que vous avez ici en bas à droite de l'écran. Quand je regarde ma fonction ici dans l'espace conjuguée par Transformée de Fourier, en fait ce que je regarde, c'est l'ensemble des valeurs de f de t k ou f de oméga n, en fonction de k ou en fonction de n qui varie de zéro à 255. Donc ce qu'on va faire, c'est qu'on va commencer par supposer que c'est l'espace des temps, et donc, j'ai une fonction qui n'oscille pas, donc sa Transformée de Fourier doit être centrée sur la fréquence nulle. Or, la fréquence nulle, ça correspond à n égal à zéro, puisque comme oméga n c'est n fois le pas d'échantillonnage en fréquence, la fréquence nulle ça correspond à n égal à zéro et n égal à zéro c'est bien le premier point, donc c'est pour ça que ma fonction elle est représentée ici dans mon intervalle des fréquences en fonction de la fréquence nulle et puis ici deux fois la fréquence maximale, et donc c'est pour ça que le zéro il est sur le bord de l'écran et donc ma fonction gaussienne que j'attendais elle est coupée en deux. Donc si je veux représenter ma fonction centrée sur le milieu de l'écran, je vais de voir utiliser une fonction qui est fournie par Scilab et qu'on appelle la fonction f f t shift, qui va décaler la fonction exactement de la moitié des points. Donc comme c'est la moitié des points, je vous recommande d'utiliser un nombre de points qui est toujours un nombre pair parce que, autrement, vous risquez de pas trop savoir où est le zéro. Donc si j'appelle cette fonction f f t shift, alors je vais également effacer ma figure pour pas que ça se superpose, si j'appelle la fonction f f t shift, et bien maintenant j'ai bien une fonction gaussienne qui va être centrée, enfin dont l'enveloppe en tout cas est gaussienne et est centrée sur zéro. Mais il y a encore un autre problème, c'est que si je regarde cette fonction, en fait, elle varie très rapidement ici en fonction des pixels, j'ai une oscillation très, très rapide. Alors pourquoi, alors pour le comprendre on peut dire maintenant que cet axe c'est plutôt l'axe des fréquences, donc si ça c'est l'axe des fréquences, j'ai toujours le droit en fait tout ça est bien symétrique, le premier pixel ici va correspondre à la fréquence nulle et puis le dernier pixel va correspondre à une fréquence qui est presque égale à la période d'échantillonnage, et donc ce que j'ai au milieu de l'écran, c'est pas du tout la fréquence nulle qui se trouve ici, ce que j'ai au milieu de l'écran c'est une fréquence qui est égale en fait à la fréquence oméga max, la plus grande fréquence qu'on puisse représenter par le critère de Shannon-Nyquist. Et donc c'est pour ça que mon signal ici qui est centré sur la fréquence maximale, et bien il va osciller avec deux points par franges, c'est ce que vous avez ici. Donc si on voulait dire au programme que le milieu de l'écran c'est la fréquence nulle, et bien il faudrait appeler la fonction f f t shift avant de faire la Transformée de Fourier. Donc il faut ici insérer la fonction f f t shift, et dans ce cas-là, j'ai bien ce que j'attendais, c'est-à-dire une fonction gaussienne dans le premier espace et une fonction gaussienne dans le deuxième espace. Donc vous voyez que pour appeler cette fonction f f t, il va falloir l'encadrer de f f t shift de part et d'autre, en tout cas si vous voulez que vos fonctions soient centrées dans l'espace des temps et dans l'espace des fréquences sur le tableau que vous considérez. Tout ça est un peu fastidieux donc on vous propose dans la bibliothèque o n l point s c i des fonctions qui vont vous permettre d'alléger un petit peu l'utilisation de la Transformée de Fourier. Donc si je regarde ici, donc il y a toutes sortes de fonctions, je ne vais pas toutes les commenter, je vais m'intéresser uniquement à celles qui concernent la Transformée de Fourier, donc on vous propose une fonction qui s'appelle f t, donc que vous avez ici. et f t va tout simplement encadrer l'appel à f f t de f f t shift avant et après. Donc ça va faire exactement ce qui faut pour que votre fonction reste centrée sur l'intervalle. Si vous voulez faire une Transformée de Fourier inverse, et bien il faut appeler la fonction i f t qui va faire la même chose mais en utilisant évidemment la fonction i f f t qui fait la Transformée de Fourier inverse. Et puis il y a une autre fonction qui vous sera utile, c'est la fonction f t axis, dont vous pourrez lire les commentaires à tête reposée, et cette fonction f t axis, dont vous avez le code ici, va vous fournir deux axes calibrés, un axe des fréquences que j'appelle nu, et un axe des temps que j'appelle t, qui vont comporter n points, et puis qui vont aller entre moins nu max et plus nu max pour l'espace des fréquences. Et donc ça, ça va vous permettre de créer deux axes calibrés en vous assurant que le point qui est exactement au milieu correspond à la fréquence nulle ou au temps nul, et puis en vous assurant aussi qu'on respecte cette loi de calibration qu'on avait vue pour la Transformée de Fourier discrète, ou enfin pour l'échantillonnage plutôt, c'est-à-dire que l'espacement entre deux pixels dans l'espace des fréquences, ça va correspondre à la période complète de votre fonction, et puis l'espacement entre deux pixels dans l'espace des temps, ça va correspondre à la période complète dans l'espace des fréquences. Et donc ça c'est pris en compte dans ces formules-là, c'est pas très compliqué, mais il faut juste faire attention. Et donc le premier pixel va donc correspondre à moins nu max, mais le dernier pixel ce ne sera pas plus nu max : c'est plus nu max moins le pas d'échantillonnage dans l'espace des fréquences. Voilà, donc ça, vous pouvez regarder le commentaire pour voir comment est définie cette fonction, et ce qu'on va faire c'est simplement l'utiliser. Donc je voudrais terminer en vous montrant comment on peut utiliser cette fonction f t axis pour représenter par exemple une impulsion brève. Donc pour illustrer ça, on va créer un axe des fréquences et des temps conjugués par Transformée de Fourier à l'aide de la fonction f t axis, donc je vais prendre par exemple 2048 points, et je vais prendre une valeur de la fréquence maximale égale à 2000 térahertz, je vais travailler en térahertz pour les fréquences et donc en picosecondes pour les temps. Donc là j'ai mes deux axes conjugués par Transformée de Fourier, qui vont être correctement calibrés, et maintenant je vais créer un champ électrique qu'on appelle field, et je vais prendre une enveloppe. Je vais prendre une enveloppe gaussienne donc moins le carré de t divisé par quelque chose qui va être de l'ordre de la durée r m s, à un facteur racine de deux près, alors comme mon échelle de fréquences est en térahertz, mon échelle des temps va être picosecondes, donc si je veux cinq femtosecondes, je vais diviser par zéro virgule zéro zéro cinq. Donc ça c'est mon enveloppe, et je multiplie maintenant par une porteuse, et donc je multiplie par cosinus de oméga zéro t ou deux fois pi fois la fréquence, et je vais prendre comme fréquence 375 térahertz, ça correspond à une longueur d'onde de 800 nanomètres qui est celle du laser titane saphir, qu'on aime bien quand on fait des impulsions en femtosecondes, et donc je multiplie par t. Voilà, donc là, j'ai calculé mon champ, et puis maintenant je vais le représenter dans la première fenêtre en haut à gauche de l'écran, donc je passe dans la fenêtre un, j'efface la fenêtre et je fais une rénovation graphique, en fonction du temps du champ électrique. Donc voilà ce qu'on obtient, donc on a notre impulsion qui est centrée en t égal à zéro, donc t ici est gradué en picosecondes, et donc si je vais voir au centre de l'écran ce que j'ai, en zoomant un petit peu mon impulsion, j'ai bien une belle impulsion qui va osciller avec une période de deux virgule sept femtosecondes, et puis maintenant je peux aller dans la deuxième fenêtre donc pareil que j'efface, et je vais ploter en fonction de la fréquence la Transformée de Fourier du champ électrique, alors si on veut être rigoureux, enfin ça ne va pas changer pour le module, mais si on veut être rigoureux, je vous rappelle que la Transformée de Fourier passe de l'espace des fréquences à l'espace des temps, et donc là si je veux passer du temps à l'espace des fréquences, il faut que je fasse une Transformée de Fourier inverse. Donc je vais représenter la Transformée de Fourier inverse de mon champ, et donc voilà ce qu'on obtient : on obtient deux pics, un pour les fréquences positives l'autre pour les fréquences négatives, c'est normal puisqu'on a une fonction réelle et paire et on va donc avoir ici une fonction réelle et paire, et si je zoome sur le centre du spectre de mon de mon laser, j'ai bien quelque chose qui va être centré sur 375 térahertz. Donc voilà illustré sur cet exemple très simple comment vous pouvez utiliser ces fonctions qu'on vous propose, f t, i f t, et f t axis, pour calculer simplement et sans trop de complications des Transformées de Fourier avec des axes temps et fréquences qui soient correctement calibrés. Je vous remercie.