高速フーリエ変換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

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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