高速フーリエ変換yama/dsp/dsp_04.pdf1 0 n 2 n nt n k t j x n e π n k t π ω 2 =...
Post on 04-Sep-2020
2 Views
Preview:
TRANSCRIPT
高速フーリエ変換
高速フーリエ変換(FFT)
DFT・FFTと窓関数
サンプル値信号のフーリエ変換
( ) ( )[ ] ( ) ( )∫ ∑∞
∞−
∞
=
−−==0n
tjss dtenTtnxtxX ωδω F
( ) ( )∑ ∫∞
=
∞
∞−
−−=0n
tj dtenTtnx ωδ
( )∑∞
=
−=0n
nTjenx ω t
(最も多くのN 個の点を使う繰り返し)
一周期
TNπω 2
0 =
基本角周波数
( )∑−
=
−=
1
0
2N
n
nTNk
Tj
enxπ
Nk
Tπω 2
=
基本角周波数の整数倍の角周波数は
( )1,,3,2,1 −= Nk
であるから
( )∑−
=
−=
1
0
2N
n
knN
jenx
π
( ) ( )[ ] ( )∑−
=
−==1
0
N
n
nTjss enxtxX ωω F
離散フーリエ変換N
jeW
π2−
=一般に とおいて
また
( ) ( )[ ] ( )kXtxX ss ≡=Fω
逆離散フーリエ変換
( )∑−
=
=1
0
N
n
knWnx
離散フーリエ変換
DFT (discrete Fourier transform )
( ) ( )[ ] ωs- Xnx 1F=
( )∑−
=
−=1
0 1 N
k
knWkXN
: 周波数の関数
: 時間の関数
kn
DFTの演算量
( ) ( ) ( )
== ∑∑
−
=
−−
=
1
0
21
0
N
n
knN
jN
n
kns enxWnxX
π
ω
0 1
2 3 4 5
6 7
8 =N (DFTへの入力が8点)の場合
DFTの演算量
( ) ( ) ( )
== ∑∑
−
=
−−
=
1
0
21
0
N
n
knN
jN
n
kns enxWnxX
π
ω
( ) ( ) ( ) ( ) ( )72100 xxxxX ++++=
( ) ( ) ( ) ( ) ( ) 7210 72101 WxWxWxWxX ++++=
( ) ( ) ( ) ( ) ( ) 14420 72102 WxWxWxWxX ++++=
( ) ( ) ( ) ( ) ( ) 491470 72107 WxWxWxWxX ++++=
・・・
(直流成分)
(基本周波数成分)
(基本周波数の2倍の成分)
DFTの演算量
64回の複素乗算
56回の複素加算
回の複素乗算
回の複素加算
一般には
2N( )1−NN
⇒ N の増加に伴って演算量が膨大になる
の周期性と対称性
Re
Im
Re
Im
1
j
-j
-1
1
j
-j
-1
W0
W2
W4
W6
W1
W3
W5W7
W0
W2
W4
W6
W0
W18
W12
W9
W3
W21W15W6
W0
W4
W12
W16
W8
W12W1
6
W20W24
W28
W10
W14
W0
W10
W20
W25
W35
W5W15W30
W0
W12
W6
W0
W28
W14
W49
W35
W21W7
W18 W42
W24
W36
W30
W42
X(0) X(1) X(2) X(3)
X(4) X(5) X(6) X(7)
knW
の周期性と対称性knW484032241680 WWWWWWW ======494133251791 WWWWWWW ======
42342618102 WWWWWW =====43352719113 WWWWWW =====44362820124 WWWWWW =====45372921135 WWWWWW =====46383022146 WWWWWW =====47393123157 WWWWWW =====
の周期性と対称性knW
mNkN
kN WW ±=
lkN
lN
kN WWW −= ・
( ) ( ) ( )
= ∑∑
−
=
−−
=
1
0
21
0
N
n
knN
jN
n
kns enxWnxX
π
ω
統合・分解をうまく
組み合わせることで
演算量の軽減が可能
⇒ 高速フーリエ変換 (FFT:fast Fourier transform)
J.W.Cooly & J.W.Tukey (1965)
2を基底とするFFTmN 2=
・ 偶数番目
・ 奇数番目に分けて
( ) ( )nxny 2=
( ) ( )12 += nxnz
−= 1
2,,2,1,0 Nn
の時系列データ を( )nx
( ) ( ) ( ) ( )∑∑−
=
+
−
=
++=1
2
0
121
2
0
2 122
N
n
knN
N
n
nkN WnxWnxkX
とおくとNj
N eWπ2
−=
823 ==N の場合
( ) ( ) ( ) ( )∑∑=
+
=
+=3
0
128
3
0
28
n
nk
n
nk WnzWnykX
( ) ( )∑∑==
+=3
048
3
04
n
knk
n
kn WnzWWny
Nj
N eWπ2
−= knknjknjkn WeeW 4
422
82
28 ===
−− ππ
∵ より
( )nx
0 1 2 3 4 5 6 7 n
( )ny
n0 1 2 3
( )nz
n0 1 2 3
第一段目の時間分割
( ) ( ) ( )∑∑==
+=3
048
3
04
n
knk
n
kn WnzWWnykX
偶数番データのDFT 奇数番データのDFT
( ) ( )nxny 2=
( ) ( )12 += nxnzのDFTを
( )kY( )kZ
とおくと
( ) ( ) ( )kZWkYkX k8+= ( )3,2,1,0 =k
データ数8の半分を計算(4点DFT)
( ) ( ) ( ) ( ) ( ) ( )∑∑=
++
=
+ +=+3
0
44
48
3
0
444
n
nkk
n
nk WnzWWnykX
偶数番データのDFT 奇数番データのDFT
( ) ( )kZWkY k8−=
がとる値の後半を考えると
( ) ( )∑∑==
−=3
048
3
04
n
knk
n
kn WnzWWny
( ) knnjknnjknnknnk WeWeWWWW 42
4
44
2
44
444
4 =⋅=⋅=⋅= −−+ ππ
∵
( ) kjkjkkk WeWeWWWW 88
48
2
84
884
8 −=⋅=⋅=⋅= −−+ ππ
k
( )3,2,1,0 =k
( ) ( ) ( )kZWkYkX k ⋅−=+ 84
したがって8点DFTの演算は
( )3,2,1,0 =k
( ) ( ) ( )kZWkYkX k ⋅+= 8 ( )3,2,1,0 =k
という2つの4点DFTで実現される
例) 0=k では
( ) ( ) ( )004 08 ZWYX ⋅−=
( ) ( ) ( )000 08 ZWYX ⋅+=
4点DFTで置き換えられた8点DFT
( )( )( )( )( )( )( )( )76543210
xxxxxxxx ( )
( )( )( )( )( )( )( )76543210
XXXXXXXX( )0Y
( )1Y
( )2Y
( )3Y
( )0Z
( )1Z
( )2Z
( )3Z
DFT
( )4=N
( )4=N
DFT
08W
( ) ( ) ( )004 08 ZWYX ⋅−=
( ) ( ) ( )000 08 ZWYX ⋅+= 0
8W−
28W
18W
38W
18W−
28W−
38W−
第二段目の時間分解( )0Y
( )1Y
( )2Y
( )3Y
偶数番のDFT
( )4=N
( ) ( )00 yx →
( ) ( )12 yx →
( ) ( )24 yx →
( ) ( )36 yx →
( ) ( )nyna 2=
( ) ( )12 += nynb( )1,0 =n
( )ny
0 1 2 3n
( )na
n0 1
( )nb
n0 1
( ) ( )∑=
=3
04
n
knWnykY
( ) ( )∑∑==
+=1
02
28
1
02
n
knk
n
kn WnbWWna
( ) ( ) ( )∑∑=
+
=
+=1
0
124
1
0
24
n
nk
n
nk WnbWna
8点DFTの場合と同様に
( ) ( )kBWkA k28+= ( )1,0 =k
knknjnkjnk WeeW 22
224
22
4 ===−−
ππ
∵
( ) kjnkjknknk eeWWW 422
42
42
412
4
ππ−−+ ⋅=⋅=
kknkjknjWWee 2
82
28
22
2
⋅=⋅=−−
ππ
( ) ( ) ( )kBWkAkY k282 −=+
がとる値の後半も同様に考えてk
したがって8点DFTを分割した偶数番データに
ついての4点DFTの演算は
という2つの2点DFTで実現される
( ) ( ) ( )kBWkAkY k ⋅+= 28 ( )1,0 =k
( ) ( ) ( )kBWkAkY k ⋅−=+ 282 ( )1,0 =k
第二段目の時間分解2( )0Z
( )1Z
( )2Z
( )3Z
奇数番のDFT
( )4=N
( ) ( )01 zx →
( ) ( )13 zx →
( ) ( )25 zx →
( ) ( )37 zx →
( ) ( )nznc 2=
( ) ( )12 += nznd( )1,0 =n
( )nz
0 1 2 3n
( )nc
n0 1
( )nd
n0 1
( ) ( )∑=
=3
04
n
knWnzkZ
( ) ( )∑∑==
+=1
02
28
1
02
n
knk
n
kn WndWWnc
偶数の場合と同様に
( ) ( )kDWkC k28+= ( )1,0 =k
( ) ( ) ( )kDWkCkZ k282 −=+
k がとる値の後半も同様にを考えて
したがって8点DFTを分割した奇数番データに
ついての4点DFTの演算は
という2つの2点DFTで実現される
( ) ( ) ( )kDWkCkZ k ⋅+= 28 ( )1,0 =k
( ) ( ) ( )kDWkCkZ k ⋅−=+ 282 ( )1,0 =k
2点DFTで置き換えられた4点DFT
( )( )( )( )( )( )( )( )76543210
xxxxxxxx ( )
( )( )( )( )( )( )( )32103210
ZZZZYYYY( )0A
( )1A
( )0B
( )1B
( )0C
( )1C
( )0D
( )1D
DFT( )2=N
08W
DFT( )2=N
DFT( )2=N
DFT( )2=N
08W−
28W
28W−
08W
28W
08W−2
8W−
( ) ( ) ( )000 08 BWAY +=
( ) ( ) ( )002 28 BWAY −=
第三段目の時間分解( )0A
( )1A
偶数番のDFTのさらに
偶数番のDFT
( )2=N
( ) ( )00 ax →
( ) ( )14 ax →
( ) ( ) ( ) ( ) kkn
nWaWaWnakA 2
022
1
010 +==∑
=
0=k
( ) ( )00 xa = ( ) ( )41 xa = 102 =W, ,
1=k=kW2
1
1−N
j
N eWπ2
−=
したがって8点DFTを分割した4点DFTを
分割した2点DFTの演算(例)は
と求めることができる
この演算をバタフライ演算という
( ) ( ) ( )400 xxA +=
( ) ( ) ( )401 xxA −=
同様に,他の7つの2点DFTも求めることができる
バタフライ演算
( )
( )4
0
x
x ( )
( )1
0
A
A108 =W
108 −=−W
( ) ( ) ( )400 xxA +=
( ) ( ) ( )401 xxA −=
8点FFTのフローグラフ
( )( )( )( )( )( )( )( )73516240
xxxxxxxx ( )
( )( )( )( )( )( )( )76543210
XXXXXXXX( )0Y
( )1Y
( )2Y
( )3Y
( )0Z
( )1Z
( )2Z
( )3Z
0W0W−
0W
0W−
0W−
0W
0W−
0W
( )0A
( )1A
( )0B
( )1B
( )0C
( )1C
( )0D
( )1D
0W
0W−
2W
2W−
0W
0W−
2W
2W−
0W
2W3W
0W−
2W−
3W−
1W
1W−
FFTの演算量DFT FFT
複素乗算回数 N×N N log2N複素加算回数 N×(N-1) N log2N合計計算回数 ≒ 2×N×N 2N log2N
データ数 DFT FFT 比率
26 64 4,096 384 10.67
27 128 16,384 896 18.29
28 256 65,536 2,048 32.00
29 512 262,144 4,608 56.89
210 1024 1,048,576 10,240 102.40
211 2048 4,194,304 22,528 186.18
212 4096 16,777,216 49,152 341.33
複素乗算回数を
比較すると,
データ数の増加
に伴ってFFTの
有効性が顕著に
なることが分かる
窓関数
入力信号と演算の周期
0 1 2 3 4 5 6 7 208 9 10 15 25 30 32
1周期
)(nx
n
0 1 2 3 4 5 6 7 208 9 10 15 25 30 32k
( )kX 入力信号が1周期の整数倍の場合
入力信号と演算の周期
0 1 2 3 4 5 6 7 208 9 10 15 25 30
1周期
)(nx
n
0 1 2 3 4 5 6 7 208 9 10 15 25 30
k
( )kX
35 37
1周期 1周期 1周期1周期
35 37
入力信号が1周期の整数倍ではない場合
0 20 40 600
0.2
0.4
0.6
0.8
1
窓関数
矩形窓ハミング窓
ブラックマン窓
n64=n の例
( )ntw
処理のために
切り出した区間
の両端付近で
信号が急激に
変化することを
避ける
両端付近の信号
が0に近づくような
関数を時間軸上で
かける
窓関数をかけた場合 (hamming)
0 1 2 3 4 5 6 7 208 9 10 15 25 30
)(nx
n
0 1 2 3 4 5 6 7 208 9 10 15 25 30
k
( )kX
35 37
35 37
入力信号が1周期の整数倍ではない場合
top related