12.5 Creșterea vitezei în continuare

Există mai multe tehnici pentru a face FFT chiar mai rapidă; totuși, îmbunătățirile sunt de numai 20-40%. Într-una din aceste metode, descompunerea domeniului timp este oprită două etape mai devreme, când fiecare semnal este compus numai din patru puncte. În loc să se calculeze ultimele două etape, codul extrem de optimizat este utilizat pentru a sări direct în domeniul frecvență, folosind simplitatea undelor sinus și cosinus de patru puncte.

Figura 12-9 Precizia DFT.

Deoarece FFT calculează DFT mai rapid decât metoda corelației, ea calculează cu mai puține erori de rotunjire (round-off).

Un alt algoritm popular elimină calculele pierdute, asociate cu partea imaginară a domeniului de timp ce este zero și spectrul de frecvență ce este simetric. Cu alte cuvinte, FFT este modificată pentru a calcula DFT reală, în loc de DFT complexă. Acești algoritmi sunt numiți FFT real și FFT invers real (sau nume similare). Așteptați-vă să fie cu aprox. 30% mai rapide decat rutinele convenționale FFT. Tabelele 12-6 și 12-7 prezintă programe pentru acești algoritmi.

Există două dezavantaje mici în utilizarea FFT reală. În primul rând, codul este de aproximativ două ori mai lung. În timp ce computerul dvs. nu are grijă, trebuie să vă faceți timp pentru a converti programul altcuiva pentru a rula pe computer. În al doilea rând, depanarea acestor programe este puțin mai dificilă, deoarece nu puteți utiliza simetria ca o verificare a funcționării corecte. Acești algoritmi forțează partea imaginară a domeniului timp să fie zero, iar domeniul frecvență să aibă simetrie stânga-dreapta. Pentru depanare, verificați dacă aceste programe produc aceeași ieșire ca și algoritmii FFT convenționali.

Figurile 12-10 și 12-11 ilustrează modul în care funcționează FFT reală. În figura 12-10, (a) și (b) se prezintă un semnal din domeniu timp care constă dintr-un impuls în partea reală, și toate zerouri în partea imaginară. Figurile (c) și (d) prezintă spectrul de frecvență corespunzător. Așa cum a fost descris anterior, partea reală a domeniului frecvență are o simetrie pară în jurul eșantionului 0 și eșantionului N/2, în timp ce partea imaginară are o simetrie impară în jurul acelorași puncte.

Figura 12-10 Simetria părții reale a DFT.

Acum considerați fig. 12-11, unde impulsul se află în partea imaginară a domeniului timp, iar partea reală este zero. Simetria în domeniul frecvență este inversată; partea reală este impară, iar partea imaginară este pară. Această situație va fi discutată în capitolul 29. Pentru moment, considerați că astfel se comportă DFT complexă.

Ce se întâmplă dacă există un semnal în ambele părți ale domeniului timp? Prin aditivitate, domeniul frecvență va fi suma celor două spectre de frecvență. Acum elementul cheie: un spectru de frecvență compus din aceste două tipuri de simetrie poate fi perfect separat în cele două semnale componente. Acest lucru se realizează prin descompunerea pară/impară discutată în capitolul 6. Cu alte cuvinte, două DFT pot fi calculate la prețul uneia. Unul dintre semnale este plasat în partea reală a domeniului timp, iar celălalt semnal este plasat în partea imaginară. După calcularea DFT complexă (prin FFT, desigur), spectrele sunt separate folosind descompunerea pară/impară. Când două sau mai multe semnale trebuie să fie trecute prin FFT, această tehnică reduce timpul de execuție cu aproximativ 40%. Îmbunătățirea nu este un factor complet de doi datorită timpului de calcul necesar pentru descompunerea pară/impară. Aceasta este o tehnică relativ simplă, cu puține capcane, nimic asemănător scrierii unei rutine FFT de la zero.

Figura 12-11 Simetria părții imaginare a DFT.

Următorul pas este să modificați algoritmul pentru a calcula mai rapid o singură DFT. Este urât, dar iată cum se face. Semnalul de intrare este rupt în jumătate prin utilizarea unei descompuneri intercalate. N/2 puncte pare sunt plasate în partea reală a semnalului din domeniul timp, în timp ce N/2 puncte imparemerg în partea imaginară. O FFT de N/2 puncte este apoi calculată, necesitând aproximativ o jumătate din timpul unei FFT cu N puncte. Domeniul frecvență rezultat este apoi separat prin descompunerea pară/impară, rezultând în spectrele de frecvență ale celor două semnale din domeniu timp intercalate. Aceste două spectre de frecvență sunt apoi combinate într-un singur spectru, la fel ca în ultima etapă de sinteză a FFT.

Pentru a închide acest capitol, considerați că FFT este pentru procesarea semnalelor digitale ceea ce este tranzistorul pentru electronică. Este o temelie a tehnologiei; toată lumea în domeniu îi cunoaște caracteristicile și cum să le folosească. Cu toate acestea, doar un număr mic de specialiști înțeleg cu adevărat detaliile lucrărilor interne.