- g2i,
Bonjour à tous !
Avant tout, j'ai longtemps hésité entre poster ici et dans la catégorie programmation, mais je pense que mon problème est plus une incompréhension de phénomènes physiques que de programmation.
Mon problème est le suivant : je ne comprends pas ce que me renvoie la fonction fft du module numpy.fft. En effet, lorsque j'applique le code suivant :
1 2 3 4 5 6 7 8 9 | import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,100,10000) y = np.fft.fft(np.sin(50*x)) plt.figure('Tracé des résultats') plt.plot(x,y) plt.show() |
J'obtiens deux pics, respectivement à environ 7,61 Hz et à environ 92.39. Le premier était prévisible, puisqu'on a :
Et, de ce que j'ai compris, la deuxième est due au phénomène de repliement.
En revanche, en multipliant le nombre de points par 10, je divise par 10 la fréquence de mon premier pic également… Pourquoi donc ?
De ce que je connais : - Ma fréquence d'échantillonnage est bien au moins deux fois supérieure à la fréquence de mon signal (Théorème de Shannon) - L'algorithme de la FFT rajoute de lui-même des valeurs afin d'obtenir un nombre de points égal à une puissance de deux - Le phénomène de repliement explique la possible symétrie apparente
Mais je ne vois pas en quoi ces trois données m'indiquent que ma fréquence se retrouve divisée par 10…
L'objectif étant par la suite de travailler sur des signaux plus complexes, j'aimerais comprendre le fonctionnement précis de la fft :/
Merci d'avance,
BunshinKage