Transformarea Fourier rapidă ( FFT , FFT ) este un algoritm pentru calculul accelerat al transformării Fourier discrete care vă permite să obțineți rezultatul în mai puțin de timp (necesar pentru calculul direct, formulă cu formulă). Uneori, transformata Fourier rapidă este înțeleasă ca unul dintre algoritmi, numit algoritm de decimare frecvență-timp, care are complexitate .
Algoritmul este aplicabil oricăror inele asociative comutative cu o unitate, mai des aplicat câmpului numerelor complexe ( c ) și inelelor reziduale (care, în special, este de tip întreg computerizat ).
Când se aplică algoritmul de bază, transformarea Fourier discretă poate fi efectuată în acțiuni pentru , în special, atunci când sunt necesare acțiuni .
Transformarea Fourier discretă transformă o mulțime de numere într-o mulțime de numere , astfel încât , unde este rădăcina primitivă a unității , adică pentru . Pasul principal al algoritmului este de a reduce problema pentru numere la o problemă cu un număr mai mic. Pentru domeniul numerelor complexe, introducem: , , unde este orice număr. Transformata Fourier discretă poate fi reprezentată ca . (Aceste expresii pot fi obținute cu ușurință dacă suma inițială este împărțită într-un număr mai mic de sume cu un număr mai mic de termeni, iar apoi sumele rezultate sunt aduse la aceeași formă prin deplasarea indicilor și redenumirea ulterioară a acestora).
În acest fel:
.Ținând cont de faptul că și , înregistrarea finală:
.În plus, fiecare este calculat , unde , aici este încă necesar să se efectueze acțiuni, adică operațiunile sunt efectuate în această etapă .
Mai departe se consideră unde . La înlocuirea în ultima formulă, expresiile dintre paranteze au rămas neschimbate și, deoarece au fost deja calculate în pasul anterior, sunt necesare doar acțiuni pentru a calcula fiecare dintre ele. Numerele totale . Prin urmare, operațiile la acest pas sunt . Acesta din urmă este adevărat cu o precizie bună pentru orice .
Este logic să folosiți algoritmul de transformare Fourier rapidă pentru , deoarece cu un număr mic de eșantioane oferă un câștig mic de viteză în comparație cu calculul direct al transformării Fourier discrete. Astfel, pentru a trece complet la un set de numere , sunt necesare acțiuni. Prin urmare, nu are nicio diferență în ce două numere să se împartă - răspunsul nu se va schimba prea mult. Numărul de operații poate fi redus doar prin partiționare ulterioară .
Viteza algoritmului :
Adică, numărul de operații pentru orice împărțire în două numere este , unde .
Pentru transformarea Fourier inversă, puteți utiliza algoritmul de transformare Fourier directă - trebuie doar să utilizați în schimb (sau să aplicați operația de conjugare complexă mai întâi la datele de intrare și apoi la rezultatul obținut după transformarea Fourier directă) și să împărțiți rezultatul final de către .
Cazul general poate fi redus la cel anterior. Pentru reținere:
.Indicând aceasta rezultă:
,dacă se pune la .
Astfel, problema se reduce la calcularea convoluției , dar aceasta se poate face folosind trei transformări Fourier pentru elemente: se realizează transformarea Fourier directă pentru și , rezultatele sunt înmulțite element cu element și se realizează transformarea Fourier inversă.
Calcularea tuturor și necesită acțiune, trei transformări Fourier necesită acțiune, înmulțirea rezultatelor transformării Fourier necesită acțiune, calcularea tuturor cunoașterea valorilor convoluției necesită acțiune. În total, transformata Fourier discretă necesită acțiuni pentru orice .
Acest algoritm de transformare Fourier rapidă poate funcționa numai pe un inel atunci când rădăcinile primitive ale unității sunt cunoscute în puterile lui și .
Cel mai comun algoritm de transformare Fourier rapidă este algoritmul Cooley-Tukey , în care transformarea Fourier discretă a este exprimată ca sumă a transformărilor Fourier discrete de dimensiuni mai mici și recursiv pentru a atinge complexitatea . Etapa elementară de articulare a transformărilor Fourier mai mici din acest algoritm se numește „ fluture ”. În calcul, cea mai frecvent utilizată înjumătățire recursivă a transformărilor este baza 2 (deși poate fi utilizată orice bază), iar numărul de eșantioane de intrare este o putere de două. Pentru cazurile în care transformarea discretă este calculată din numărul de eșantioane care sunt numere prime, se pot utiliza algoritmii Bluestein și Rader.
De exemplu, pentru a calcula transformarea Fourier rapidă folosind algoritmul Cooley-Tukey cu bază 2 pentru un vector format din elemente:
,cu elemente de forma:
transformarea discretă poate fi exprimată ca suma a două părți: suma indicilor pare și suma indicilor impari :
.Coeficienții și pot fi rescriși după cum urmează:
Ca urmare:
Calculul acestei expresii poate fi simplificat folosind:
Ca rezultat al simplificărilor, notând transformata Fourier discretă a indicilor pare cu și transformarea indicilor impari cu , pentru se obține:
Această intrare este baza algoritmului Cooley-Tukey cu baza 2 pentru calcularea transformării rapide Fourier, adică transformarea discretă dintr-un vector format din eșantioane este redusă la o compoziție liniară a două transformate Fourier discrete din probe, iar dacă sarcina originală a necesitat operații, apoi pentru compoziția rezultată - (datorită reutilizarii rezultatelor intermediare ale calculelor și ). Dacă este o putere de doi, atunci această împărțire poate fi continuată recursiv până când ajunge la o transformată Fourier în două puncte, care este calculată prin următoarele formule:
Când se împarte recursiv transformata Fourier discretă din valorile de intrare la suma a 2 transformări discrete din valorile de intrare, complexitatea algoritmului devine egală cu .