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