Dyskretna transformata Fouriera. Maskowanie. Szybka transformata
Transkrypt
Dyskretna transformata Fouriera. Maskowanie. Szybka transformata
Przetwarzanie i A nal iza S y g nał ó w Rozdział 4 – A n al iza 8 5 w idm ow a 4. 1 0 . D y s k r e t n a t r an s f or m at a F ou r ie r a 4.10. DYSKRETNA TRANSFORMATA FOURIERA (DFT) Analiza sygnałów w sytuacjach praktycznych odbywa się zwyczajowo na drodze cyfrowej ⇓ badany (ciągły) przebieg czasowy x(t) podlega przetwarzaniu A/C co prowadzi do dyskretnego szeregu xr x(t) ⇒ xr; r = 0, 1, 2, ..., (N-1) (4.60) N – liczba próbek okres sygnału T = ∆t⋅N (4.61) x(t) = x(t + ∆t⋅N) = ... = x(t + k⋅∆t⋅N) (4.62) warunek okresowości Rozdział 4 – A n al iza 8 6 w idm ow a 4. 1 0 . D y s k r e t n a t r an s f or m at a F ou r ie r a Przetwarzanie i A nal iza S y g nał ó w Wyprowadźmy zależność opisującą dyskretną transformatę Fouriera startując z definicji zespolonej transformaty Fouriera sygnału ciągłego 1T 2πkt X k = ∫ x( t ) exp − i dt T0 T (4.16) wprowadzając zmiany wynikające z dyskretnego charakteru sygnału dt → ∆t = tak więc T N and ∫ →∑ (4.63) 1 r = N −1 Xk = ∑ xr exp[(− i 2πk / T ) (r∆t )] ∆t T r =0 para dyskretnych przekształceń Fouriera DFT: IDFT: 1 r = N −1 2πkr Xk = x exp ∑ r −i N N r =0 xr = ∑ k = N −1 k =0 2πkr X k exp i N (4.64a) (4.64b) odległość pomiędzy sąsiednimi harmonicznymi (rozdzielczość spektralna) jest taka sama jak w przypadku szeregu Fouriera ∆ω = 2π 2π = T ∆t ⋅ N (4.3) Przetwarzanie i A nal iza S y g nał ó w Rozdział 4 – A n al iza 8 7 w idm ow a 4. 1 0 . D y s k r e t n a t r an s f or m at a F ou r ie r a dziedzina spektralna DFT jest ograniczona k = 0, 1, 2, ..., (N-1) ⇒ ωk = 0 ÷ 2π/∆t podczas gdy dla ciągłych sygnałów była nieograniczona (częstotliwości harmonicznych mogły dążyć do nieskończoności) Własności dyskretnej transformaty Fouriera • Symetria modułu względem k = 0 (ω = 0) X −k = 1 xr exp( i 2πkr / N ) = X *k ∑ N X *k - transformata sprzężona do X k X −k = X k* = X k (4.65) • Symetria modułu względem k = N/2 (ω = π/∆t) X N −k = = 1 ∑ xr exp[( −i 2πr / N )( N − k )] = N 1 xr exp( −i 2πr ) exp( i 2πkr / N ) = X *k ∑ N X N −k = X *k = X k (4.66) Przetwarzanie i A nal iza S y g nał ó w • Okresowość X N +k = = Rozdział 4 – A n al iza 8 8 w idm ow a 4. 1 0 . D y s k r et n a t r an s f or m at a F ou r ier a 1 ∑ xr exp[( −i 2πr / N )( N + k )] = N 1 ∑ xr exp( −i 2πr ) exp( −i 2πkr / N ) = X k N X N +k = X k (4.67) zakres użytecznych częstotliwości ω ≤ π ωs = = ωN ∆t 2 f ≤ for k ≤ f 1 = s = fN 2 ∆t 2 fs (ωs ) – częstość kołowa próbkowania fN (ωN ) – częstość kołowa Nyquista N 2 (4.68) (4.68a) Rozdział 4 – A n al iza w idm ow a Przetwarzanie i A nal iza S y g nał ó w 8 9 4. 1 1 . M as k ow an ie 4.11. MASKOWANIE twierdzenie Parsevala dla DFT 1 moc = N ∑ r = N −1 r =0 xr2 (4.69) wykorzystując IDFT 1 moc = N = ∑ k = N −1 k =0 ∑ r = N −1 1 Xk N r =0 ∑ k = N −1 2πkr xr ∑ X k exp i = N k =0 r = N −1 r =0 1 N 2πkr k = N −1 * xr exp i = ∑ X k X k N k =0 ∑ r = N −1 r =0 xr2 = ∑ k = N −1 k =0 Xk 2 (4.70) Rozważmy następujący przypadek: • sygnał o paśmie częstotliwości 0 ÷ ωmax • próbkowanie z częstotliwością ωs < 2ωmax (nie spełniającą warunku Nyquista) • DFT ⇓ wyznaczone spektrum będzie błędne !!! Rozdział 4 – A n al iza w idm ow a Przetwarzanie i A nal iza S y g nał ó w 9 0 4. 1 1 . M as k ow an ie wynik DFT oryginalne spektrum strzałka pokazuje przepływ mocy z zakresu ω > π / ∆t do użytecznego zakresu częstotliwości 0 ≤ ω ≤ π / ∆t zjawisko to (zniekształcania widma) zwane jest maskowaniem i jest wynikiem nieprawidłowego próbkowania (przy nie spełnionym warunku Nyquista) Jak uniknąć maskowania ? • przyspieszyć (dostatecznie) próbkowanie: ωs ≥ 2ωmax • zastosować filtrację dolno-przepustową (utrata części informacji o sygnale) Rozdział 4 – A n al iza w idm ow a Przetwarzanie i A nal iza S y g nał ó w 9 1 4. 1 1 . M as k ow an ie Mechanizm zjawiska maskowania (niepożądanego przepływu mocy) Rozważmy proces próbkowania z okresem próbkowania ∆t. Zobaczmy co ”stanie się” z falami monoharmonicznymi o częstościach kołowych większych niż częstość Nyquista przypadek 1 5 4 ω = ωN = 5π 4 ∆t ⇒ T= 2π 8 = ∆t ω 5 5 ⇒ ∆t = T 8 intuicyjne odtworzenie sygnału z próbek daje (również) falę monoharmoniczną o okresie T* (linia kropkowana) 8 ∆t = 5T = 3T* ⇓ ω* = 2π / T* = ω* < 3π 5π ≠ω = 4 ∆t 4 ∆t π = ωN ∆t Przetwarzanie i A nal iza S y g nał ó w Rozdział 4 – A n al iza w idm ow a 9 2 4. 1 1 . M as k ow an ie przypadek 2 ω= 7π 4 ∆t 8 ∆t = 7T = T* ⇒ T= ⇒ 2π 8 = ∆t ω 7 7 ⇒ ∆t = T 8 ω* = 2π / T* = 1π π < = ωN 4 ∆t ∆t ☞ częstotliwości zrekonstruowanych harmonicznych są lustrzanymi odbiciami względem ωN częstotliwości oryginalnych ☞ amplitudy pozostają niezmienne Rozdział 4 – A n al iza w idm ow a Przetwarzanie i A nal iza S y g nał ó w 9 3 4. 1 1 . M as k ow an ie reguła opisująca zmianę częstotliwości (maskowanie – ”alias”) harmonicznych z przedziału ω∈(ωs/2;ωs〉 ω* = ω s − ω (4.71) ogólnie częstość kołowa fali ω wynik DFT ω* 0÷ωs/2 ω ωs/2÷ωs ωs ωs-ω 0 ωs÷3ωs/2 ω-ωs Rozdział 4 – A n al iza 9 4 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w 4.12. SZYBKA TRANSFORMATA FOURIERA (F.F.T.) FFT – algorytm numeryczny szybkiego wyznaczania dyskretnej transformaty Fouriera (DFT) DFT szeregu czasowego {xr}, r = 0, 1, 2, ..., (N - 1) jest także szeregiem {Xk}, k = 0, 1, 2, ..., (N - 1) wymagającym N 2 operacji matematycznych o postaci 2πkr xr ⋅ exp − i N W 1965 Cooley i Tukey opublikowali ideę algorytmu FFT, który pozwolił na bardzo istotną redukcję czasu obliczeniowego przy zastosowaniu algorytmu FFT szereg {Xk} może być wyznaczony w operacjach N⋅log2N (4.72) warunek konieczny procedura FFT może być zrealizowana tylko wtedy gdy N = 2p N – liczba próbek p – liczba naturalna (4.73) Rozdział 4 – A n al iza 9 5 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w Zyski płynące z używania FFT przyspieszenie obliczeń liczba próbek N 4 16 64 256 1024 4096 log2N 2 4 6 8 10 12 przyspieszenie w porównaniu z DFT N2/N⋅log2N 2 4 10.7 32.0 102.4 341.3 wyższa dokładność obliczeń mniej operacji ⇓ redukcja błędów wynikających z obcięcia słowa komputerowego zasada FFT: • podział szeregu {xr} na podszeregi • DFT podszeregów • określenie {Xk} na podstawie cząstkowych DFT Rozdział 4 – A n al iza 9 6 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w przykład Rozważmy szereg czasowy {xr}, r = 0, 1, .. (N-1) gdzie N jest liczbą parzystą x1 xr x2 x3 x0 x4 x5 x6 x7 t Podzielmy szereg {xr} na 2 podszeregi {yr} {zr} w taki sposób, że y r = x2 r (4.74) r = 0 ,1,2 ,...,( N / 2 − 1 ) z r = x2 r +1 y1=x2 yr y0=x0 y2=x4 y3=x6 t zr z0=x1 z1=x3 z2=x5 z3=x7 t Rozdział 4 – A n al iza 9 7 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w transformaty DFT podszeregów (zgodnie z 4.63a) będą równe 1 N / 2−1 2πkr Yk = y r exp − i ∑ ( N / 2 ) r =0 ( N / 2 ) k = 0 ,1,..., N − 1 1 N / 2−1 2πkr 2 Zk = z r exp − i ∑ ( N / 2 ) r =0 ( N / 2 ) (4.75) Powróćmy teraz do DFT oryginalnego szeregu {xr} i zmodyfikujmy porządek sumowania tak, aby uzyskać dwie sumy podobne do tych, które występują w (4.75) 1 Xk = N 2πkr x exp ∑ r −i N = r =0 N −1 1 N / 2−1 2πk ( 2 r ) = ∑ x2 r exp − i + N r =0 N + ∑ N / 2 −1 r =0 2πk ( 2 r + 1 ) x2 r +1 exp − i N wykorzystując związki (4.74) 1 N / 2−1 2πkr X k = ∑ y r exp − i + N r =0 N / 2 2πk N / 2−1 2πkr + exp − i ∑ z r exp − i N N / 2 r =0 uzyskuje się związek pomiędzy transformatami Yk i Zk oraz Xk 1 N 2πk X k = Yk + exp − i Z k ; k = 0 ,1,..., − 1 2 N 2 (4.76) Przetwarzanie i A nal iza S y g nał ó w Rozdział 4 – A n al iza 9 8 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a DFT {Xk} oryginalnego szeregu {xr} może być wyznaczona wprost z transformat DFT {Yk} i {Zk} podszeregów {yr} i {zr} zgodnie z formułą (4.76) – ”sercem” algorytmu FFT formułę (4.76) stosuje się jedynie dla wartości k w zakresie 0 ÷ N/2-1, co pozwala na określenie tylko połowy współczynników {Xk} transformaty {Yk} i {Zk} są funkcjami okresowymi (z okresem N/2) Yk + N / 2 2πr( k + N / 2 ) 1 N / 2−1 y r exp − i = ∑ = ( N / 2 ) r =0 ( N / 2 ) 1 N / 2−1 2πrk = y r exp − i exp(− i 2πr ) ∑ 1 4 43 4 ( N / 2 ) r =0 ( N / 2 ) 42 1 tak więc Yk+N/2 = Yk = Yk-N/2 (4.77a) Zk+N/2 = Zk = Zk-N/2 (4.77b) pozostałe współczynniki transformaty {Xk} dla k = N/2, ... , N-1 mogą być wyznaczone z określonych już wartości {Yk} i {Zk} 1 2π ( k + N / 2 ) X k + N / 2 = Yk + N / 2 + exp − i Z k+N / 2 = N 2 1 2πk = Yk + exp − i exp(− iπ ) Z k 1 4243 2 N −1 Rozdział 4 – A n al iza 9 9 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w Wprowadzając nową zmienną W W = exp(-i2π/N) (4.78) uzyskujemy tzw. algorytm ”motylkowy” ("butterfly") X k+N / 2 { { 1 Yk + W k Z k 2 1 = Yk − W k Z k 2 Xk = } } k = 0 ,1,2 ,..., N −1 2 (4.79) PRZYKŁAD OBLICZENIOWY Dla zilustrowania algorytmu FFT "w akcji" rozważymy prosty przypadek obliczeniowy, w którym oryginalny szereg {xr} posiada jedynie cztery wyrazy. krok 1 – podział na podszeregi 1a. {xr} = x0, x1, x2, x3 {yr} = x0, x2 {zr} = x1, x3 1b. {yr} = x0, x2 {tr} = x0 {ur} = x2 {zr} = x1, x3 {vr} = x1 {qr} = x3 Rozdział 4 – A n al iza 1 0 0 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w krok 2 – DFT 1-elementowych podszeregów 1 Xk = N ∑ xr exp(− i 2πkr / N ) N −1 r =0 dla N=1, k=0, r=0 Xk = xr (X0 = x0) DFT 1-elementowego szeregu równa jest jemu samemu {Tk} = {x0}; {Uk} = {x2}; {Vk} = {x1}; {Qk} = {x3} krok 3 – konstrukcja {Xk} z cząstkowych DFT etap a Yk = f(Tk, Uk) oraz Zk = f(Vk, Qk) Ponieważ {Yk} i {Zk} są szeregami 2-elementowymi, zatem N = 2; k = 0 oraz W = exp(-i2π/N) = exp(-iπ) = -1 Y0 = ½ {T0 + W0 ⋅U0} = ½ (x0 + x2) Y0+1 = ½ {T0 – W0 ⋅U0} = ½ (x0 – x2) Z0 = ½ {V0 + W0 ⋅Q0} = ½ (x1 + x3) Y0+1 = ½ {V0 – W0 ⋅Q0} = ½ (x1 – x3) Rozdział 4 – A n al iza 1 0 1 w idm ow a 4. 1 2 . S zy b k a t r an s f or m at a F ou r ier a Przetwarzanie i A nal iza S y g nał ó w etap b Xk = f(Yk, Zk) Ponieważ {Xk} jest szeregiem 4-elementowym, zatem N = 4; k = 0, 1 oraz W = exp(-i2π/N) = exp(-iπ/2) = -i X0 = ½ {Y0 + W0 ⋅Z0} = ¼ {x0 + x2 + x1 + x3} X1 = ½ {Y1 + W1 ⋅Z1} = ¼ {x0 – x2 + (-i)(x1 – x3)} X0+2 = ½ {Y0 – W0 ⋅Z0} = ¼ {x0 + x2 – (x1 + x3)} Y0+1 = ½ {Y1 – W1 ⋅Z1} = ¼ {x0 – x2 + i(x1 – x3)} N=4 {xr} N=2 {yr} {zr} N=1 {tr} {ur} {vr} {qr} N=1 {Tk} {Uk} {Vk} {Qk} N=2 N=4 {Yk} {Zk} {Xk}