Analiza szeregów czasowych: 1. Dyskretna transformata Fouriera i

Transkrypt

Analiza szeregów czasowych: 1. Dyskretna transformata Fouriera i
Analiza szeregów czasowych:
1. Dyskretna transformata Fouriera i zagadnienia
pokrewne
P. F. Góra
http://th-www.if.uj.edu.pl/zfs/gora/
semestr letni 2006/07
Plan wykładu
• Dyskretna transformata Fouriera, podstawowe pojecia,
˛
algorytm(y) FFT,
twierdzenie Shannona o próbkowaniu.
• Splot, widmo mocy, wygładzanie widma.
• Filtr Wienera.
• Filtry liniowe FIR, IIR. Funkcja przejścia filtru. Rola fazy.
• Projektowanie prostych filtrów.
• Modele stochastyczne: AR, MA, ARMA, ARIMA. Równania Yule’a–Walkera.
Identyfikacja modelu. Kryterium Akaike,
• Przewidywanie przyszłego zachowania szeregu.
• Uwagi o wielowymiarowych szeregach czasowych — wielowymiarowe modele ARMA, ARCH, GARCH.
• Banki filtrów. Falki (wavelets) Daubechies.
1. Dyskretna transformata Fouriera
2
• Inne bazy falkowe. Przykłady zastosowania falek.
• Kompresja i odszumianie przy użyciu falek.
• Transformata falkowa obrazów nieruchomych.
• Sygnały nieliniowe. Twierdzenie Takensa. Rekonstrukcja przestrzeni fazowej.
• Odszumianie i przewidywanie przyszłego zachowania nieliniowego szeregu
czasowego.
1. Dyskretna transformata Fouriera
3
Zaliczenie
W celu zaliczenia wykładu należy rozwiazywać
˛
— i oddawać mi w formie
pisemnej — zadania “dla wszystkich” zamieszczane na mojej stronie WWW.
Z osobami, które chca˛ (moga?
˛ musza?)
˛ zdawać egzamin, forme˛ egzaminu
ustale˛ indywidualnie.
1. Dyskretna transformata Fouriera
4
Transformata Fouriera
Z∞
g(t)e2πif t dt
(1)
G(f )e−2πif t df
(2)
G(f ) =
−∞
Transformata odwrotna:
Z∞
g(t) =
−∞
Trzeba pamietać
˛
gdzie w używanej konwencji pojawia sie˛ 2π. Aby transformata
Fouriera istniała, funkcja musi odpowiednio szybko zanikać w ±∞.
1. Dyskretna transformata Fouriera
5
Własności transformaty Fouriera
Splot:
Z∞
g(τ )h(t − τ ) dτ
(g ? h)(t) =
(3a)
−∞
g ? h ↔ G(f )H(f )
(3b)
Funkcja korelacji:
Z∞
Corr(g, h) =
g(τ + t)h(t) dτ
(4a)
−∞
Corr(g, h) ↔ G(f )H ∗(f )
1. Dyskretna transformata Fouriera
(4b)
6
Twierdzenie Wienera-Chinczyna∗
Funkcja autokorelacji:
Corr(g, g) ↔ |G(f )|2
(5)
Równość Parsevala
Z∞
|g(t)|2 dt =
−∞
∗ Ang.
Z∞
|G(f )|2 df = całkowita moc
(6)
−∞
Wiener-Khinchin Theorem.
1. Dyskretna transformata Fouriera
7
Próbkowanie dyskretne
W praktyce nigdy nie mamy do czynienia z sygnałami ciagłymi,
˛
a tylko z szeregami czasowymi. Załóżmy, że mamy szereg próbkowany ze stałym krokiem ∆:
gn = g(n∆) ,
n = . . . , −3, −2, −1, 0, 1, 2, 3, . . .
(7)
Zauważmy, że samo próbkowanie wprowadza do układu pewna˛ charakterystyczna˛ cz˛estotliwość, zwana˛ cz˛estotliwościa˛ Nyquista:
1
fNyq =
.
2∆
(8)
Jaki jest jej sens? Aby prawidłowo rozpoznać okres fali harmonicznej, trzeba ja˛
spróbkować co najmniej dwa razy na okres. Jeśli zatem próbkujemy z krokiem
∆, możemy zaobserwować tylko cz˛estotliwości f ∈ [−fNyq, fNyq].
1. Dyskretna transformata Fouriera
8
Aliasing
A co jeśli sygnał zawiera cz˛estotliwości f 6∈ [−fNyq, fNyq]? Czy zostaja˛ one
utracone? To byłoby pół biedy: Cz˛estości spoza przedziału Nyquista, jeśli sa˛
obecne w sygnale, zafałszowuja˛ obserwowany rozkład cz˛estości wewnatrz
˛ tego
przedziału: „Ogony” zostaja˛ odbite do środka. Dlatego też jeśli podejrzewamy,
że krok próbkowania jest za duży i nie można go zmniejszyć, należy odfiltrować
cz˛estości spoza przedziału Nyquista przed dalsza˛ obróbka.
˛
Praktycznym testem na nieobecność aliasingu jest to, że widmo mocy† zanika
na granicach przedziału Nyquista.
† Wybiegajac
˛
przed orkiestre.
˛
1. Dyskretna transformata Fouriera
9
P(f)
prawdziwe
znieksztalcone
ogony odbite do srodka
-fNyq
1. Dyskretna transformata Fouriera
0
f
fNyq
10
Formalne źródło aliasingu:
Jeśli ∆ jest krokiem próbkowania, dwie fale o cz˛estotliwościach f1, f2 daja˛ takie
same próbki, jeśli f1 − f2 = k/∆: exp(2πif1n∆) =
exp(2πi(f2 + k/∆)n∆) = exp(2πif2n∆ + 2πikn) = exp(2πif2n∆).
1.5
∆ = 1/8, N = 32
1.0
1.0
0.0
-0.5
0.4
0.2
-1.0
-1.5
0.0
0.6
P(ω)
0.5
sin(2πt) - 0.5sin(7πt)
sin(2πt) + 0.5sin(9πt)
0.8
0.0
0.5
1.0
1.5
2.0
t
1. Dyskretna transformata Fouriera
2.5
3.0
3.5
4.0
0π
1π
2π
3π
4π
ω
5π
6π
7π
8π
11
Twierdzenie Shannona‡ o próbkowaniu§:
Jeżeli funkcja jest pasmowo ograniczona (ang. bandwidth limited, band-limited),
to znaczy jeśli zawiera tylko cz˛estotliwości z przedziału [−fNyq, fNyq], i jeśli dany
jest nieskończony ciag
˛ próbek z krokiem ∆, to
∀t :
g(t) = ∆
∞
X
³
gn
´
sin 2πfNyq(t − n∆)
n=−∞
π(t − n∆)
.
(9)
To bardzo mocne twierdzenie: Pozwala odtworzyć wartości funkcji pasmowo
ograniczonej w nieprzeliczalnie wielu punktach na podstawie jej znajomości
w dyskretnych punktach. Szumy (procesy stochastyczne) i funkcje nieciagłe
˛
nie
sa˛ pasmowo ograniczone.
‡ Zwane
§ Ang.
także Twierdzeniem Shannona-Kotelnikowa.
Shannon sampling theorem.
1. Dyskretna transformata Fouriera
12
Skończone szeregi czasowe
W praktyce nigdy nie mamy nieskończonego szeregu czasowego — dysponujemy zaledwie skończonym ciagiem
˛
o długości N . Co zrobić z transformata˛
Fouriera, a w szczególności jak zapewnić jej zbieżność? Stosowane sa˛ dwie
konwencje:
• Zakładamy, że szereg czasowy zanika do zera przy końcach — a jeśli nie
zanika, obkładamy go odpowiednia˛ funkcja˛ okna zapewniajac
˛ a˛ to zanikanie.
• Zakładamy, że dostepny
˛
ciag
˛ skończony jest okresem podstawowym nieskończonego ciagu
˛ okresowego. Jest to motywowane tym, iż w tej konwencji czyste przebiegi harmoniczne maja˛ transformaty (ciagła
˛ transformata Fouriera funkcji sinus istnieje tylko w sensie dystrybucyjnym).
1. Dyskretna transformata Fouriera
13
My przyjmujemy te˛ druga˛ konwencje.
˛ Zgodnie z nia˛ udajemy, że badamy szereg
postaci
. . . , g0, g1, g2, . . . , gN −1, g0, g1, g2, . . . , gN −1, g0, g1, g2, . . . , gN −1, . . . (10)
|
{z
kopia −1
} |
{z
prawdziwe dane
} |
{z
kopia 1
}
Ponieważ mamy N próbek wejściowych, także dyskretna˛ transformate˛ Fouriera
(DFT, ang. Discrete Fourier Transform) możemy obliczyć tylko w N punktach.
Dla ustalenia uwagi niech N bedzie
˛
parzyste. Przyjmujemy, że DFT obliczać
bedziemy
˛
dla cz˛estotliwości
n
,
fn =
N∆
1. Dyskretna transformata Fouriera
N
N
n = − ,..., .
2
2
(11)
14
Z∞
G(fn) =
−∞
s(NZ−1)∆
M
X
1
= lim
M →∞ 2M +1
s=−M
g(t) e2πifnt dt
g(t) e2πifnt dt =
(N −1)∆
Z
g(t)e2πifntdt
0
(s−1)(N −1)∆
(12)
˛ funkcje˛ podCałk˛e w (12) przybliżam w najprostszy możliwy sposób, przybliżajac
całkowa˛ funkcja˛ schodkowa:
˛
G(fn) '
NX
−1
k=0
1. Dyskretna transformata Fouriera
gk e2πifntk ∆ ' ∆
NX
−1
gk e2πikn/N .
(13)
k=0
15
Liczby
−1
1 NX
Gn = √
gk e2πikn/N
N k=0
(14)
nazywam dyskretnymi składowymi fourierowskimi funkcji g. W tej konwencji
transformata odwrotna ma postać
−1
1 NX
gk = √
Gn e−2πikn/N .
N n=0
(15)
Dyskretna wersja tożsamości Parsevala ma postać
NX
−1
k=0
1. Dyskretna transformata Fouriera
|gk
|2
=
NX
−1
|Gn|2 .
(16)
n=0
16
DFT jako operacja liniowa
Zauważmy, że wzór (14) można zapisać w postaci
Gn =
NX
−1
Wnk gk ,
(17a)
k=0
1 2πikn/N
√
Wnk =
e
.
(17b)
N
Liczby Wnk można zinterpretować jako elementy pewnej macierzy. Wobec tego
zwarta˛ postacia˛ (17) jest
G = Wg ,
(18)
gdzie G, g ∈ CN , W ∈ CN ×N . Wydaje sie,
˛ że koszt numeryczny obliczania
DFT wynosi O(N 2), czyli tyle, ile wynosi koszt mnożenia wektora przez macierz.
Jednak dzieki
˛ symetriom macierzy W, koszt ten można znacznie zredukować.
1. Dyskretna transformata Fouriera
17
Własności macierzy W
−1
1 NX
=
Wlk (Wsk ) =
e2πi(l−s)k/N
=
Wlk
ks
ls
N k=0
k=0
k=0
(19)
Jeśli l = s, wszystkie wyrazy pod suma˛ sa˛ równe 1 i wynik wynosi 1. Jeśli
l − s = m 6= 0,
³
³
WW†
´
NX
−1
³
W†
NX
−1
´
∗
³
´N
2πim/N
e
NX
−1 ³
´k
1−
1
1 − e2mπi
†
2πim/N
WW
=
=
= 0.
e
=
2πim/N
2πim/N
ls
N k=0
N (1 − e
)
N (1 − e
)
(20)
´
³
WW†
´
= δls.
Widzimy, że macierz W jest unitarna. (Uwaga na przyjet
˛ a˛ normalizacje!)
˛
1. Dyskretna transformata Fouriera
ls
18
Podsumowanie
DFT jest (z dokładnościa˛ do normalizacji) unitarnym przekształceniem wektora
próbek (sygnału) w wektor składowych fourierowskich.
DFT można zatem traktować jako przedstawienie wektora próbek w innej bazie,
mianowicie w bazie rozpietej
˛ przez sinusy i kosinusy o cz˛estotliwościach
0, 1/(N ∆), 2/(N ∆), . . . , 1/(2∆).
Zgodnie ze wzorem (18), numeryczny koszt obliczenia DFT wprost z definicji
wynosi O(N 2). Na szcz˛eście istnieja˛ szybsze sposoby — algorytm FFT.
1. Dyskretna transformata Fouriera
19
Uwagi
• Dyskretne współczynniki fourierowskie sa˛ okresowe, w szczególności
G−N/2 = GN/2. Jest to konsekwencja założenia o okresowości sygnału.
• Ujemne cz˛estotliwości pojawiaja˛ sie˛ dlatego, że funkcje sinus i kosinus o tym
samym okresie traktujemy jako niezależne.
• Niekiedy rozważa sie˛ transformaty rozpiete
˛ na samych sinusach (transformata sinusowa) lub na samych kosinusach (transformata kosinusowa).
• „Sygnał” może być w ogólności zespolony. Jeżeli sygnał jest rzeczywisty,
można jego transformate˛ obliczyć szybciej robiac
˛ sygnał zespolony o połowie długości. Podobnie można jednocześnie liczyć transformaty dwu sygnałów rzeczywistych. Transformaty rozwikłuje sie˛ korzystajac
˛ z własności
symetrii DFT.
1. Dyskretna transformata Fouriera
20
Dodatnie i ujemne czesto
˛
ści
Re H(ω)
Im H(ω)
80
60
60
h(t) = six(t) + cos(t)
40
h(t) = six(t) - cos(t)
40
20
H(ω)
20
H(ω)
Re H(ω)
Im H(ω)
80
0
-20
0
-20
2.0
-40
2.0
-40
1.0
-60
-6π
1.0
-60
0.5
-80
1.5
P(ω)
P(ω)
1.5
0.5
-80
0.0
0
1π
2π
ω
-4π
-2π
0
ω
1. Dyskretna transformata Fouriera
2π
4π
6π
-6π
0.0
0
1π
2π
ω
-4π
-2π
0
ω
2π
4π
6π
21
Transformata sygnału „zgranego” z funkcjami bazowymi
1.0
∆ = 1/8, N = 32
1.0
0.9
0.5
0.8
0.6
0.0
P(ω)
sin(2πt)
0.7
0.5
0.4
0.3
-0.5
0.2
0.1
-1.0
0.0
0
0.5
1
1.5
2
t
1. Dyskretna transformata Fouriera
2.5
3
3.5
4
0π
1π
2π
3π
4π
ω
5π
6π
7π
8π
22
Transformata sygnału „niezgranego” z funkcjami bazowymi
1.0
∆ = 1/8, N = 32
1.0
0.8
0.9
0.6
0.8
0.4
0.7
0.6
0.0
P(ω)
sin(6t)
0.2
-0.2
0.5
0.4
-0.4
0.3
-0.6
0.2
-0.8
0.1
-1.0
0.0
0.0
0.5
1.0
1.5
2.0
t
1. Dyskretna transformata Fouriera
2.5
3.0
3.5
4.0
0π
1π
2π
3π
4π
ω
5π
6π
7π
8π
23
Zwiekszenie
˛
ilości próbek przy tym samym kroku próbkowania
poprawia rozdzielczość transformaty
∆ = 1/8, N = 32
1.0
0.8
1.5
P(ω)
0.6
0.4
1.0
sin(6t) + 0.5sin(7t)
0.2
0.5
0.0
0π
1π
2π
3π
4π
ω
5π
6π
7π
8π
5π
6π
7π
8π
∆ = 1/8, N = 128
1.0
0.0
0.8
-0.5
P(ω)
0.6
0.4
-1.0
0.2
-1.5
0.0
0.5
1.0
1.5
2.0
t
1. Dyskretna transformata Fouriera
2.5
3.0
3.5
4.0
0.0
0π
1π
2π
3π
4π
ω
24
Funkcja kwaziokresowa
4.0
∆ = 1/16, N = 1024
1.0
3.0
0.9
0.8
0.7
1.0
0.6
P(ω)
Funkcja kwaziokresowa
2.0
0.0
0.5
0.4
-1.0
0.3
0.2
-2.0
0.1
-3.0
0.0
0
8
16
24
32
t
1. Dyskretna transformata Fouriera
40
48
56
64
0π
1π
2π
3π
4π
ω
5π
6π
7π
8π
25
Funkcja okresowa z zaburzeniem sprzeżonym
˛
nieliniowo:
1.0
∆ = 1/16, N = 256
100
0.8
0.6
SNR ≈ 8 dB
10-1
0.2
10-2
0.0
P(ω)
sin(4πt) + zaburzenie
0.4
-0.2
10-3
-0.4
-0.6
10-4
-0.8
-1.0
2
4
6
8
t
1. Dyskretna transformata Fouriera
10
12
14
16
10-5
0π
2π
4π
6π
8π
ω
10π
12π
14π
16π
26
Sygnał nieliniowy — układ Lorentza
ẋ = σ(y − x) ,
ẏ = −xz + rx − y ,
ż = xy − bz
σ = 16, b = 4, r = 45.92
∆ = 20/128, N = 16384
100
30
10-1
20
10-2
10
P(ω)
x(t)
10-3
0
10-4
-10
10-5
-20
-30
2000
10-6
2050
2100
t
1. Dyskretna transformata Fouriera
2150
2200
10-7
0
1π
2π
3π
ω
4π
5π
6π
27
Kolejny przykład
3.0
2.5
(a)
10-1
c = 1.0
2.0
S(f)
x(t)
1.0
0.5
0.0
10-5
10-7
-1.0
-1.5
256
272
288
304
10-8
2-8
320
t
(c)
10-1
c = 0.5
2-4
2-2
f
20
(d)
22
24
c = 0.5
10-3
1.5
S(f)
1.0
0.5
0.0
10-4
10-5
10-6
-0.5
10-7
-1.0
-1.5
256
2-6
10-2
2.0
x(t)
10-4
10-6
-0.5
2.5
c = 1.0
10-3
1.5
3.0
(b)
10-2
272
288
t
1. Dyskretna transformata Fouriera
304
320
10-8
2-8
2-6
2-4
2-2
f
20
22
24
28
Uwaga terminologiczna: macierz Vandermonde’a
Macierz realizujaca
˛ DFT jest szczególnym przypadkiem macierzy Vandermonde’a W = √1 V ∈ CN ×N , gdzie
N

V



=



1
z0
z02
...
1
z1
z12
...
···
···
···
1
1

zN −2 zN −1 


2
2

zN
z
−2
N −1 
...
...


N −1
N −1
N −1
N −1
z0
z1
· · · zN −2 zN −1
(21)
W przypadku DFT, zk = exp(2πik/N ).
1. Dyskretna transformata Fouriera
29
Algorytm Fast Fourier Transform, FFT
Przykład: N = 8

1

 1

V(8)
G= √ g
8




1 
=√ 

8






1
1+i
√
2
1
1
1
1
√
√
i −1+i
−1 −1−i
1
i
−1
√
1 −1+i
−i
2
1 −1
√
1 −1−i
1
1
2
−i
1−i
√
2
1
i
2
−i
1+i
√
2
−1
1−i
√
2
1
−1
1
−1
2
i
1−i
√
2
−1
1+i
√
2
1
−i
−1
i
1
−i
−1
i
1 −i −1
√
√
−i −1−i
−1 −1+i
i
2
2
1






−i 

−1−i

√

2 

−1 


−1+i
√


2 


i 

1+i
√
2
1−i
√
2
g0
g1
g2
g3
g4
g5
g6
g7















(22)
Widać regularności, ale trudno zobaczyć symetrie. . .
1. Dyskretna transformata Fouriera
30
Permutujemy kolumny, jednocześnie permutujac
˛ wektor danych — to nie zmienia wyniku.

1

 1

G




1 
=√ 

8






1
1
i −1
1
−i
1
1
1
1+i
√
2
−1+i
√
2
−1−i
√
2
2
1+i
√
2
1−i
√
2
2
1−i
√
2
1+i
√
2
−1−i
√
2
−1+i
√
2
1 −1
1 −1
i
√
1 −i −1
i −1+i
1
1
1
1
i −1
1 −1
√
−i −1−i
1 −1
1 −1
1 −i −1
i
−i
1−i
√
2
−i
−1
i
i
−1
−i
1






−i 

−1−i

√


2 

−1 


−1+i
√


2 


i 

1+i
√
2
1−i
√
2
g0
g2
g4
g6
g1
g3
g5
g7















(23)
Dzieki
˛ zmianie kolejności zaczyna być coś widać!
1. Dyskretna transformata Fouriera
31
Równanie (23) możemy przepisać w postaci (zapis blokowy)
G







1 

=√ 
8






(4)
(4)
(4)

V
Ω V










V(4) −Ω(4)V(4) 


1. Dyskretna transformata Fouriera
g0
g2
g4
g6
g1
g3
g5
g7















(24)
32
. . . gdzie oznaczyliśmy

1
1
1
1
 1
i −1 −i
V(4) = 

 1 −1
1 −1
1
−i −1



,

(25)
i
 µ
¶0
√
 1+i



2

µ
¶1
1 0 0
0



1+i

√
√
 0 1+i

0
0


2
2
Ω(4) = 
µ
¶2

=

 0

0
i
0

1+i


√

−1+i
√

2
0 0 0
¶3
µ

2

1+i
√
2














(26)
1. Dyskretna transformata Fouriera
33
A zatem
G








1 

=√ 
8







(4)
V 




(4)
V 


g0
g2
g4
g6
g0
g2
g4
g6





(4)
(4)
V 

+Ω







(4)
(4)
V 
−Ω



g1
g3
g5
g7
g1
g3
g5
g7
 

























(27)
Fragmenty oznaczone kolorami obliczamy tylko raz. Mnożenie przez Ω(4) wykonujemy w czasie liniowym. Zmniejszyliśmy czas obliczeń o połowe.
˛
1. Dyskretna transformata Fouriera
34
Rzecz w tym, iż V(4) podlega analogicznej faktoryzacji
(zob. (25)), przy jednoczesnej dalszej permutacji wektora
wejściowego:

g0
 g
V(4) 
 2
 g4
g6
"
1
V(2) =






=


1
1 −1
V(2)
V(2)
Ω(2)V(2)   g0 
  g4 


(2)
(2)


g
2 
−Ω V
g6
#
"
,


Ω(2) =
#
1
i
"
=
i0
(28)
#
i1
(analogicznie dla [g1, g3, g5, g7]T )
1. Dyskretna transformata Fouriera
35
W ten sposób

¸
·
¸ 
g1
g3
+Ω(2) V(2)

g5
g7


¸
·
¸ 

g1
g3

−Ω(2) V(2)

g5
g7


¸
¸ 
·
·

g1
g3
(2)
(2)
(2)

V
+Ω V

g5
g7


¸
¸ 
·
·

g1
g3
V(2)
−Ω(2) V(2)
g5
g7
(29)

¸
·
¸ 
·
g0
g2
V(2)
+Ω(2) V(2)
V(2)


g4
g6


 +Ω(4)
·
¸
·
¸ 
·



g0
g2
V(2)
−Ω(2)V(2)
V(2)
g4
g6
·







1 
G=√ 

¸
·
·
8

g
0
 V(2)
+Ω(2) V(2)

g4


¸
·
·

  (2) g0
V
−Ω(2) V(2)
g4
g2
g6
¸ 





 −Ω(4)
¸ 



g2
g6
Dwuwymiarowe wektory oznaczone kolorami oblicza sie˛ tylko raz. W ten sposób
złożoność obliczeniowa˛ zredukowaliśmy już czterokrotnie.
1. Dyskretna transformata Fouriera
36
Ostatnia zagadka: W porównaniu z wyjściowym równaniem (22), w równaniu
(29) dokonaliśmy permutacji
[g0, g1, g2, g3, g4, g5, g6, g7]T → [g0, g4, g2, g6, g1, g5, g3, g7]T .
Co to za permutacja?
0
0002
4
1002
2
0102
6
1102
−→
=
0012 odwracam kolejność
1
1012
5
0112
3
1112
7
0002
0
0012
1
0102
2
0112
3
=
1002
4
1012
5
1102
6
1112
7
(30)
Wektor wejściowy (“wektor próbek”) uporzadkowany
˛
jest w odwrotnej kolejności
bitowej (bit reversal order ) indeksów.
1. Dyskretna transformata Fouriera
37
Ten algorytm bardzo łatwo uogólnia sie˛ na dowolne N = 2s, s ∈ N.
Widać też,³że ´znacznie
konieczność obliczania złożonych wyrażeń
³ redukujemy
´
nπ — konieczność wywoływania funkcji bibliotecznych
,
cos
typu sin nπ
N
N
sin(·), cos(·) została w ogóle wyeliminowana. Na każdym etapie faktoryzacji
wystarczy raz wyliczyć odpowiedni pierwiastek z i, na co sa˛ gotowe wzory,
potem zaś wyliczać tylko kolejne potegi.
˛
Jaki jest koszt numeryczny tego algorytmu?
1. Dyskretna transformata Fouriera
38
Każda faktoryzacja zmniejsza ilość operacji o połowe.
˛
Faktoryzacji można zrobić tyle, ile razy można podzielić macierz “na ćwiartki”.
Koszt numeryczny algorytmu FFT wynosi
O(N log2 N )
Na przykład dla N = 65536 = 216 zastosowanie algorytmu FFT zmniejsza
złożoność obliczeniowa˛ w stosunku do liczenia “z definicji” ponad cztery tysiace
˛
razy .
1. Dyskretna transformata Fouriera
39
Uwagi
• Zupełnie podobny algorytm można skonstruować dla N = 3s, N = 5s i,
ogólnie, dla N = q s, gdzie q jest liczba˛ pierwsza.
˛ Koszt obliczeniowy wynosi
wówczas O(N logq N ).
• Dobre biblioteki “szybko” obsługuja˛ także N
q1, q2, . . . , qm sa˛ niskimi liczbami pierwszymi.
s
s
sm , gdzie
= q11 q22 · · · qm
• Jeżeli analizujemy ciag
˛ uzyskany z symulacji, to w zasadzie kontrolujemy
jego długość i koniecznie należy zadbać o to, aby była ona poteg
˛ a˛ niskiej
liczby pierwszej, ewentualnie iloczynem jak najmniejszej ilości czynników
s
typu qi j . Jeżeli mamy ciag
˛ “doświadczalny”, dla zapewnienia odpowiedniej
szybkości obliczeń należy go albo obciać,
˛ albo uzupełnić zerami do najbliższej “specjalnej” długości.
1. Dyskretna transformata Fouriera
40
Inne uwagi
• DFT traktuje ciag
˛ próbek jak ciag
˛ zmiennych zespolonych. Jeśli liczymy
transformate˛ sygnału rzeczywistego, można go przekształcić za sygnał “zespolony” o długości dwa razy mniejszej. Po dokonaniu transformacji, odwikłujemy transformate˛ korzystajac
˛ z własności symetrii transformaty Fouriera:
Jeżeli g ∈ RN , G∗(f ) = G(−f ). Daje to istotne przyspieszenie obliczeń.
• Podobnie można jednocześnie liczyć transormaty dwu sygnałów rzeczywistych — bardzo przydatne przy liczeniu splotu dwu takich sygnałów.
• Istnieja˛ także “szybkie” algorytmy rozkładajace
˛ sygnał wejściowy w bazie
samych kosinusów (szybka transformata kosinusowa) lub samych sinusów
(szybka transformata sinusowa). Transformat tych można z sensem używać
jeśli sygnały wejściowe maja˛ odpowiednie symetrie. Szybkiej dwuwymiarowej transformacji kosinusowej używa sie˛ w standardzie JPEG.
1. Dyskretna transformata Fouriera
41
Jak zrobić transformacje˛ dwuwymiarowa?
˛
Bardzo prosto: Jeżeli g ∈ CN ×N ,
G = WgW†
(31)
Oczywiście jest na to odpowiedni “szybki” algorytm, z odpowiednim przyspieszeniem dla g ∈ RN ×N .
1. Dyskretna transformata Fouriera
42

Podobne dokumenty