Comment calcule-t-on la Transformée de Fourier rapide?
j'ai lu beaucoup de choses sur la transformée de Fourier Rapide et essaie de comprendre le faible niveau de l'aspect. Malheureusement, Google et Wikipedia n'aident pas beaucoup du tout.. et j'ai genre 5 différents livres d'algorithmes ouverts qui n'aident pas beaucoup non plus.
j'essaie de trouver le FFT de quelque chose de simple comme un vecteur [1,0,0,0]. Je peux le brancher sur Matlab, mais ça ne m'aidera pas à comprendre ce qui se passe en dessous. Aussi, quand je dis que je veux trouver le FFT d'un vecteur, c'est que la même chose que de dire je veux trouver la TFD d'un vecteur simplement avec un algorithme plus efficace?
5 réponses
vous avez raison, "la" transformation de Fourier rapide est juste un nom pour algorithme qui calcule la Transformée de Fourier discrète en temps O(N log n), et il existe plusieurs algorithmes de ce type.
Voici l'explication la plus simple de la DFT et de la FFT comme je pense d'eux, et aussi des exemples pour le petit N, qui peuvent aider. (À noter qu'il existe d'autres interprétations, et d'autres algorithmes.)
transformée de Fourier Discrète
Donné N
nombres f 0, f1, f2,..., f N-1, le DFT donne un ensemble différent de N
nombres.
plus Précisément: soit ω une primitive N ème racine de 1( soit dans les nombres complexes ou dans un certain champ fini), ce qui signifie que ω N=1 mais aucune puissance inférieure n'est égale à 1. Vous pouvez penser de la f k's comme les coefficients d'un polynôme P(x) = ∑F k x k. Le N nouveaux nombres F 0, F1,..., F N-1 que le DFT donne sont les résultats de évaluer le polynôme aux puissances de ω. C'est, pour chacun n de 0 à N-1, LE NOUVEAU Nombre F n P(ω n) = ∑ 0≤k≤N-1 f kw nk.
[la raison pour choisir ω est que l'inverse DFT a un bon forme, très similaire au DFT lui-même.]
2). Mais nous pouvons exploiter la structure spéciale qui vient Des ω Que nous avons choisis, et qui nous permet de le faire en O(N log n). Un tel algorithme est appelé la transformée de Fourier rapide.La Transformée De Fourier Rapide
voici donc une façon de faire le TNI. Je vais remplacer N par 2N pour simplifier la notation. Nous avons f 0, f1, f2,..., f2N-1, et nous voulons calculer P(ω 0), P (ω1), ... P (ω2N-1) où nous pouvons écrire
P (x) = Q(x) + ω N R (x) avec
Q (x) = f 0 + f1 x + ... + f N-1 x N-1
R (x) = f N + f N+1x + ... + f2N-1 x2N-1
Maintenant, voici la beauté de la chose. Observez que la valeur à ω k+N est très simplement lié à la valeur de ω k:
P (ω k+N) = ω N (Q (ω k) + ω N R (ω k)) = R (ω k) + ω N Q (ω k). Ainsi, les évaluations de Q et R at ω 0 pour ω N-1 sont assez.
cela signifie que votre problème d'origine-d'évaluer le polynôme 2N-terme P à 2n points ω 0 pour ω2N-1 - a été réduit aux deux problèmes d'évaluation des polynômes n-term Q et R Aux N points ω 0 pour ω N-1. Donc la durée T(2N) = 2T(N) + O(N) et tout ça, ce qui donne T(N) = O (N log n).
exemples de DFT
noter que les autres les définitions mettent les facteurs de 1/N ou 1 / √N.
pour N=2, ω=-1, et la Transformée de Fourier de (a, b) est (a+b, a-b).
2, a+bw2 +cw). (Depuis ω 4=ω.)Pour N=4 et ω=i, et la transformée de Fourier de (a,b,c,d) (a+b+c+d, a+bi-c-di, a-b+c-d, a-bi-c+di). En particulier, l'exemple dans votre question: le DFT sur (1,0,0,0) donne (1,1,1,1), pas très éclairant peut-être.
le FFT n'est qu'une mise en œuvre efficace du DFT. Les résultats devraient être identiques pour les deux, mais en général, le TNI sera beaucoup plus rapide. Assurez-vous de comprendre comment le DFT fonctionne d'abord, car il est beaucoup plus simple et beaucoup plus facile à saisir.
quand vous comprenez la DFT, passez à la FFT. Notez que bien que le principe général soit le même, il existe de nombreuses implémentations et variations différentes du FFT, par exemple décimation-dans - le-temps v décimation-dans-la-fréquence, radix 2 v autres radices et Radix mixte, complexe à complexe v Réel À complexe, etc.
Un bon livre pratique à lire sur le sujet est transformée Rapide de Fourier et Ses Applications par E. Brigham.
Oui, le FFT est simplement un algorithme DFT efficace. Comprendre le FFT lui-même pourrait prendre un certain temps à moins que vous avez déjà étudié les nombres complexes et la transformation de Fourier continue; mais il est fondamentalement un changement de base à une base dérivée de fonctions périodiques.
(si vous voulez en savoir plus sur L'analyse de Fourier, je recommande le livre analyse de Fourier et ses Applications par Gerald B. Folland)
Je suis aussi nouveau dans les transformations de Fourier et j'ai trouvé ce livre en ligne très utile:
Les Scientifiques et d'Ingénieur-Guide du Traitement de Signal Numérique
le lien vous amène au chapitre sur la discrète transformée de Fourier. Ce chapitre explique la différence entre toutes les transformations de Fourier, ainsi que l'endroit où vous utiliseriez lequel et le pseudocode qui montre comment vous allez sur le calcul de la Transformée de Fourier discrète.
si vous cherchez une explication en anglais simple de DFT et un peu de FFT aussi bien, au lieu de Académique goggledeegoo pour vous lire ceci: http://blogs.zynaptiq.com/bernsee/dft-a-pied/
Je n'aurais pas pu mieux l'expliquer moi-même.