Document

信号とシステム
信号とシステム
システム科学専攻
林 和則
• 第 2 章 連続時間信号の変換
• 第 3 章 サンプリングと z 変換
• 第 4 章 FFT とその応用
• 第 5 章 アナログフィルタとディジタルフィルタ
• 第 6 章 適応フィルタ
講義資料:http://www.msys.sys.i.kyoto-u.ac.jp/˜kazunori/ss.html
1
信号とシステム
第 4 章 FFT とその応用
• 実際のスペクトル解析で良く使用される離散フーリエ変換 (DFT)
について説明.
• DFT の高速算法としての FFT アルゴリズムの考え方を説明.
• FFT の使用に際しての具体的な留意事項を説明.
• FFT の実際的な応用として,スペクトル解析,畳み込み,相関関数
の計算,ケプストラム分析について概説.
第 4 章 FFT とその応用
2
信号とシステム
色々なフーリエ変換
フーリエ級数,フーリエ変換,DTFT (離散時間フーリエ変換),DFT
(離散フーリエ変換) の関係
連続スペクトル
−∞ < t < ∞
離散スペクトル
0≤t≤P
第 4 章 FFT とその応用
連続時間
離散時間
−∞ < f < ∞
−fc < f < fc
フーリエ変換
DTFT
フーリエ級数
DFT
3
信号とシステム
フーリエ級数
x(t), 0 ≤ t ≤ P , −∞ < f < ∞
∞
∑
x(t) =
ck e
j 2π
P kt
k=−∞
∫
1
ck =
P
P
x(t)e−j P
2π
kt
dt
0
周波数 1/P の波を基本波とする調波構造を持った線スペクトル
1.5
1.5
1
0.5
1
0
−0.5
0.5
−1
−1.5
−4
第 4 章 FFT とその応用
−2
0
2
4
6
t
8
10
12
14
16
0
0
0.5
1
1.5
2
2.5
3
3.5
4
4
信号とシステム
フーリエ変換
x(t), −∞ < t < ∞, −∞ < f < ∞
X(jω) = F[x(t)] =
x(t) = F
−1
∫
∞
x(t)e−jωt dt
−∞
1
[X(jω)] =
2π
∫
∞
X(jω)ejωt dω
−∞
周波数軸上の連続関数である連続スペクトル
0.8
70
0.7
60
0.6
50
0.5
40
0.4
0.3
30
0.2
20
0.1
10
0
−0.1
−4
第 4 章 FFT とその応用
−2
0
2
4
6
8
10
12
14
16
0
−100
−80
−60
−40
−20
0
20
40
60
80
100
5
信号とシステム
離散時間フーリエ変換 (DTFT)
x(n), −∞ < n < ∞, −fc < f < fc = 1/2 (−π < ω < π)
∞
∑
X(jω) =
x(n)e−jωn
n=−∞
∫ π
x(n) =
1
2π
X(jω)ejωn dω
−π
|f | > fc では −fc ≤ f ≤ fc の繰り返しの連続スペクトル
10
70
9
60
8
50
7
6
40
5
30
4
3
20
2
10
1
0
第 4 章 FFT とその応用
0
5
10
15
20
25
30
35
0
−40
−20
0
20
40
60
80
100
6
信号とシステム
離散フーリエ変換 (DFT)
x(n), 0 ≤ n ≤ N − 1, −fc < f < fc = 1/2
Xk =
N
−1
∑
x(n)e−j N nk
2π
n=0
N −1
2π
1 ∑
x(n) =
Xk ej N nk
N
k=0
|f | > fc では −fc ≤ f ≤ fc の繰り返しの離散スペクトル
40
12
35
10
30
8
25
20
6
15
4
10
2
5
0
第 4 章 FFT とその応用
0
1
2
3
4
5
6
7
8
9
0
−4
−2
0
2
4
6
8
10
12
14
16
7
信号とシステム
DFT の演算
Xk =
N
−1
∑
x(n)e−j
N −1
1 ∑
j 2π
x(n) =
Xk e N nk
N
2π
N nk
n=0


X0
1

 
 X1  1

 

 
 X2  = 1

 
 .  .
 ..   ..

 
XN −1
1
k=0

e
1
1
−j 2π
N
−j 4π
N
e−j
e
e−j
2π×2
N
..
.
e
−j
2π(N −1)
N
4π×2
N
..
.
e
−j
4π(N −1)
N
···
···
···
..
.
···
1

x(0)






e
  x(1) 

2π(N −1)×2  
−j



N
e
x(2)





..
..



.
.


2π(N −1)(N −1)
−j
N
e
x(N − 1)
−j
2π(N −1)
N
W nk = e−j N nk を変換核とする離散的な直交変換
2π
第 4 章 FFT とその応用
8
信号とシステム
FFT (Fast Fourier Transform) の考え方
• N × N 行列と N 次元ベクトルの積の計算量 (乗算回数) は N 2 の
オーダー.
• FFT はバタフライ演算により計算量を N log2 N のオーダーに削減.
N = 2ν (ν; 正整数), 回転因子 WN = e−j N とし,奇数番目と偶数番目
を分離.
2π
Xk =
N
−1
∑
x(n)WN nk
n=0
N
2
=
−1
∑
n=0
第 4 章 FFT とその応用
−1
∑
N
2
x(2n)WN 2nk +
x(2n + 1)WN (2n+1)k
n=0
9
信号とシステム
N
2
Xk =
−1
∑
x(2n)WN 2nk +
n=0
−1
∑
−1
∑
N
2
x(2n + 1)WN (2n+1)k
n=0
N
2
=
x(2n)(WN 2 )nk + WN k
n=0
N
2
=
x(2n + 1)(WN 2 )nk
n=0
−1
∑
−1
∑
N
2
−1
∑
N
2
x(2n)W N nk + WN k
2
n=0
x(2n + 1)W N nk
2
n=0
= Ek + WN k Ok
• Ek : 偶数番目の標本値列の N/2 点 DFT.
• Ok : 奇数番目の標本値列の N/2 点 DFT.
Ek+N/2 = Ek , Ok+N/2 = Ok より, N 点 DFT を N/2 点 DFT 2 回で
実現.
第 4 章 FFT とその応用
10
信号とシステム
FFT のシグナルフローグラフ
N 点 DFT の分割
E0
x(2)
N/2-point DFT
x(0)
x(N-2)
X0
E1
0
WN
N/2-point DFT
x(3)
x(N-1)
Ek+N/2 = Ek
第 4 章 FFT とその応用
1
WN
E N/2-1
X N/2-1
O0
x(1)
X1
N/2
WN
X N/2
O1
N/2+1
WN
N/2-1
X N/2+1
WN
N-1
WN
O N/2-1
X N-1
Ok+N/2 = Ok
11
信号とシステム
バタフライ演算の修正
WN
N
2
+i
= −WN i を利用して乗算の回数を削減.
Ei
Xi
Ei
Xi
i
WN
Oi
i
N/2+i
WN
(a) butterfly operation
第 4 章 FFT とその応用
X N/2+i
Oi
WN
-1
X N/2+i
(b) modified butterfly operation
12
信号とシステム
分割の繰り返し
X0
x(0)
x(4)
N/4
X1
XN/4−1
(N−4)
x(2)
x(6)
N/4
WN0
WN2
−1
XN/4
−1
XN/4+1
WN2(N/4−1)
−1
x(N−2)
x(1)
x(5)
N/4
x(N−3)
x(3)
x(7)
x(N−1)
第 4 章 FFT とその応用
N/4
WN0
−1
WN2
−1
WN2(N/4−1)
−1
XN/2−1
WN0
WN1
−1
XN/2
−1
XN/2+1
WNN/4−1
−1
WN0
−1
WN1
−1
WNN/4−1
−1
U0
u(0)
XN/2+N/4−1
XN/2+N/4
u(1)
XN/2+N/4+1
XN−1
−1
U1
2 点 FFT
13
信号とシステム
定位置計算
演算結果の格納に元の記憶場所をそのまま使える
X0
x(0)
0
x(4)
W8
X1
-1
0
W8
x(2)
2
0
x(6)
W8
X2
-1
-1
W8
X3
-1
0
W8
x(1)
1
0
x(5)
W8
W8
-1
x(3)
x(7)
第 4 章 FFT とその応用
W8
-1
-1
W8
-1
X6
-1
X7
3
2
0
X5
-1
2
0
W8
W8
X4
-1
-1
W8
14
信号とシステム
ビット逆順配列
ビットを逆順にし,それを小さい順に並べている.
000
100
010
110
001
101
011
111
X0
x(0)
0
x(4)
W8
X1
-1
0
W8
x(2)
2
0
x(6)
W8
X2
-1
-1
W8
X3
-1
0
W8
x(1)
1
0
x(5)
W8
W8
-1
x(3)
x(7)
第 4 章 FFT とその応用
W8
-1
-1
W8
-1
X6
-1
X7
3
2
0
X5
-1
2
0
W8
W8
X4
-1
-1
W8
000
001
010
011
100
101
110
111
15
信号とシステム
FFT の計算量
段数は log2 N − 1 であり,1 段当たりの乗算は N/2.
X0
x(0)
x(4)
N/4
X1
XN/4−1
(N−4)
x(2)
x(6)
N/4
WN0
WN2
−1
XN/4
−1
XN/4+1
WN2(N/4−1)
−1
x(N−2)
x(1)
x(5)
N/4
x(N−3)
x(3)
x(7)
x(N−1)
第 4 章 FFT とその応用
N/4
WN0
−1
WN2
−1
WN2(N/4−1)
−1
XN/2−1
WN0
WN1
−1
XN/2
−1
XN/2+1
WNN/4−1
−1
WN0
−1
WN1
−1
WNN/4−1
−1
XN/2+N/4−1
XN/2+N/4
XN/2+N/4+1
XN−1
16
信号とシステム
逆 FFT
x(n) を Xk で置き換え,指数部の符号を反転して N で割ればよい.
Xk =
N
−1
∑
x(n)e−j N nk
2π
n=0
N −1
1 ∑
j 2π
x(n) =
Xk e N nk
N
k=0
• FFT アルゴリズムの中で回転因子 WN をその複素共役に変える.
• 出力値を N で割る.
FFT を使用する場合には,Xk∗ の DFT を FFT アルゴリズムで計算し,
得られた系列の複素共役をとって N で割る.
(N −1
)∗
1 ∑ ∗ −j 2π nk
x(n) =
Xk e N
N
k=0
第 4 章 FFT とその応用
17
信号とシステム
FFT の留意点: ナイキスト条件
標本化定理 連続信号 x(t) のスペクトルが |f | < 1/2T でのみ非零な
らば
∞
∑
x(t) =
k=−∞
sin Tπ (t − kT )
x(kT ) π
T (t − kT )
2.5
70
60
2
50
1.5
40
1
30
0.5
20
0
10
0
−100
0
100
200
300
400
500
−0.5
−5
−4
−3
−2
−1
0
1
2
3
4
5
サンプリング間隔 T が 1/2 max |f | より大きい時,エイリアシング誤差
(折返し誤差) を生じる.
第 4 章 FFT とその応用
18
信号とシステム
アンチエイリアスフィルタ (Anti-Alias Filter)
一般に原信号に含まれる周波数成分はわからないため,あらかじめ適当
な LPF (low-pass filter, 低域通過型フィルタ) に通してから標本化する.
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
−3
−2
第 4 章 FFT とその応用
−1
0
1
2
3
0
−3
−2
−1
0
1
2
3
19
信号とシステム
FFT の留意点: 波形の切り出し (1)
• 時間範囲が有限でない連続信号の標本値系列は,その一部分を切り
出して FFT を適用.
• 標本値列の長さは通常 28 (= 256) – 211 (= 2048) 程度.
25
25
20
20
15
15
10
10
5
5
0
0
−5
−5
−10
−10
−15
−15
−20
−40
−20
0
20
40
60
80
100
120
140
160
−20
−40
−20
0
20
40
60
80
100
120
140
160
DFT は標本値列を周期系列として扱うことに注意.
第 4 章 FFT とその応用
20
信号とシステム
FFT の留意点: 波形の切り出し (2)
DFT で求めた振幅スペクトル
[dB]
[dB]
0
0
3.0 Hz
3.2 Hz
-10
-10
-20
-20
-30
-30
-40
0
5
10
15
frequency [Hz]
3.0 Hz の正弦波
第 4 章 FFT とその応用
20
25
30
-40
0
5
10
15
20
25
30
frequency [Hz]
3.2 Hz の正弦波
21
信号とシステム
いろいろな窓関数
両端での大きな不連続を防ぐため,窓関数 w(t) (両端で 0 に近い値)
をかける.
f (t) ⇒ w(t)f (t)
方形窓
wR (t) = 1
ハニング窓
wN (t) = 0.5(1 − cos 2π
ハミング窓
wM (t) = 0.54 − 0.46 cos 2π
ブラックマン窓
ガウス窓
第 4 章 FFT とその応用
t
)
P
t
P
t
t
wB (t) = 0.42 − 0.5 cos 2π + 0.08 cos 4π
P
P
(
)
t2
wG (t) = exp − 2 2
P σ
22
信号とシステム
窓関数の具体例
1
25
0.9
20
0.8
15
0.7
10
0.6
5
0.5
0
0.4
−5
0.3
−10
0.2
−15
0.1
0
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−20
窓関数
ハニング窓
第 4 章 FFT とその応用
0
20
40
60
80
100
120
140
適用例
ハミング窓
ブラックマン窓
23
信号とシステム
周波数領域における窓関数
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
10
−2
ハニング窓
10
ハミング窓
−4
10
ブラックマン窓
−6
10
−8
10
−10
10
0
第 4 章 FFT とその応用
0.05
0.1
0.15
24
信号とシステム
標本点数の決め方
• アルゴリズムの入手し易さと計算効率から多くの場合 N = 2ν .
• L が 2ν でない時,0 を加えて 2ν−1 < L ≤ 2ν = N を満たす N に
する.
{x(0), x(1), . . . , x(L − 1), 0, 0, . . . , 0}
1.8
1.6
[3, 2, 1, 0]
1.4
1.2
[3, 2, 1, 0, 0, 0, 0, 0]
1
0.8
[3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4
0.5
情報は増えないが,スペクトルの記述精度を向上するような効果がある
(周波数軸上の標本間隔を詰めて標本化関数による補間をしたのと等価)
第 4 章 FFT とその応用
25
信号とシステム
FFT の応用: スペクトル解析
• FFT はもともとスペクトル解析のための手法.
• 有限長で周期的であるとみなす.
• 現実の信号は時変.(例: 音声信号)
8000
6000
4000
2000
0
−2000
−4000
−6000
−8000
1
1.05
1.1
1.15
1.2
1.25
4
x 10
窓関数で切り出した信号を FFT することで,周波数特性の時間変化を
調べる.
第 4 章 FFT とその応用
26
信号とシステム
スペクトログラム
ランニングスペクトル (スペクトログラム) の例
1
6000
0.9
4000
0.8
0.7
2000
Frequency
0.6
0
−2000
0.5
0.4
0.3
−4000
0.2
−6000
0.1
0
−8000
0
1000
2000
第 4 章 FFT とその応用
3000
4000
5000
6000
7000
8000
9000
10000
0
500
1000
1500
2000
2500
Time
3000
3500
4000
4500
27
信号とシステム
FFT の応用: 畳み込み
N 点の標本値列 {x(n)}, {h(n)} の畳み込みの計算
y(n) = x(n) ∗ h(n) =
N
−1
∑
x(m)h(n − m)
n = 0, 1, . . . , N − 1.
m=0
• N 2 の乗算が必要.
FFT を利用.
Yk = Xk Hk
k = 0, 1, . . . , N − 1
{y(n)} = F −1 [Xk Hk ]
•
3
N log2 N の乗算で計算可能
2
→ ただし,通常の畳み込みではない (巡回畳み込み)
第 4 章 FFT とその応用
28
信号とシステム
巡回畳み込み
巡回畳み込み
y(n) =
N
−1
∑
x(m)h((n − m))N ,
((·))N : mod N
m=0
• FFT では {x(n)}, {h(n)} は周期的とみなされる.
• h((n))N = 0 (n < 0) でないので巡回畳込みは因果律を満たさない.
第 4 章 FFT とその応用
29
信号とシステム
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.
• 周期性を排除して畳み込み計算が可能
第 4 章 FFT とその応用
30
信号とシステム
FFT の応用: 線形畳み込み (有限長と無限長系列)(1)
Overlap-add 法
zero-padding
L
h(n)
Q
x(n)
N
x (l) (n)
y (l) (n)
add
add
add
add
y(n)
第 4 章 FFT とその応用
31
信号とシステム
FFT の応用: 線形畳み込み (有限長と無限長系列)(2)
Overlap-save 法
zero-padding
L
h(n)
Q
x(n)
N
x (l) (n)
y (l) (n)
save
save
save
save
y(n)
第 4 章 FFT とその応用
32
信号とシステム
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) が得られる.
第 4 章 FFT とその応用
33
信号とシステム
FFT の応用: 相関関数
自己相関関数
∫
x(t)x(t − τ )dt
rxx (τ ) =
相互相関関数
∫
rxy (τ ) =
x(t)y(t − τ )dt
ウィーナー-ヒンチン (Wiener-Khinchine) の定理
F[rxx (τ )] = P (jω) = X(jω)X ∗ (jω)
F[rxy (τ )] = X(jω)Y ∗ (jω)
第 4 章 FFT とその応用
34
信号とシステム
FFT の応用: ケプストラム分析
ケプストラム C(τ ): cepstrum, spec-trum からの造語
C(τ ) = F −1 [log |S(jω)|]
ケフレンシ τ : quefrency, fre-que-ncy からの造語
7
0.01
0.009
6
0.008
5
0.007
4
0.006
3
0.005
0.004
2
0.003
1
0.002
0
−1
0.001
0
0.5
1
1.5
2
2.5
0
3
0
1
2
3
4
5
4
対数パワースペクトラム
第 4 章 FFT とその応用
6
4
x 10
x 10
ケプストラム
35
信号とシステム
ケプストラムを用いた音声情報処理
音声波 s(t) は,音源波 v(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 を分離できる.
第 4 章 FFT とその応用
36