Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
FYZ-230/00Algoritmy vedeckotechnických výpo£tov
Rýchla Fourierova
transformácia
1
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Obsah
• Úvod do Fourierovej transformácie
• Diskrétna Fourierova transformácia
• Rýchla Fourierova transformácia
2
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Úvod do Fourierovej transformácie
Majme periodickú funkciu f(t) s periódou T
f(t) = f(t+ T ), ω0 =2π
T
Funkciu f(t) môºeme zapísa´ pomocou Fourierovho radu
f(t) = a0 +
∞∑k=1
ak cos(kω0t) + bk sin(kω0t)
kde
a0 =1
T
∫ T0
f(t) dt
ak =2
T
∫ T0
f(t) cos(kω0t) dt = a−k
bk =2
T
∫ T0
f(t) sin(kω0t) dt = −b−k
3
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Odvodenie a0
Integrova´ obidve strany Fourierovho radu∫ T0
4
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Odvodenie ak
Vynásobi´ obidve strany Fourierovho radu cos(mω0t) a integrova´∫ T0
5
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Odvodenie bk
Vynásobi´ obidve strany Fourierovho radu sin(mω0t) a integrova´∫ T0
6
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Fourierova transformácia � príklad
Obd¨ºniková funkcia:
f(t) =
{1, ak t+ kT ∈ (0, t1)0, ak t+ kT ∈ (t1, T )
, k je celé £íslo
Zvolíme T = 1, ω0 = 2π.
a0 =1
T
∫ T0
f(t) dt =1
1
∫ t10
1 dt+1
1
∫ 1t1
0 dt = t1
ak =2
T
∫ T0
f(t) cos(kω0t) dt =2
1
∫ t10
1 cos(kω0t) dt+2
1
∫ 1t1
0 cos(kω0t) dt =
= 21
kω0[sin(kω0t)]
t10 =
2 sin(kω0t1)
kω0
bk =2
T
∫ T0
f(t) sin(kω0t) dt =2
1
∫ t10
1 sin(kω0t) dt+2
1
∫ 1t1
0 sin(kω0t) dt =
7
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
= −2 1kω0
[cos(kω0t)]t10 =
2− 2 cos(kω0t1)kω0
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
0 0.5 1 1.5 2
f(t)
t
Príklad 1 - obdĺžniková funkcia
f(x)f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)f7(x)f8(x)
8
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Fourierova transformácia � príklad 2
Pílovitá funkcia:
f(t) =
{t+kTt1
, ak t+ kT ∈ (0, t1)0, ak t+ kT ∈ (t1, T )
, k je celé £íslo
Zvolíme T = 1, ω0 = 2π.
a0 =1
T
∫ T0
f(t) dt =1
1
∫ t10
t
t1dt+
1
1
∫ 1t1
0 dt =t12
ak =2
T
∫ T0
f(t) cos(kω0t) dt =2
1
∫ t10
t
t1cos(kω0t) dt+
2
1
∫ 1t1
0 cos(kω0t) dt =
=2
k2ω20t1[kω0t sin(kω0t) + cos(kω0t)]
t10 =
2
k2ω20t1(kω0t1 sin(kω0t1) + cos(kω0t1)− 1)
bk =2
T
∫ T0
f(t) sin(kω0t) dt =2
1
∫ t10
t
t1sin(kω0t) dt+
2
1
∫ 1t1
0 sin(kω0t) dt =
9
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
=2
k2ω20t1[sin(kω0t)− kω0t cos(kω0t)]t10 =
2
k2ω20t1(sin(kω0t1)− kω0t1 cos(kω0t1) + 1)
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
0 0.5 1 1.5 2
f(t)
t
Príklad 1 - pílovitá funkcia
f(x)f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)f7(x)f8(x)
10
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Komplexný zápis Fourierovho radu
Pouºijeme Eulerovu identitu:
eix = cos(x) + i sin(x), e−ix = cos(x)− i sin(x)
sin(x) =eix − e−ix
2i= − sin(−x)
cos(x) =eix + e−ix
2= cos(−x)
11
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Komplexný zápis Fourierovho radu
f(t) = a0 +
∞∑k=1
ak
(eikω0t + e−ikω0t
2
)+ bk
(eikω0t − e−ikω0t
2i
)
f(t) = a0 +
∞∑k=1
eikω0t(ak − ibk
2
)+ e−ikω0t
(ak + ibk
2
)alej ozna£me
C̃0 = a0
C̃k =ak − ibk
2
C̃−k =a−k − ib−k
2=ak + ibk
2
12
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
f(t) = C̃0 +
∞∑k=1
C̃keikω0t +
∞∑k=1
C̃−ke−ikω0t
=
∞∑k=0
C̃keikω0t +
−1∑k=−∞
C̃keikω0t
=
∞∑k=−∞
C̃keikω0t
C̃k =1
2
2
T
(∫ T0
f(t) cos(kω0t) dt− i∫ T0
f(t) sin(kω0t) dt
)
=1
T
(∫ T0
f(t) (cos(kω0t)− i sin(kω0t)) dt
)
=1
T
∫ T0
f(t)e−ikω0t dt
13
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Diskrétna Fourierova transformácia
Máme len diskrétne hodnoty £asu t1 = ∆t, t2 = 2∆t, t3 = 3∆t, . . . ; tn = n∆t.
Fourierov rad h©adáme v tvare:
f(tn) =
N−1∑k=0
C̃keikω0tn
alej ozna£me
tn = n
f(n) =
N−1∑k=0
C̃keikω0n
14
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Obidve strany vynásobíme e−ilω0n a presumujeme cez n
N−1∑n=0
f(n)e−ilω0n =
N−1∑n=0
N−1∑k=0
C̃k eikω0n e−ilω0n
=
N−1∑n=0
N−1∑k=0
C̃k ei(k−l)ω0n
Na pravej strane vymeníme poradie sumovania
N−1∑n=0
f(n) e−il2πN n =
N−1∑k=0
C̃k
N−1∑n=0
ei(k−l)2πN n
Ozna£me:
A =
N−1∑n=0
ei(k−l)2πN n
15
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Prípad (1) k − l je celo£íselný násobok N
(k − l) = mN, k = l +mN, kde m = 0,±1,±2, . . .
A =
N−1∑n=0
eim2πn =
N−1∑n=0
=1︷ ︸︸ ︷cos(mn2π) +i
=0︷ ︸︸ ︷sin(mn2π) = N
16
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Prípad (2) k − l nie je celo£íselný násobok N
A =
N−1∑n=0
ei(k−l)2πN n =
N−1∑n=0
(ei(k−l)
2πN
)nOzna£me
a = ei(k−l)2πN = cos
((k − l)2π
N
)+ i sin
((k − l)2π
N
)Dostaneme
A =
N−1∑n=0
an
Dostali sme geometrický rad
A =
N−1∑n=0
an =
N, ak a = 11− aN1− a
, ak a 6= 117
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Dosadíme za a
A =1− aN
1− a=
1−=1︷ ︸︸ ︷
ei(k−l)2π
1− a= 0
18
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Spolo£ný výsledok
Spo£ítame obidva prípady:A = N + 0 = N
Získali smeN−1∑n=0
f(n) e−ilω0n =
N−1∑k=0
C̃kN
Nenulový vklad sme dostali len pre k = l +mN . Pre m = 0 dostaneme
k = l
N−1∑n=0
f(n) e−ilω0n = C̃lN
19
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Diskrétna Fourierova transformácia
C̃k =1
N
N−1∑n=0
f(n)e−ikω0n =1
N
N−1∑n=0
f(n)(cos(kω0n)− i sin(kω0n))
f(n) =
N−1∑k=0
C̃k eikω0n =
N−1∑k=0
C̃k(cos(kω0n) + i sin(kω0n))
20
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Rýchla Fourierova transformácia pre N = 2r
Máme:
C̃n =
N−1∑k=0
f(k)e−inω0k
f(k) =1
N
N−1∑n=0
C̃n einω0k
kde ω0 = 2πN , n, k = 0, 1, 2, . . . , N − 1.
Ozna£me W = e−i2πN ,(WN = e−i2π = 1,W
N2 = e−iπ = −1
).
Získame zápis:
C̃n = C̃(n) =
N−1∑k=0
f(k)Wnk
f(k) =1
N
N−1∑n=0
C̃nW−nk
21
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Príklad pre N = 4
Na získanie koe�cientov C̃(n) potrenujeme vyrie²i´ sústavu lineárnych rovníc:
1
N
1 1 1 11 W−1 W−2 W−3
1 W−2 W−4 W−6
1 W−3 W−6 W−9
C̃(0)
C̃(1)
C̃(2)
C̃(3)
=
f(0)f(1)f(2)f(3)
Inverzná matica sa dá ©ahko získa´: 1N
1 1 1 11 W−1 W−2 W−3
1 W−2 W−4 W−6
1 W−3 W−6 W−9
−1
=
1 1 1 11 W 1 W 2 W 3
1 W 2 W 4 W 6
1 W 3 W 6 W 9
22
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Výpo£et C̃(n) pre N = 4
C̃(0)
C̃(1)
C̃(2)
C̃(3)
=
W (0)(0) W (0)(1) W (0)(2) W (0)(3)
W (1)(0) W (1)(1) W (1)(2) W (1)(3)
W (2)(0) W (2)(1) W (2)(2) W (2)(3)
W (3)(0) W (3)(1) W (3)(2) W (3)(3)
f(0)f(1)f(2)f(3)
C̃(0)
C̃(1)
C̃(2)
C̃(3)
=
W 0 W 0 W 0 W 0
W 0 W 1 W 2 W 3
W 0 W 2 W 4 W 6
W 0 W 3 W 6 W 9
f(0)f(1)f(2)f(3)
Výpo£tová náro£nos´: 16 (N2) komplexných násobení a 12 (N(N − 1)) komplexných s£ítaní.
23
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Zjednodu²enie £lenov
Príklad N = 4, n = 2, k = 3:
Wnk = W 6 =
=1︷︸︸︷W 4 W 2 = W 2
Príklad N = 4, n = 3, k = 3:
Wnk = W 9 =
=1︷︸︸︷W 4
2W 1 = W 1
Vo v²eobecnosti:Wnk = Wnk (mod N)
C̃(0)
C̃(1)
C̃(2)
C̃(3)
=
W 0 W 0 W 0 W 0
W 0 W 1 W 2 W 3
W 0 W 2 W 0 W 2
W 0 W 3 W 2 W 1
f(0)f(1)f(2)f(3)
24
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Získaná matica sa dá (po výmene riadkov) rozloºi´ na sú£in 2 matíc:C̃(0)
C̃(2)
C̃(1)
C̃(3)
=
1 W 0 0 01 W 2 0 00 0 1 W 1
0 0 1 W 3
1 0 W 0 00 1 0 W 0
1 0 W 2 00 1 0 W 2
f(0)f(1)f(2)f(3)
Ozna£me: f1(0)f1(1)f1(2)f1(3)
=
1 0 W 0 00 1 0 W 0
1 0 W 2 00 1 0 W 2
f(0)f(1)f(2)f(3)
Iný zápis:
f1(0) = f(0) +W0f(2)
f1(1) = f(1) +W0f(3)
f1(2) = f(0) +W2f(2) = f(0)−W 0f(2)
f1(3) = f(1) +W2f(3) = f(1)−W 0f(3)
25
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Výpo£tová náro£nos´ 1. £asti: 2 komplexné násobenia a 4 komplexné s£ítania.
2. £as´: C̃(0)
C̃(2)
C̃(1)
C̃(3)
=
f2(0)f2(1)f2(2)f2(3)
=
1 W 0 0 01 W 2 0 00 0 1 W 1
0 0 1 W 3
f1(0)f1(1)f1(2)f1(3)
Iný zápis:
f2(0) = f1(0) +W0f1(1)
f2(1) = f1(0) +W2f1(1) = f1(0)−W 0f1(1)
f2(2) = f1(2) +W1f1(3)
f2(3) = f1(2) +W3f1(3) = f1(2)−W 1f1(3)
Výpo£tová náro£nos´ 2. £asti: 2 komplexné násobenia a 4 komplexné s£ítania.
Pomer po£tu komplexných násobení pre ve©ké N = 2r: N2
Nr2
= 2Nr .
26
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Gra�cké znázornenie výpo£tu pre N = 4
W0
W0
W2
W2
W0
W2
W1
W3
f(0)
f(1)
f(2)
f(3)
f1(0)
f1(1)
f1(2)
f1(3)
f2(0)
f2(1)
f2(2)
f2(3)
• Potrebujeme vypo£íta´ 2 vektory.
• V kaºdom kroku vypo£ítame 2 prvky.
• Môºme pouºi´ jeden pamä´ový priestor pre v²etky vektory.
27
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Gra�cké znázornenie výpo£tu pre N = 16
W0
W0
W0
W0
W0
W0
W0
W8
W8
W8
W8
W8
W8
W8
W0 W0
W0
W0
W0
W8
W8
W8
W8
W4
W4
W4
W12
W12
W12
W0
W8
W8
W4
W4
W12
W12
W2
W2
W10
W10
W6
W14
W8
W12
W10
W9
W13
W14
W11
W0
W4
W2
W6
W1
W5
W3
W0
W8
W4
W12
W6
W14 W7
W15
f(1)
f(2)
f(3)
f(4)
f(5)
f(6)
f(7)
f(9)
f(10)
f(11)
f(12)
f(13)
f(14)
f(15)
f1(1)
f1(2)
f1(3)
f1(4)
f1(5)
f1(6)
f1(7)
f1(9)
f1(10)
f1(11)
f1(12)
f1(13)
f1(14)
f1(15)
f(0) f1(0)
f(8) f1(8)
f2(0)
f2(1)
f2(2)
f2(3)
f2(4)
f2(5)
f2(6)
f2(7)
f2(9)
f2(10)
f2(11)
f2(13)
f2(14)
f2(15)
f3(0)
f3(1)
f3(2)
f3(3)
f3(4)
f3(5)
f3(6)
f3(7)
f3(8)
f3(9)
f3(10)
f3(11)
f3(13)
f3(15)
f4(0)
f4(1)
f4(2)
f4(3)
f4(4)
f4(5)
f4(6)
f4(7)
f4(8)
f4(9)
f4(10)
f4(11)
f4(12)
f4(13)
f2(8)
f2(12) f3(12)
f3(14) f4(14)
f4(15)
C̃(0)
C̃(6)
C̃(1)
C̃(2)
C̃(3)
C̃(4)
C̃(5)
C̃(7)
C̃(8)
C̃(9)
C̃(10)
C̃(11)
C̃(12)
C̃(13)
C̃(14)
C̃(15)
28
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
• Vzdialenos´ medzi nódmi: N2l
� Pre l = 1 vzdialenost k = N2l
= 1621
= 8: f1(0), f1(8)� Pre l = 2 vzdialenost k = N
2l= 16
22= 4: f2(8), f2(12)
• Výpo£et nódov:
� f2(8) = f1(8) + f1(12)W4
� f2(12) = f1(8) + f1(12)W12 = f1(8) + f1(12)
=−1︷︸︸︷W 8 W 4 = f1(8)− f1(12)W 4
• V²eobecne:
� fl(k) = fl−1(k) + fl−1(k + N
2l
)WP
� fl(k + N
2l
)= fl−1(k)− fl−1
(k + N
2l
)WP
� Výpo£et P:∗ Zapísa´ k binárne∗ Posunút o r − l bitov do prava a doplni´ nulami∗ Obráti´ poradie bitov (po£et bitov r)
� Príklad k = 8, l = 2, r = 4:∗ k = 8 = (1000)2 → (0010)2 → P = (0100)2 = 4
29
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Vz´ah medzi C̃(n) a fr(k)
• Zapísa´ k v 2-kovej sústave: k = (kr−1kr−2 . . . k2k1k0)2
• Obráti´ poradie ki: n = (k0k1k2 . . . kr−2kr−1)2
Príklad pre N = 8:
k = 0 = (000)2 → n = (000)2 = 0, C̃(0) = f3(0)k = 1 = (001)2 → n = (100)2 = 4, C̃(4) = f3(1)k = 2 = (010)2 → n = (010)2 = 2, C̃(2) = f3(2)k = 3 = (011)2 → n = (110)2 = 6, C̃(6) = f3(3)k = 4 = (100)2 → n = (001)2 = 1, C̃(1) = f3(4)k = 5 = (101)2 → n = (101)2 = 5, C̃(5) = f3(5)k = 6 = (110)2 → n = (011)2 = 3, C̃(3) = f3(6)k = 7 = (111)2 → n = (111)2 = 7, C̃(7) = f3(7)
30
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Rýchla Fourierova transformácia pre N 6= 2r
• Doplni´ dáta nulami, aby N = 2r.
• V prípade N = r1r2 . . . rl matica pre výpo£et C̃(n) sa dá rozloºi´ na sú£in l matíc.
31