Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
信号とシステムSignals and Systems工学部情報学科 90810
加嶋健司
京都大学大学院情報学研究科数理工学専攻
第 6回講義 平成 29年 5月 24日
1/41
第 4章 FFTとその応用
実際のスペクトル解析で良く使用される離散フーリエ変換 (DFT)について説明.DFTの高速算法としての FFTアルゴリズムの考え方を説明.
FFTの使用に際しての具体的な留意事項を説明.FFTの実際的な応用として,スペクトル解析,畳み込み,相関関数の計算,ケプストラム分析について概説.
はじめに 2/41
今日の予定
1 FFT色々なフーリエ変換アルゴリズム補足
2 FFTの応用
FFT 3/41
色々なフーリエ変換
フーリエ級数,フーリエ変換,DTFT (離散時間フーリエ変換),DFT (離散フーリエ変換)の関係
連続時間−∞ < f < ∞
離散時間− fc < f < fc
連続スペクトル−∞ < t < ∞ フーリエ変換 DTFT
離散スペクトル0 ≤ t ≤ P フーリエ級数 DFT
FFT 色々なフーリエ変換 4/41
フーリエ級数x(t), 0 ≤ t ≤ P, −∞ < f < ∞
x(t) =∞∑
k=−∞cke j 2π
P kt
ck =1P
∫ P
0x(t)e− j 2π
P ktdt
周波数 1/Pの波を基本波とする調波構造を持った線スペクトル
−4 −2 0 2 4 6 8 10 12 14 16−1.5
−1
−0.5
0
0.5
1
1.5
t 0 0.5 1 1.5 2 2.5 3 3.5 40
0.5
1
1.5
FFT 色々なフーリエ変換 5/41
フーリエ変換
x(t), −∞ < t < ∞, −∞ < f < ∞
X( jω) = F [x(t)] =∫ ∞
−∞x(t)e− jωtdt
x(t) = F−1[X( jω)] =1
2π
∫ ∞
−∞X( jω)e jωtdω
周波数軸上の連続関数である連続スペクトル
−4 −2 0 2 4 6 8 10 12 14 16−0.1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
−100 −80 −60 −40 −20 0 20 40 60 80 1000
10
20
30
40
50
60
70
FFT 色々なフーリエ変換 6/41
離散時間フーリエ変換 (DTFT)
x(n), −∞ < n < ∞, − fc < f < fc = 1/2 (−π < ω < π)
X( jω) =∞∑
n=−∞x(n)e− jωn
x(n) =1
2π
∫ π
−πX( jω)e jωndω
| f | > fc では − fc ≤ f ≤ fc の繰り返しの連続スペクトル
0 5 10 15 20 25 30 350
1
2
3
4
5
6
7
8
9
10
−40 −20 0 20 40 60 80 1000
10
20
30
40
50
60
70
FFT 色々なフーリエ変換 7/41
離散フーリエ変換 (DFT)x(n), 0 ≤ n ≤ N − 1, − fc < f < fc = 1/2
Xk =
N−1∑n=0
x(n)e− j 2πN nk
x(n) =1N
N−1∑k=0
Xke j 2πN nk
| f | > fc では − fc ≤ f ≤ fc の繰り返しの離散スペクトル
0 1 2 3 4 5 6 7 8 90
2
4
6
8
10
12
−4 −2 0 2 4 6 8 10 12 14 160
5
10
15
20
25
30
35
40
FFT 色々なフーリエ変換 8/41
DFTの演算
Xk =
N−1∑n=0
x(n)e− j 2πN nk x(n) =
1N
N−1∑k=0
Xke j 2πN nk
X0X1X2...
XN−1
=
1 1 1 · · · 11 e− j 2π
N e− j 4πN · · · e− j 2π(N−1)
N
1 e− j 2π×2N e− j 4π×2
N · · · e− j 2π(N−1)×2N
......
.... . .
...
1 e− j 2π(N−1)N e− j 4π(N−1)
N · · · e− j 2π(N−1)(N−1)N
x(0)x(1)x(2)...
x(N − 1)
Wnk = e− j 2π
N nk を変換核とする離散的な直交変換
FFT 色々なフーリエ変換 9/41
FFT (Fast Fourier Transform)の考え方
N × N 行列と N 次元ベクトルの積の計算量 (乗算回数)は N2 のオーダー.
FFTはバタフライ演算により計算量を N log2 N のオーダーに削減.
N = 2ν (ν;正整数),回転因子WN = e− j 2πN とし,奇数番目と
偶数番目を分離.
Xk =
N−1∑n=0
x(n)WNnk
=
N2 −1∑n=0
x(2n)WN2nk +
N2 −1∑n=0
x(2n + 1)WN(2n+1)k
FFT アルゴリズム 10/41
Xk =
N2 −1∑n=0
x(2n)WN2nk +
N2 −1∑n=0
x(2n + 1)WN(2n+1)k
=
N2 −1∑n=0
x(2n)(WN2)nk +WN
k
N2 −1∑n=0
x(2n + 1)(WN2)nk
=
N2 −1∑n=0
x(2n)W N2
nk +WNk
N2 −1∑n=0
x(2n + 1)W N2
nk
= Ek +WNkOk
Ek: 偶数番目の標本値列の N/2点 DFT.Ok: 奇数番目の標本値列の N/2点 DFT.
Ek+N/2 = Ek, Ok+N/2 = Okより, N点 DFTを N/2点 DFT 2回で実現.
FFT アルゴリズム 11/41
FFTのシグナルフローグラフN点 DFTの分割
N/2
-poi
nt D
FTN
/2-p
oint
DFT
x(0)
x(2)
x(N-2)
x(1)
x(3)
x(N-1)
E 0
E 1
E N/2-1
O0
ON/2-1
O1
X0
X1
XN/2-1
XN/2
XN/2+1
XN-1
W 0N
W 1N
W N/2-1N
W N/2N
W N/2+1N
W N-1N
Ek+N/2 = Ek Ok+N/2 = Ok
FFT アルゴリズム 12/41
バタフライ演算の修正
WNN2 +i = −WN
i を利用して乗算の回数を削減.
E i
O i
X i
XN/2+i
W iN
W N/2+iN
E i
O i
X i
XN/2+i-1
(a) butterfly operation (b) modified butterfly operation
W iN
FFT アルゴリズム 13/41
分割の繰り返し
x(0)
x(4)
x(N−4)
x(2)
x(6)
x(N−2)
x(1)
x(5)
x(N−3)
x(3)
x(7)
x(N−1)
N/4
N/4
N/4
N/4
WN0
WN2
WN2(N/4−1)
X0
X1
XN/4−1
XN/4
XN/4+1
XN/2−1
XN/2
XN/2+1
XN/2+N/4−1
XN/2+N/4
XN/2+N/4+1
XN−1−1
−1
−1
−1
−1
−1
−1
−1
−1
−1
−1
−1
WN0
WN2
WN2(N/4−1)
WN0
WN1
WNN/4−1
WN0
WN1
WNN/4−1−1
u(0)
u(1)
U0
U1
2点 FFT
FFT アルゴリズム 14/41
定位置計算
演算結果の格納に元の記憶場所をそのまま使える
x(0)
x(2)
x(4)
x(1)
x(3)
x(5)
X0
X1
X2
X3
X4
X5
W 08
x(6)
x(7)
W 08
W 08
W 08
-1
-1
-1
-1
W 08
W 28
W 08
W 28
-1
-1
-1
-1
W 08
W 28
W 18
W 38
-1
-1
-1
-1
X6
X7
FFT アルゴリズム 15/41
ビット逆順配列
ビットを逆順にし,それを小さい順に並べている.
x(0)
x(2)
x(4)
x(1)
x(3)
x(5)
X0
X1
X2
X3
X4
X5
W 08
x(6)
x(7)
W 08
W 08
W 08
-1
-1
-1
-1
W 08
W 28
W 08
W 28
-1
-1
-1
-1
W 08
W 28
W 18
W 38
-1
-1
-1
-1
X6
X7
000
100
010
110
001
101
011
111
000
001
010
011
100
101
110
111
FFT アルゴリズム 16/41
FFTの計算量
段数は log2 N − 1であり,1段当たりの乗算は N/2.
x(0)
x(4)
x(N−4)
x(2)
x(6)
x(N−2)
x(1)
x(5)
x(N−3)
x(3)
x(7)
x(N−1)
N/4
N/4
N/4
N/4
WN0
WN2
WN2(N/4−1)
X0
X1
XN/4−1
XN/4
XN/4+1
XN/2−1
XN/2
XN/2+1
XN/2+N/4−1
XN/2+N/4
XN/2+N/4+1
XN−1−1
−1
−1
−1
−1
−1
−1
−1
−1
−1
−1
−1
WN0
WN2
WN2(N/4−1)
WN0
WN1
WNN/4−1
WN0
WN1
WNN/4−1
FFT アルゴリズム 17/41
逆 FFTx(n)を Xk で置き換え,指数部の符号を反転して N で割ればよい.
Xk =
N−1∑n=0
x(n)e− j 2πN nk
x(n) =1N
N−1∑k=0
Xke j 2πN nk
FFTアルゴリズムの中で回転因子WN をその複素共役に変える.出力値を N で割る.
FFTを使用する場合には,X∗kのDFTを FFTアルゴリズム
で計算し,得られた系列の複素共役をとって N で割る.
x(n) =1N
N−1∑k=0
X∗ke− j 2π
N nk
∗
FFT 補足 18/41
FFTの留意点: ナイキスト条件
標本化定理 連続信号 x(t)のスペクトルが | f | < 1/2T でのみ非零ならば
x(t) =∞∑
k=−∞x(kT)
sin πT (t − kT)πT (t − kT)
−100 0 100 200 300 400 5000
10
20
30
40
50
60
70
−5 −4 −3 −2 −1 0 1 2 3 4 5−0.5
0
0.5
1
1.5
2
2.5
サンプリング間隔 T が 1/2 max | f |より大きい時,エイリアシング誤差 (折返し誤差)を生じる.
FFT 補足 19/41
アンチエイリアスフィルタ (Anti-Alias Filter)
一般に原信号に含まれる周波数成分はわからないため,あらかじめ適当な LPF (low-pass filter,低域通過型フィルタ)に通してから標本化する.
−3 −2 −1 0 1 2 30
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
−3 −2 −1 0 1 2 30
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
FFT 補足 20/41
FFTの留意点: 波形の切り出し (1)
時間範囲が有限でない連続信号の標本値系列は,その一部分を切り出して FFTを適用.標本値列の長さは通常 28 (= 256) – 211 (= 2048)程度.
−40 −20 0 20 40 60 80 100 120 140 160−20
−15
−10
−5
0
5
10
15
20
25
−40 −20 0 20 40 60 80 100 120 140 160−20
−15
−10
−5
0
5
10
15
20
25
DFTは標本値列を周期系列として扱うことに注意.
FFT 補足 21/41
FFTの留意点: 波形の切り出し (2)
DFTで求めた振幅スペクトル
-40
-30
-20
-10
0
0 5 10 15 20 25 30
frequency [Hz]
[dB]
3.0 Hz
-40
-30
-20
-10
0
[dB]
0 5 10 15 20 25 30
frequency [Hz]
3.2 Hz
3.0 Hzの正弦波 3.2 Hzの正弦波
FFT 補足 22/41
いろいろな窓関数両端での大きな不連続を防ぐため,窓関数 w(t)(両端で 0に近い値)をかける.
f (t) ⇒ w(t) f (t)
方形窓 wR(t) = 1
ハニング窓 wN(t) = 0.5(1 − cos 2πtP
)
ハミング窓 wM(t) = 0.54 − 0.46 cos 2πtP
ブラックマン窓 wB(t) = 0.42 − 0.5 cos 2πtP+ 0.08 cos 4π
tP
ガウス窓 wG(t) = exp(− t2
P2σ2
)
FFT 補足 23/41
窓関数の具体例
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 20 40 60 80 100 120 140−20
−15
−10
−5
0
5
10
15
20
25
窓関数 適用例
ハニング窓 ハミング窓 ブラックマン窓
FFT 補足 24/41
周波数領域における窓関数
W( jω): スペクトル窓
fw(t) = w(t) f (t)Fw( jω) = F [w(t) f (t)] = F [w(t)] ∗ F [ f (t)] = W( jω) ∗ F( jω)
0 0.05 0.1 0.15
10−10
10−8
10−6
10−4
10−2
100
ハニング窓ハミング窓ブラックマン窓
FFT 補足 25/41
標本点数の決め方アルゴリズムの入手し易さと計算効率から多くの場合N = 2ν.Lが 2ν でない時,0を加えて 2ν−1 < L ≤ 2ν = N を満たす N にする.
{x(0), x(1), . . . , x(L − 1), 0, 0, . . . , 0}
0 0.1 0.2 0.3 0.4 0.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
[3, 2, 1, 0][3, 2, 1, 0, 0, 0, 0, 0][3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
情報は増えないが,スペクトルの記述精度を向上するような効果がある (周波数軸上の標本間隔を詰めて標本化関数による補間をしたのと等価)
FFT 補足 26/41
今日の予定
1 FFT
2 FFTの応用スペクトル解析畳み込み相関関数
FFT の応用 27/41
FFTの応用: スペクトル解析
FFTはもともとスペクトル解析のための手法.有限長で周期的であるとみなす.
現実の信号は時変.(例: 音声信号)
1 1.05 1.1 1.15 1.2 1.25
x 104
−8000
−6000
−4000
−2000
0
2000
4000
6000
8000
窓関数で切り出した信号を FFTすることで,周波数特性の時間変化を調べる.
FFT の応用 スペクトル解析 28/41
スペクトログラム
ランニングスペクトル (スペクトログラム)の例
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000−8000
−6000
−4000
−2000
0
2000
4000
6000
Time
Fre
quen
cy
0 500 1000 1500 2000 2500 3000 3500 4000 45000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
FFT の応用 スペクトル解析 29/41
FFTの応用: 畳み込みN 点の標本値列 {x(n)}, {h(n)}の畳み込みの計算
y(n) = x(n) ∗ h(n) =N−1∑m=0
x(m)h(n − m) n = 0, 1, . . . , N − 1.
N2 の乗算が必要.FFTを利用.
Yk = XkHk k = 0, 1, . . . , N − 1{y(n)} = F−1[XkHk]
32
N log2 N の乗算で計算可能
→ただし,通常の畳み込みではない (巡回畳み込み)
FFT の応用 畳み込み 30/41
巡回畳み込み
巡回畳み込み
y(n) =N−1∑m=0
x(m)h((n − m))N, ((·))N: mod N
FFTでは {x(n)}, {h(n)}は周期的とみなされる.h((n))N = 0 (n < 0)でないので巡回畳込みは因果律を満たさない.
FFT の応用 畳み込み 31/41
FFTの応用: 線形畳み込み (有限長系列)
FFTで線形畳み込みを計算する方法 ({x(n)}, {h(n)}が有限長の場合):{x(n)}の長さを Nx, {h(n)}の長さを Nhとする.
N ≥ Nx + Nh − 1とし, {x(n)}, {h(n)}の後ろに 0を付加.
n ≥ Nx + Nh では y(n) = 0.周期性を排除して畳み込み計算が可能
FFT の応用 畳み込み 32/41
FFTの応用: 線形畳み込み (有限長と無限長系列)(1)
Overlap-add法
h(n)
x(n)
x (n)(l)
Q
L
N
zero-padding
add add add addy(n)
y (n)(l)
FFT の応用 畳み込み 33/41
FFTの応用: 線形畳み込み (有限長と無限長系列)(2)
Overlap-save法
h(n)
x(n)
x (n)(l)
Q
L
N
zero-padding
savesave save save
y(n)
y (n)(l)
FFT の応用 畳み込み 34/41
FFTの応用: インパルス応答と伝達関数
伝達関数 H( jω)はインパルス応答 h(t)のフーリエ変換F [h(t)]インパルス応答→伝達関数
系にインパルスを印加し,その応答出力 h(t)を標本化してDFTすると伝達関数 H( jω)が得られる.
標本化速度がナイキスト条件を満たす必要がある.
伝達関数→インパルス応答インパルス印加ができない場合,既知信号 x(t)を入力し,その応答 y(t)を観測する.伝達関数はH( jω) = Y( jω)/X( jω)で得られ,H( jω)をIDFTするとインパルス応答 h(t)が得られる.
FFT の応用 畳み込み 35/41
FFTの応用: 相関関数
自己相関関数
rxx(τ) =∫
x(t)x(t − τ)dt
相互相関関数
rxy(τ) =∫
x(t)y(t − τ)dt
ウィーナー-ヒンチン (Wiener-Khinchine)の定理
F [rxx(τ)] = P( jω) = X( jω)X∗( jω)F [rxy(τ)] = X( jω)Y∗( jω)
FFT の応用 相関関数 36/41
FFTの応用: ケプストラム分析
ケプストラム C(τ): cepstrum, spec-trumからの造語
C(τ) = F−1[log |S( jω)|]
ケフレンシ τ: quefrency, fre-que-ncyからの造語
0 0.5 1 1.5 2 2.5 3
x 104
−1
0
1
2
3
4
5
6
7
0 1 2 3 4 5 6
x 104
0
0.001
0.002
0.003
0.004
0.005
0.006
0.007
0.008
0.009
0.01
対数パワースペクトラム ケプストラム
FFT の応用 相関関数 37/41
ケプストラムを用いた音声情報処理
音声波 s(t)は,音源波 u(t),声道の特性 h(t),口からの放射特性 r(t)の畳み込み.
S( jω) = V( jω)H( jω)R( jω)C(τ) = F−1[log |V( jω)|] + F−1[log |H( jω)|] + F−1[log |R( jω)|]
V( jω): 調波構造で基本周波数を示す.H( jω): 典型的には山がいくつか連なった特性.R( jω): 周波数軸上でなだらかな右上がり.
対数を取ることで,性質の異なる V, H, Rを分離できる.
FFT の応用 相関関数 38/41
自己相関関数
x(t), y(t)定常過程平均値 η = E [x(t)]自己相関関数 R(τ) = Rxx(τ) = E [x(t + τ)x∗(t)]相互相関関数 Rxy(τ) = E
[x(t + τ)y∗(t)]R(−τ) = R∗(τ)R(0) = E
[|x(t)|2
]≥ 0
|R(τ)| ≤ R(0)
FFT の応用 相関関数 39/41
スペクトル密度
定常過程 x(t)スペクトル密度 S(ω) =
∑∞τ=−∞ R(τ)e− jωτ
Γ(z) =∑∞τ=−∞ R(τ)z−τ, S(ω) = Γ(e jω)
離散時間フーリエ逆変換より
R(τ) = 12π
∫ π−π S(ω)e jωτdω
R(0) = E[|x(t)|2
]= 1
2π
∫ π−π S(ω)dω > 0
FFT の応用 相関関数 40/41