• Nie Znaleziono Wyników

2 . Szybka transformata Fouriera

N/A
N/A
Protected

Academic year: 2021

Share "2 . Szybka transformata Fouriera"

Copied!
6
0
0

Pełen tekst

(1)

2 . Szybka transformata Fouriera

Wyznaczenie ciągu (Y0, Y1, . . . , YN −1) przy użyciu DFT wymaga wykonania:

– mnożenia zespolonego – (N − 1)2 razy, – dodawania zespolonego – N (N − 1) razy,

przy założeniu, że wartości ωNj są już dane. Najczęściej przyjmowane war- tości N są rzędu 1000, co daje około miliona operacji każdego rodzaju.

Naturalnym stało się więc poszukiwanie sposobów wyznaczania DFT, które pozwoliłyby na obniżenie kosztu tej metody. Algorytm taki został opisany w 1965 roku przez dwóch matematyków amerykańskich J. W. Cooleya i J.

W. Tukeya i nosi nazwę szybkiej transformaty Fouriera (FFT). Algorytm ten wykorzystuje specjalną postać macierzy przekształcenia FN, której ele- mentami są pierwiastki z jedynki. Koszt FFT jest rzędu N log N .

Niech N = 2m, m ∈ N.

Yn = 1 2m

2m−1 X k=0

ykωN−nk = 1 2m

m−1 X k=0



y2kωN−2nk+ y2k+1ωN−n(2k+1)



=

=1 2

1 m

m−1 X k=0

y2kωN−2nk + ωN−n 1 m

m−1 X k=0

y2k+1ωN−2nk

, ale

ωN−2nk = ω2m−2nk = e2iπ2m1 (−2nk) =



e2iπm1−nk = ωm−nk, czyli

Yn = 1 2

1 m

m−1 X k=0

y2kωm−nk + ω2m−n 1 m

m−1 X k=0

y2k+1ωm−nk

= 1 2

Pn + ω2m−nIn. Zauważmy, że

Pm+n = 1 m

m−1 X k=0

y2kωm−(m+n)k = 1 m

m−1 X k=0

y2kωm−nk = Pn

i podobnie

In+m = In oraz

ω2m−(m+n) = e−2iπ2m1 (m+n) = ω−n2m· e−iπ = −ω−n2m. Równości te prowadzą do algorytmu:

(2)

Krok 1. Obliczyć Pk i ω−kN Ik.

Krok 2. Utworzyć Yk = 12(Pk + ωN−kIk).

Krok 3. Wyznaczyć Yk+m = 12(Pk − ωN−kIk).

Kroki te należy wykonać dla k = 0, 1, . . . , m − 1.

Pk i Ik są dodatkowo dwoma niezależnymi DFT rzędu m = N2: FN

2 :(y0, y2, . . . , y2m−2) → (P0, P1, . . . , Pm−1), FN

2 :(y1, y3, . . . , y2m−1) → (I0, I1, . . . , Im−1).

Przy założeniu, że m jest parzyste, można więc algorytm powtórzyć. Jeśli N = 2p, to iterujemy ten proces tak długo, aż dojdziemy do DFT rzędu 2.

Ma ona postać:

Y0 =y0 + y1 2 , Y1 =y0 − y1

2 . Przykład: N = 8.

1. (y0, y1, . . . , y7) dzielimy na dwa ciągi długości 4:

(y0, y2, y4, y6), (y1, y3, y5, y7).

2. Ciągi te dzielimy na ciągi długości 2:

(y0, y4), (y2, y6), (y1, y5), (y3, y7).

3. Obliczamy dla każdego z tych ciągów P0 i I0 oraz wyznaczamy (Y0, Y1).

4. Przy użyciu formuł

Yk =1

2(Pk + ωN−kIk) Yk+m =1

2(Pk − ωN−kIk).

przechodzimy od wektora długości m do wektora długości 2m.

(3)

Dla N = 2p ogólny koszt tego algorytmu to 12N (log2N − 2) + 1 dodawań i N log2N mnożeń. Dla N = 1024 daje to nam koszt 250 razy mniejszy od kosztu DFT.

Program:

Procedure FFT(n,w,y,Y);

begin

if n=1 then Y[0]:=y[0] else begin

m:=n div 2;

for k:=0 to m-1 do begin

b[k]:=y[2*k];

c[k]:=y[2*k+1]

end;

w2:=w*w;

FFT(m,w2,b,B);

FFT(m,w2,c,C);

wk:=1;

for k:=0 to m-1 do begin

X:=B[k]; T:=wk*C[k];

(4)

Y[k]:=(X+T)/2;

Y[k+m]:=(X-T)/2;

wk:=wk*w end

end end.

Zastosowania FFT do obliczeń numerycznych Przykład 1.: Splot cykliczny.

1. Ciągi o wartościach zespolonych.

(xn)n∈Z, (hq)q∈Z - ciągi o wartościach zespolonych, okresowe o okresie N . Splot cykliczny tych ciągów zdefiniowany jest wzorem

yn =

N −1 X q=0

hqxn−q =

N −1 X q=0

hn−qxq.

Jest to ciąg okresowy o okresie N . Przy ustalonym (hq) przekształcenie zadane powyższym wzorem jest liniowym przekształceniem CN w siebie:

X → Y = HX,

X = (x0, x1, . . . , xN −1)T, Y = (y0, y1, . . . , yN −1)T,

H =

h0 hN −1 hN −2 . . . h1 h1 h0 hN −1 . . . h2

h2 h1 h0 . . . h0 ...

hN −1 hN −2 hN −3 . . . h0

.

Macierz tą nazywamy macierzą cykliczną.

Wyznaczenie splotu cyklicznego bezpośrednio z definicji wymaga wyko- nania:

mnożenia zespolonego - N2 razy,

dodawania zespolonego - N (N − 1) razy.

Możemy jednak rozważać DFT (Xk), (Hk) i (Yk) odpowiednio ciągów (xn), (hn) i (yn). Równanie zadające splot będzie miało wówczas postać

Yk = N HkXk, k = 0, 1, 2, . . . , N − 1.

(5)

Jeśli założymy, że N = 2p, to wykonujemy teraz następujące kroki:

Kolejne kroki Koszt

1. Wyznaczamy transformaty [N (p − 2); 2N p]

FN : (xn) → (Xk) FN : (hn) → (Hk)

2. Obliczamy iloczyn [N ; 0]

Yk = N HkXk, k = 0, 1, . . . , N − 1

3. Wyznaczamy transformatę odwrotną hN2(p − 2); N pi. FN−1 : (Yk) → (yn)

Koszt całkowity to

mnożenie zespolone – N2(3 log2N − 4) razy, dodawanie zespolone – 3N log2N razy.

Dla N = 64 daje to koszt [448; 1152], zamiast [4096, 4032].

2. Ciągi o wartościach rzeczywistych.

W tym przypadku krok 1. może być zastąpiony wyznaczeniem poje- dynczej transformaty zmiennych zespolonych zamiast dwóch transformat zmiennych rzeczywistych. W kroku 3. oblicza się transformatę odwrotną rzędu N ciągu, który spełnia warunek Y−k = Yk, możemy zastąpić to obli- czaniem transformaty rzędu N2.

Całkowity koszt wynosił będzie hN4(3 log2N − 5);N2 (3 log2N − 1)i opera- cji zespolonych, czyli hN (3 log2N − 5);N2 (9 log2N − 7)i operacji rzeczywi- stych. Przy N = 64 zmniejsza to liczbę wykonywanych operacji z [16 384;

16 256] do [832, 1 504].

Przykład 2.: Splot niecykliczny. Niech (xn)n∈Z, (hn)n∈Z będą dwoma sy- gnałami nieokresowymi o zwartych nośnikach. W szczególności niech

xn = 0 jeśli n < 0 lub n ­ M ,

hn = 0 jeśli n < 0 lub n ­ Q (Q ­ M ).

Chcemy wyznaczyć

yn =

Q−1 X q=0

hqxn−q.

(6)

yn jest równe 0, jeśli n < 0 lub n ­ M + Q − 1. Niech N będzie naj- mniejszą potęga liczby 2 taką, że N ­ M + Q − 1. Tworząc z oryginalnego ciągu ciąg okresowy o okresie N , wracamy do problemu wyznaczenia splotu cyklicznego z użyciem FFT.

Koszt takiego postępowania może się jednak okazać wyższy niż koszt bezpośredniego rachunku w przypadkach, gdy długości tych dwóch sygnałów różnią się znacznie, np. gdy ciąg (xn) jest praktycznie „nieskończony”, a nośnik filtru (hn) relatywnie mały. Są jednak metody pozwalające obniżyć ten koszt, rozważa się w nich ciąg (xn) podzielony na mniejsze części.

Cytaty

Powiązane dokumenty

Pomniejsze własności transformaty

Udowodnij, że transformata Fouriera funkcji parzystej (nieparzystej) jest parzysta

W dniu 22 maja 2007 roku, już po raz czwarty odbyły się warsztaty studenckie „Miasta bez Barier”, orga−. nizowane przez Wydział Architektury

każda ze stron jest ograniczona z góry przez drugą z dokładnością do stałej multiplikatywnej zależnej tylko od d, s..

Istotnie, gdyby dla którejś z nich istniał taki dowód (powiedzmy dla X), to po wykonaniu Y Aldona nie mogłaby udawać przed Bogumiłem, że uczyniła X (gdyż wówczas Bogumił wie,

Pokrywanie się obu przebiegów jest tym lepsze im większa jest częstotliwość próbkowania (na rysunku N=16 384, proszę spróbować dla większych

• jeden wykres transformaty na którym wyraźnie widoczne będą piki pochodzące od modów dominu- jących w sygnale - znajdują się one na początku wykresu transformaty. • na

Jednym z jego aspektów jest to, i» zamiast rozpatrywa¢ funkcj¦ falow¡ jako funkcj¦ poªo»enia, mo»na równowa»nie rozpatrywa¢.. j¡ jako funkcj¦