N - DSP AGH
Transkrypt
N - DSP AGH
Szybka transformacja Fouriera Spis treści 1. Nieefektywność obliczeniowa DFT 2. Usprawnienia zaproponowane przez Cooley’a i Tukey’a 3. Porównanie efektywności DFT i FFT 1 Cechy charakterystyczne procedury obliczeniowej DFT Obliczenia DFT można zapisać w postaci macierzowej sˆ(0) s (0) s (1) sˆ(1) sˆ(2) s (2) ˆ ( 3 ) s ( 3 ) s sˆ(4) s (4) s (5) sˆ(5) sˆ(6) s (6) s (7) sˆ(7) gdzie 1 2 j 2 1 j 2 2 1 2 j 2 1 2 j 2 2 Przykład dublowania obliczeń Obliczenia DFT można zapisać w postaci macierzowej sˆ(0) s (0) s (1) sˆ(1) sˆ(2) s (2) ˆ ( 3 ) s ( 3 ) s sˆ(4) s (4) s (5) sˆ(5) sˆ(6) s (6) s (7) sˆ(7) Wynika stąd sˆ(0) s (0) s (2) s(4) s (6) s(1) s (3) s (5) s (7) sˆ(4) s(0) s(2) s (4) s(6) s(1) s (3) s (5) s (7) 3 Nakład obliczeniowy dla dyskretnej transformacji Fouriera Dyskretne widmo jest obliczane przy pomocy wzoru N 1 sˆ(k ) s (n)wNkn n 0 gdzie wN e j 2 N 2N 2 mnożeń bo: jest N składników sumy (ze względu na n), jest N równań (ze względu na k) i są to mnożenia liczb rzeczywistych przez zespolone. 4 Cooley i Tukey 1965 rok Dla poprawy efektywności, przeprowadźmy obliczenia osobno dla próbek o numerach parzystych i osobno o numerach nieparzystych. Otrzymamy N 2 1 N 1 sˆ(k ) s(n)w s(2n)w n 0 kn N n 0 2 nk N N 2 1 n 0 s(2n)w kn N /2 N 2 1 ( 2 n 1) k s ( 2 n 1 ) w N n 0 w N 2 1 k N kn s ( 2 n 1 ) w N /2 n 0 dla k 0,1,..., N / 2 1 sˆ(k ) sˆ p (k ) wNk sˆn (k ) gdzie wN e j 2 N natomiast wN / 2 e A co z wartościami dla k N / 2, , N 1 ? j 4 N 5 Okresowość widm dyskretnych Otrzymaliśmy sˆ(k ) sˆ p (k ) wNk sˆn (k ) Widma zarówno dla próbek o numerach parzystych jak i nieparzystych są funkcjami okresowymi, tzn. sˆ p (k ) sˆ p (k N / 2) sˆn (k ) sˆn (k N / 2) Dodatkowo zauważmy, że w e k N j 2 k N e j 2 k N e j e j 2 k N 2 N w kN 2 N Im w k wNk 1 Jeśli na przykład k = 4 i N = 8, to wNk N 2 1 Re w k 6 Wzór wynikający z okresowości funkcji dyskretnych Z warunków sˆ p (k ) sˆ p (k N / 2) sˆn (k ) sˆn (k N / 2) oraz wNk wNk N 2 wynika, że sˆ(k ) sˆ p (k ) wNk sˆn (k ) jest równoważne sˆ p (k ) wNk sˆn (k ) dla k 0,1,...,N / 2 1 sˆ(k ) kN / 2 sˆn (k N / 2) dla k N / 2,...,N 1. sˆ p (k N / 2) wN 7 Efektywność algorytmu Ilość mnożeń w otrzymanym wzorze sˆ p (k ) wNk sˆn (k ) dla k 0,1,...,N / 2 1 sˆ(k ) kN / 2 sˆn (k N / 2) dla k N / 2,...,N 1. sˆ p (k N / 2) wN wynosi N 2 2N bo zarówno sˆ p ( k ) jak i sˆn ( k ) dla k = 0, 1, ..., N/2-1 wymaga 2(N/2)2 mnożeń i dodatkowo trzeba wykonać 4(N/2) mnożeń dla w Nk sˆn ( k ) (mnożenie liczb zespolonych!). Przedstawiony algorytm jest bardziej efektywny jeśli spełniona jest nierówność 2 2 2N N 2N czyli musi być N > 2, a przecież tak jest zawsze! 8 Szybka transformacja Fouriera ang. Fast Fourier Transform - FFT Dla zwiększenia efektywności obliczeń, przedstawiony schemat można zastosować do obliczenia widm dla próbek parzystych i nieparzystych, a również i dalej. Wymaga to dzielenia ilości próbek przez 2. Cooley i Tukey przyjęli N 2 M . Stosując M - krotnie podział na próbki o numerach parzystych i nieparzystych, na końcu otrzymujemy dla N = 2 sˆ(0) s (0) s (1) sˆ(1) s (0) s (1) s ( 0) ŝ (0) s (1) ŝ (1) 9 Operacje motylkowe przebieg 1 s(0) s(1) s(2) s(3) s(4) s(5) s(6) s(7) przebieg 2 przebieg 3 W 0 N WN0 WN0 W 0 N W 0 N W 0 N W 0 N grupa 0 1 1 grupa 1 1 W 2 N W 2 N 1 1 W N2 W N1 1 grupa 0 1 grupa 0 grupa 2 1 1 1 W N3 grupa 1 1 grupa 3 ŝ(0) ŝ(4) ŝ(2) ŝ(6) ŝ(1) ŝ(5) ŝ(3) ŝ(7) 1 10 Efektywność operacji motylkowych Ilość próbek N 2 M . Poziomów jest M lg 2 N a na każdym z nich N/2 operacji motylkowych. Czyli ostatecznie mnożeń (na ogół liczb zespolonych) jest . 4M N 2 N log 2 N 2 Reasumując, ilość mnożeń w dyskretnej transformacji Fouriera jest proporcjonalna do drugiej potęgi ilości próbek a w szybkiej transformacji Fouriera proporcjonalna do iloczynu ilości próbek i logarytmu z ilości próbek. DFT ~ N 2 FFT ~ N log 2 N 11 Porównanie efektywności DFT i FFT Ilość mnożeń DFT i FFT dla N próbek N 4 8 16 32 64 128 2N 2 32 128 512 2048 8192 32768 2 N lg 2 N 16 48 128 320 768 1792 x 10 1.8 2N 2 1.4 1 0.6 2 N log 2 N 0.2 12 0 20 40 60 80 100