x 2k
Transkrypt
x 2k
9. Dyskretna transformata Fouriera – algorytm FFT Transformata Fouriera ma szerokie zastosowanie w analizie i syntezie układów i systemów elektronicznych, gdyż pozwala na połączenie dwóch sposobów przedstawiania sygnałów — reprezentacji w dziedzinie czasu i reprezentacji w dziedzinie częstotliwości. Dyskretna transformata Fouriera (ang. discrete fourier transform - DFT) stosowana jest wtedy, gdy wartości liczbowe sygnału x t są określone dla skończonej liczby N wartości zmiennej t (czas) należącej do pewnego przedziału [0, T ]. Najczęściej przyjmuje się, że wartości te są równoodległe o jednakowy przedział czasu t =T / N =1 / f p , gdzie f p jest częstotliwością próbkowania. Sygał x t jest zatem reprezentowany przez skończony ciąg {x n} , n=0,1, , N −1 , wartości liczbowych — próbek sygnału. Zadanie obliczenia dyskretnej transformacji Fouriera sygnału sprowadza się do wyznaczenia wartości liczbowych sum N −1 X k = ∑ x n W nk N k =0,1, , N −1 , 9.1.a n=0 dla przekształcenia prostego (czas — częstotliwość) oraz sum 1 x n= N N −1 ∑ k =0 X k W −nk N n=0, 1, , N −1 , 9.1.b dla przekształcenia odwrotnego IDFT (ang. inverse DFT) - częstotliwość — m − j 2m/ N czas, gdzie W =e 9.1.c N to współczynnik obrotu. 9. Dyskretna transformata Fouriera – algorytm FFT Wyznaczenie DFT w oparciu o zależność 9.1.a (oraz IDFT z wykorzys2 taniem 9.1.b) wymaga wykonania N mnożeń oraz N dodawań. Stosując algorytm szybkiej transformacji Fouriera FFT (odwrotnej szybkiej transformacji Fouriera) liczbę obliczeń można zmniejszyć do ok. N / 2⋅log 2 N . Zmniejszenie nakładu obliczeń transformaty DFT można uzyskać stosując następujący ciąg przekształceń. 1. Podział sekwencji wejściowej {x n}={ x 0 , x 1 , , x N −1} na dwie połowy: {x 0 , x 1 , , x N N N −1 } oraz {x ,x 1 , , x N −1 }. 2 2 2 Transformatę DFT całej sekwencji z uwzględnieniem transformat obydwu części można zapisać odpowiednio N /2−1 X k = ∑ nk N N −1 x nW n=0 ∑ n= N / 2 nk x nW N 9.1.d Podstawiając n=nN / 2 w drugiej sumie powyższego wzoru otrzymuje się N /2−1 X k = ∑ n=0 nk N x nW W kN / 2 N N / 2−1 ∑ n=0 x n N nk WN 2 9.1.e 9. Dyskretna transformata Fouriera – algorytm FFT Wykorzystując własność wyrażenia 9.1.c kN / 2 WN − jk =e zależność 9.1.e N /2−1 −j k =e k =cos − j sin =−1 k przyjmuje postać [ ] N X k = ∑ x n−1 x n W nk 9.1.f N . 2 n=0 k Z kolei wyrażenie −1 =1 dla k parzystego i −1 dla k nieparzystego. Pozwala to zapisać równanie 9.1.f oddzielnie dla k parzystego N /2−1 ∑ X k = n=0 k [ N x n x n 2 [ x n− x n ] WN. 9.1.g ] W nk N . 9.1.h nk k nieparzystego. N /2−1 X k = ∑ n=0 N 2 9. Dyskretna transformata Fouriera – algorytm FFT Zastępując k =2 k dla parzystych k oraz k =2 k 1 dla nieparzystych k równania 9.1.g oraz 9.1.h dla k =0, 1, , N / 2−1 przyjmują odpowiednio postać N /2 −1 X 2k= ∑ n=0 [ N / 2−1 X 2k1= x n x n ∑ n =0 [ N 2 ] x n−x n 2nk WN , N 2 ] 9.1.i n 2nk WN WN . 9.1.j Wykorzystując własność współczynnika obrotu 9.1.c m W 2m =W N N/2 , 9.1.k oraz stosując podstawienia a n=x nx n N , 2 bn=x n−x n N , 2 9. Dyskretna transformata Fouriera – algorytm FFT Wyrażenia 9.1.i oraz 9.1.j przyjmują bardziej czytelną postać dwóch N / 2 -punktowych transformat DFT N /2 −1 X 2k= ∑ n=0 N / 2−1 X 2k1= ∑ n =0 nk a nW N / 2 , b nW nN W nk N /2 . 9.1.l 9.1.m 9. Dyskretna transformata Fouriera – algorytm FFT 2. Podział uzyskanych dwóch sekwencji {a 0 , a 1 , , a N / 2−1} oraz {b 0W 0N , b1W 1N , , b N / 2−1W NN / 2−1 } na cztery sekwencje N / 4 punktowe. Wyznaczenie transformat DFT dla poszczególnych sekwencji w sposób analogiczny do czynności w punkcie nr 1. 9. Dyskretna transformata Fouriera – algorytm FFT 3. Przeprowadzanie dekompozycji DFT do momentu uzyskanych N / 2 sekwencji dwuelementowych tzw. ''motylków''. W przypadku 2-punktowego DFT równanie 1 X k =∑ x n W nk 2 lub k =0,1 , przyjmuje postać 9.1.n n=0 0 0 X 0=a 0W 2a 1 W 2=a 0a 1 X 1=a 0W 02a 1W 12 =a 0−a1 9.1.o W drugim równaniu 9.1.0 wykorzystano własność współczynnika obrotu 1 − j 2 / 2 W 2=e =−1 9.1.c 9. Dyskretna transformata Fouriera – algorytm FFT Omówiona metoda dekompozycji DFT nosi nazwę algorytmu FFT z podziałem w dziedzinie częstotliwości DIF (ang. decimation in frequency ). 9. Dyskretna transformata Fouriera – algorytm FFT Jak można zauważyć w fazie końcowej algorytm ten wymaga posortowania uzyskanych wartości widma. Można do tego wykorzystać metodę numeracji o odwróconej kolejności bitów (ang. bit-reversal procedure) 0 (000)2 → (000)2 0 1 (001)2 → (100)2 4 2 (010)2 → (010)2 2 3 (011)2 → (110)2 6 5 (101)2 → (101)2 5 7 (111)2 → (111)2 7 9. Dyskretna transformata Fouriera – algorytm FFT Istnieje również metoda dekompozycji DFT z podziałem w dziedzinie czasu DIT (ang. decimation in time ). Powstaje ona w wyniku rozkładu algorytmu spowodowanego podziałami danych wejściowych na ciagi danych parzystych i nieparzystych. k N / 2 k X k N / 2=C k −W N D k , k WN =−W N k =0 , 1, , N / 2−1 9. Dyskretna transformata Fouriera – algorytm FFT FFT z podziałem w dziedzinie czasu DIT. Dla N =8 X k =C k W k8 D k , X k 4=C k −W 8k D k , k =0 , 1, 2, 3, k =0 , 1, 2, 3.