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?

14
demandé sur ShreevatsaR 2010-07-12 02:17:34

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.

image of dft

[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.

24
répondu ShreevatsaR 2017-02-08 14:28:20

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.

7
répondu Paul R 2010-07-11 22:23:00

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)

2
répondu You 2010-07-11 22:30:52

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.

2
répondu Garg Unzola 2010-08-04 09:33:42

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.

2
répondu Rob Vermeulen 2016-10-11 17:00:26