Comment calculer une série de Fourier en Numpy?
J'ai une fonction périodique de période T et voudrais savoir comment obtenir la liste des coefficients de Fourier. J'ai essayé d'utiliser fft le module numpy, mais il semble plus dédié à des transformées de Fourier de la série.
Peut-être un manque de connaissances mathématiques, mais je ne vois pas comment calculer les coefficients de Fourier de la fft.
Aide et/ou des exemples apprécié.
source d'informationauteur Mermoz
Vous devez vous connecter pour publier un commentaire.
En fin de compte, le plus simple (calcul du coefficient avec une somme de riemann) a été le plus portable/efficace/solide moyen de résoudre mon problème:
me donne:
Numpy n'est pas le bon outil vraiment pour calculer la série de fourier de composants, vos données pour être discrètement échantillonnés. Vous voulez vraiment utiliser quelque chose comme Mathematica ou qui devrait l'être à l'aide de transformées de fourier.
À peu près le faire, regardons quelque chose de simple d'une onde triangulaire de période 2pi, où l'on peut facilement calculer les coefficients de Fourier (c_n = -i ((-1)^(n+1))/n pour n>0; par exemple, c_n = { -i, i/2, -i/3, i/4, i/5, i/6, ... } pour n=1,2,3,4,5,6 (à l'aide de Somme( c_n exp(i 2 pi x n) ) comme les séries de Fourier).
Si vous regardez le premier de plusieurs composantes de Fourier:
Première négliger les composants qui sont proches de 0 en raison de virgule flottante de précision (~1e-16, comme étant égale à zéro). La partie la plus difficile est de voir que l'3.14159 numéros (qui se pose avant de nous diviser par la période de l'ordre de 1000) devrait également être considéré comme égal à zéro, car la fonction est périodique). Donc, si nous négligeons ces deux facteurs, nous obtenons:
et vous pouvez voir la série de fourier numéros de venir jusqu'que tout autre nombre (je n'ai pas étudié; mais je crois que les composants correspondent à [c0, c-1, c 1, c-2, c2, ... ]). Je suis à l'aide de conventions selon wiki: http://en.wikipedia.org/wiki/Fourier_series.
Encore une fois, je suggère l'utilisation de mathematica ou un système de calcul formel capable d'intégrer et de traiter avec des fonctions continues.
Comme d'autres réponses ont mentionné, il semble que ce que vous êtes à la recherche d'une symbolique de l'informatique paquet, de sorte numpy n'est pas approprié. Si vous souhaitez utiliser un gratuit basé sur python solution, alors soit sympy ou sage devrait répondre à vos besoins.
Avez-vous une liste de discrètes échantillons de votre fonction, ou est votre fonction elle-même-il discret? Si oui, la transformée de Fourier Discrète, calculé à l'aide d'un algorithme de FFT, fournit les coefficients de Fourier directement (voir ici).
D'autre part, si vous avez une expression analytique pour la fonction, vous avez probablement besoin d'une symbolique math solver d'une certaine sorte.
La informations d'arrière-plan sur la routine est la première ressource, vous devriez consulter.