Rozdziaª 12 Algorytm FFT
Transkrypt
Rozdziaª 12 Algorytm FFT
Rozdziaª 12 Algorytm FFT W tym rozdziale przedstawimy zadania laboratoryjne, w których przetestujemy dyskretn¡ transformat¦ Fouriera (DFT) oraz szybki algorytm jej obliczania, czyli algorytm szybkiej trasformaty Fouriera; FFT (ang. Fast Fourier Transform) W opisie matematycznym przyjmujemy, »e mamy do czynienia z wektorami okresowymi o okresie dªugo±ci N indeksowanymi od zera i xk = xk+N dla k ujemnych. Przez FN x oznaczymy wynik dziaªania operatora DFT na wektorze x, a przez FN−1 x oznaczymy wynik dziaªania operatora odwrotnego do DFT na wektorze x. Zadanie 1 Funkcja octave'a z algorytmem FFT t (), która oblicza warto±¢ DFT i funkcja octave'a z algorytmem odwrotnym FFT it (), która oblicza warto±¢ transformaty odwrotnej do DFT. Sprawd¹, czy rzeczywi±cie operacje wykonywane przez t () i it () s¡ do siebie odwrotne, tzn. dla ró»nych losowych wektorów x o dªugo±ci N = 4, 8, 16, 32 policz y = FN x za pomoc¡ t (), a nast¦pnie z = FN−1 y za pomoc¡ it (). Policz normy drugie ró»nicy z − x. Zadanie 2 Skalowanie w funkcjach octave'a t () i it (). W literaturze zdarza si¦ denicja DFT bez 1/N przed macierz¡. Wtedy macierz odwrotn¡ do DFT nale»y przemno»y¢ przez N √ albo obie przez 1/ N . Sprawd¹, jaka jest staªa przed DFT obliczanym przez funkcj¦ 60 t (), tzn. wyznacz CN takie, »e (FN x)j = CN N −1 X xk exp(−2π ∗ j ∗ k/N ) k=0 dla FN x obliczanego przez t¦ funkcj¦ octave'a . Zadanie 3 Sprawd¹, czy DFT obliczona przy pomocy funkcji t () speªnia kFN xk2 = CN kxk2 ze staª¡ CN dla stu losowych wektorów x, oraz czy analogicznie odwrotna DFT obliczona it () speªnia: kFN−1 yk2 = CN−1 kxk2 . Zadanie 4 Algorytm szybkiego mno»enia wielomianów. Napisz funkcj¦ octave'a function w=polymult ( p , q ) szybko mno»¡c¡ dwa wielomiany stopnia nie wi¦kszego od N , dla których znamy ich wspóªczynniki w bazie pot¦gowej. Funkcja powinna korzysta¢ z DFT i odwrotnej DFT, czyli dyskretnej transformaty Fouriera i odwrotnej dyskretnej transformaty Fouriera. Parametry funkcji powinny by¢: • P wektor p = (pk )k ze wspóªczynnikami wielomianu P (x) = k k pk x , • wektor q = (qk )k ze wspóªczynnikami wielomianu Q(x) = P k k qk x . Funkcja P powinna zwróci¢ wspóªczynniki wielomianu W (x) = P (x)∗ Q(x) = k wk xk . Sprawd¹ dziaªanie funkcji dla wielomianów P (x) = 1+x i Q(x) = 2 + x, czyli (P ∗ Q)(x) = 2 + 3x + x2 , a potem dla wielomianów du»ych stopni, czyli np. dla Q(x) = x50 i P (X) = x50 + 1 funkcja powinna zwróci¢ wspóªczynniki wielomianu (P ∗ Q)(x) = x100 + x50 . Porównaj czas oblicze« tej funkcji z wynikiem funkcji octave'a conv() dla wielomianów ró»nych stopni z losowymi wspóªczynnikami. 61 Zadanie 5 DFT a dyskretny splot dwóch wektorów. Napisz dwie funkcje obliczaj¡ce splot dwóch wektorów z = x ? y • wprost z denicji, tzn. zk = PN −1 j=0 xk yk−j • z wykorzystaniem DFT - tu musimy skorzysta¢ z tego, »e (FN (x ? y))k = αN (FN x)k ∗ (FN y)k k = 0, . . . , N − 1 dla pewnej staªej αN . Trzeba t¦ staª¡ wyznaczy¢ teoretycznie albo eksperymentalnie. Przetestuj obie funkcje dla losowych wektorów i ró»nych N = 4, 8, 64, 1024. Porównaj z wynikami funkcji octave'a conv(). Nale»y zapozna¢ si¦ z pomoc¡ do tej funkcji. Zadanie 6 Filtry a DFT. W niektórych zastosowaniach wspóªczynniki wektora x mog¡ odpowiada¢ próbkom sygnaªu (np. d¹wi¦ku). Stosuje si¦ wtedy ltry w postaci splotu x z zadanym wektorem F peªni¡cym rol¦ ltru: x ? F . Rozwa»my ltr postaci F = 41 ∗ (1, 1, 1, 1, 0, . . . , 0)T (pierwsze cztery wspóªrz¦dne s¡ równe 41 , pozostaªe - zero). Zastosuj ten ltr do wektora imituj¡cego próbki sygnaªu z szumem: z = x + y , gdzie xk = sin(k ∗ h) dla h = 2 ∗ π/N - imituje sygnaª bez szumów, a y jest wektorem losowym o warto±ciach w [−0.1, 0.1] imituj¡cym losowe zaburzenie, czyli tzw. szumy. Przetestuj ltr dla du»ych N , np. N = 1024 lub 2048, tzn.: • Narysuj wykres z przed zastosowaniem ltra i po zastosowaniu, tzn. wykresy z i z?F . Mo»na narysowa¢ maªy fragment wykresu, np dla 100 ≤ k ≤ 120. Jaki efekt optyczny wida¢ na wykresach? • Policz maksimum z moduªu ró»nicy kolejnych elementów obu wektorów, tzn. maxk>0 |zk − zk−1 | i maxk>0 |(z ? F )k − (z ? F )k−1 |. Im ta warto±¢ dla danego wektora z próbkami sygnaªu jest mniejsza, tym sygnaª jest gªadszy, czyli mo»emy uzna¢ go za sygnaª z mniejsz¡ ilo±ci¡ szumów. 62 Projekty zaliczeniowe 63