HTML 版: http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/main.html

やる夫 実験データの解析とかで信号処理をしなくちゃならないことが多くなってきたお…
やる夫 数学でフーリエ解析とか習ったけど，真面目に聞いてなかったのでさっぱりわからないお…
やる夫 だからやらない夫に教えてもらうお!

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

やる夫で学ぶディジタル信号処理
東北大学 大学院情報科学研究科
鏡 慎吾
ver. 2016.01.08

1

目次
第 1 章 フーリエ級数

10

1.1
1.2

信号の分解

フーリエ級数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10
11

1.3

フーリエ係数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.4

積分と総和の交換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

第 2 章 複素指数関数型のフーリエ級数

2.1
2.2
2.3
2.4

sin と cos を重ねることの意味 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
複素指数関数型のフーリエ級数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20
22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
フーリエ級数のイメージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2527

フーリエ係数の計算

第 3 章 フーリエ変換

3.1

周期をどんどん長くする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2
3.3

フーリエ変換とフーリエ逆変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4

20

31
31

重要なフーリエ変換対 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33
38

3.3.1
3.3.2

デルタ関数と複素指数関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38
42

フーリエ級数とフーリエ変換の関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47矩形関数と sinc 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

第 4 章 離散時間信号

52

4.1

離散時間信号の表し方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

4.2
4.3

正規化角周波数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53
55

離散時間信号の不思議な性質 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

第 5 章 離散時間フーリエ変換

5.1

離散時間信号をそのままフーリエ変換するとどうなるか . . . . . . . . . . . . . . . . . . . .

5.2
5.3

離散時間フーリエ変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
離散時間フーリエ逆変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

第 6 章 離散フーリエ変換

61
61
62
64
68
68

6.1

離散時間フーリエ変換の困るところ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.2
6.3

周波数領域を離散化する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.4
6.5

離散フーリエ変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
高速フーリエ変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72
74

6.6

4 種類のフーリエ変換のまとめ ― 離散性と周期性 . . . . . . . . . . . . . . . . . . . . . . .

76

離散フーリエ逆変換. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69
70

2
第 7 章 フーリエ変換の性質 (1): 時間シフトと変調

7.1
7.2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
変調 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
時間シフト

第 8 章 フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

79
79
81
84
84

8.1

時間領域たたみこみ

8.2
8.3

線形時不変システムとたたみこみ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
周波数応答と「たたみこみと積の関係」 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85
90

8.4

周波数領域たたみこみ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

第 9 章 フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

94

9.1
9.2

パーセバルの等式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9.3
9.4

ベクトルの正規直交展開とフーリエ級数展開 . . . . . . . . . . . . . . . . . . . . . . . . . .

9.5

フーリエ変換の場合はどうなのか . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102関数をベクトルとみなす . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94
96

97
正規直交展開とパーセバルの等式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

第 10 章 サンプリング定理

104
10.1 サンプリングされた信号から元の連続時間信号を復元できるか . . . . . . . . . . . . . . . . 104

10.2 くし型関数のフーリエ変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.3 くし型関数をたたみこむ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10.4 連続時間信号の復元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.5 エイリアシング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
10.6 くし型関数で理解する 4 種類のフーリエ変換の関係 . . . . . . . . . . . . . . . . . . . . . . 117
第 11 章 スペクトル解析と窓関数

12011.1 離散フーリエ変換によるスペクトル解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
11.2 アンチエイリアスフィルタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
11.3 有限区間の切り出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
11.4 窓関数とその特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
第 12 章 ディジタルフィルタの基礎

128
12.1 周波数選択フィルタと線形時不変システム . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

12.2 インパルス応答のたたみこみによるディジタルフィルタ . . . . . . . . . . . . . . . . . . . . 129
12.3 線形差分方程式によるディジタルフィルタ . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
第 13 章 ラプラス変換

135

13.1 線形微分方程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
13.2 ラプラス変換による微分方程式の解法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
13.3 ラプラス変換とは何なのか . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
13.4 なぜラプラス変換で微分方程式が解けるのか . . . . . . . . . . . . . . . . . . . . . . . . . . 146
13.5 なぜ c + jΩ を s にするのか . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
13.6 周波数応答と伝達関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
13.7 初期値が 0 でない場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

3
第 14 章 z 変換

160

14.1 z 変換の導入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
14.2 逆 z 変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
14.3 線形差分方程式と z 変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
14.4 逆 z 変換の実際 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
14.5 なぜ es を z にするのか . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
第 15 章 ディジタルフィルタの解析

17215.1 ディジタルフィルタの周波数特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
15.2 極と零点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
15.3 安定性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
15.4 線形位相特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
15.5 群遅延 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
第 16 章 ディジタルフィルタの設計

194

16.1 フィルタの仕様と設計方針 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
16.2 FIR フィルタの窓関数設計 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
16.3 IIR フィルタの間接設計 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
16.3.1 インパルス不変変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
16.3.2 双線形変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
付 録 A 伝達関数の部分分数展開

211
A.1 厳密にプロパーな伝達関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

A.2 特性方程式が重解を持つ場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
A.3 状態空間表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
A.4 伝達関数のプロパー性と実現可能性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
A.5 1/(s − λ)p の逆ラプラス変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
A.6 離散時間伝達関数のプロパー性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
A.7 1/(1 − αz −1 )p の逆 z 変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
付 録 B バタワースフィルタ

228
B.1 バタワースフィルタの伝達関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

B.2 バタワースフィルタの次数の決定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

4

前置き

この資料の位置づけ
本資料は，東北大学工学部機械知能・航空工学科 4 年生向け講義「信号処理工学」(2013 年度までは「知能情報システム工学」) の補足資料とすることを意図したものです．
「やる夫」と「やらない夫」という 2 人の架空の人物の会話形式でディジタル信号処理工学の基本的な部分を説明することを狙います．
ただし，いわゆるディジタル信号処理の講義とは少し力点が異なっている面があります．それは以下のよ
うな状況に起因します．

• 同講義の受講者は，原則として 3 年生の時点で「数学 II」としてフーリエ解析・ラプラス変換を，「制
御工学 I」「制御工学 II」として古典・現代制御論を履修している．

• 同講義は 4 年生の前期の開講であり，多くの受講者にとっては大学院入試の直前の時期の受講になる．
• 東北大学機械系の大学院に進学する場合，数学 II，制御工学 I・II は院試の科目として必要となる受講者が多い．一方，ディジタル信号処理は院試の範囲外である．
これらを考慮して，同講義 (およびこの補足資料) では，ディジタル信号処理の技術自体を学んでもらうことよりも，ディジタル信号処理というネタを通じて，フーリエ解析，ラプラス変換，線形システム論，制御論などについて復習し，理解を深めてもらうことに主眼をおくことにしています．
この点を反映して，本資料の生徒役である「やる夫」は，講義の受講生と同様に，フーリエ解析，ラプラ
ス変換，制御工学等は一通り学んだことがある (はずである) が，いまいち理解し切れていない人物として描かれています (が，もちろんこれらの初学者でも理解できるように書いているつもりです)．教師役である「やらない夫」が何者なのかは，書いてる自分でもよくわかりません．
本資料は 2011 年前期セメスターの講義を進めながら執筆・都度公開し，予定していた内容を同年 8 月までに一通り書き上げました．今後も適宜更新していく予定です．
執筆に当たっては，講義で教科書として指定している 樋口・川又 (2000) を構成も含めて大いに参考にしているほか，下記の各文献を主に参照しています．

• 樋口 龍雄, 川又 政征: ディジタル信号処理 ― MATLAB 対応, 昭晃堂, 2000.
• Alan V. Oppenheim and Ronals W. Schafer: Discrete-time Signal Processing, Prentice Hall, 1998.
• 眞渓 歩: ディジタル信号処理工学, 昭晃堂, 2004.
• H. P. スウ著, 佐藤 平八 訳: フーリエ解析, 森北出版, 1979.
この資料はいわゆる やる夫シリーズ の体裁を借りたものですが，同シリーズに特徴的なアスキーアート
による挿絵はありません．これは権利上の問題を避けるためと同時に面倒くさいためですが，圧倒的に後者の事情が大きいです．挿絵を独自に追加したバージョンを作成されるのは，特に止めませんが，推奨もし
ません．

5

各章のねらい2011 年 10 月頃から，twitter やはてなブックマーク 等で多数言及されるようになり，予想以上の反響に驚いています．大変ありがたいことなのですが，ツイートやコメントを読んでいると「普通の信号処理の教科書の語尾を『だお』に変えただけのもの」を公開していると思われている節が (一部に) あるようです．
もちろんそんな酔狂なことに時間を割いているはずはなく，わざわざ新しいテキストを書き起こしたのにはそれなりの意図があります．基本的には，数式の背後にある概念やそのとらえ方を，できるだけ嘘のない形で伝えることを試みました．そのために• 新しい概念や定義を導入する際，なぜそれが必要なのかを可能な限り説明する• 数式を展開して証明終わり，ではなく，できるだけ直観的な説明をする．数式の展開が必要な場合は，その式変形の意図をできるだけ説明する
ことを心がけました．そのような書き方のためには，わからないことを遠慮なく「わからない」と言う，やる夫のような生徒役との会話形式が適していると考えました．
以下，各章の特色だと思うところ (普通の教科書と，どこが同じでどこが違うのか) を挙げます．当該分野について一通り学習したことのある方にとっては，どの章を読み飛ばしてどの章を読めばよいかを判断するための材料になるのではないかと思います．

1. フーリエ級数 (p. 10) 理工系向けの教科書としてはごく一般的な導入方法を踏襲している．つまり，周期関数を三角関数系で展開「できるとしたら」こういう形にしかなり得ない，という議論でフーリエ級数展開を導いている．初学者向けにはこれが一番わかりやすい議論だと思っているが，数学書は普通こういう流れでは書かれていない．なぜ理工書と数学書でこうも違うのかを 2.4 節で説明することにした．

2. 複素指数関数型のフーリエ級数 (p. 20) フーリエ級数をまず三角関数系で導入して，それから指数関数系で表示し直すのも常道を踏襲している．ただし，式変形で導出して終わりではなく，振幅と位相の明示的な表示になっていることを強調した．また，指数関数型にすることで現れる「負の周波数」の意味するところを明示した．

3. フーリエ変換 (p. 31) フーリエ級数から極限操作によって導入しており，これも標準的なやり方と思われる．ただし極限への移行の過程はちょっとくど過ぎるかもしれないくらい丁寧に描出した (わかっている人にとっては鬱陶しいだけだと思う)．フーリエ変換対の計算例は，以降の議論で必要になるものに限定した．また，これも後々の議論のため，周期関数を (フーリエ級数展開ではなく) フーリ
エ変換するとデルタ関数の列が出てくることを説明しておくことにした．

4. 離散時間信号 (p. 52) この章は標準的な説明に終始している．正規化周波数の概念と，離散時間の複素指数関数が周波数に関して周期的であることを説明している．

5. 離散時間フーリエ変換 (p. 61) フーリエ変換の時間領域を離散化することで離散時間フーリエ変換を導出している．それ自体は標準的なやり方と思われるが，区分求積法的な説明と，デルタ関数を使った説明の両方を併記した．そして，後者からの流れで 4 章で張った伏線を回収し，フーリエ級数と離散時間フーリエ変換が，時間と周波数を逆にした関係にあることを強調することにした．

6. 離散フーリエ変換 (p. 68) 離散フーリエ変換は，離散時間フーリエ変換の周波数領域の離散化からでも，フーリエ級数の時間領域の離散化からでも導入できるが，前の章とのつながりがよいので前者によることにした．これで時間・周波数領域それぞれの連続・離散の 4 組み合わせが出揃ったので，その対称性について改めて見渡しておくことにした．高速フーリエ変換のアルゴリズムは，とりあえず以降の議論のためには知らなくても差し支えないことと，標準的な説明以上のことが思いつかないことにより，そういう便利なものがあるということだけ述べておくに留めた．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

6
7. フーリエ変換の性質 (1): 時間シフトと変調 (p. 79) フーリエ変換にはいくつか重要な性質があるが，連続・離散に関する 4 種類のフーリエ変換について同様に成り立つため，まとめて並べて示すことにした．いずれも，多くの教科書では数式の展開により証明していることが多いが，それは敢えて避けて，直観的に説明することを試みた．時間シフト (と変調) については，周波数成分ごとの時間シフトの観点で説明している．

8. フーリエ変換の性質 (2): たたみこみと積 (p. 84) たたみこみと積の関係は，フーリエ変換の性質のうちでも特に利用頻度の高いものだが，(数式の展開による証明で済まさず) 直観的に理解しておこうとするなら，線形時不変システムの概念が必須であると思う．ちょっと遠回りになるが，線形時不変システムの作用としてたたみこみを説明し，周波数応答の概念を用いてたたみこみと積の関係を説明した．遠回りと言っても，後のディジタルフィルタの理解のためにはどうせ必要になる概念なので，無駄足ではない．

9. フーリエ変換の性質 (3): パーセバルの等式 (p. 94) フーリエ変換をある種の正規直交展開として幾
何学的に捉えられるようになっておくことは，さまざまな概念の直観的な理解のために重要である．
問題はそれをどこで導入するかだが，パーセバルの等式を説明する際にやっておくことにした．幾何学的に捉えてしまえば，パーセバルの等式はいわゆるピタゴラスの定理みたいなものであり，直観的にほとんど当たり前に思えるようになるのだが，実は必ずしも当たり前ではないということは釘を刺しておくことにした．

10. サンプリング定理 (p. 104) サンプリング定理自体は，十分な準備さえできていれば数行の数式展開で証明できる話である．
「準備」というのは主に「くし型関数」に関する理解であるが，これをあらかじめ学んでおこうと言ってもご利益がわからないように思うので，サンプリング定理を証明する過程
で必要に駆られて出てくる流れにした．くし型関数のフーリエ変換やくし型関数のたたみこみについても，できるだけ直観的な説明を試みた．せっかくくし型関数三昧になったので，4 種類のフーリエ変換の関係も，くし型関数を使っておさらいしておくことにした．

11. スペクトル解析と窓関数 (p. 120) 標準的な説明に終始している．読者が「信号に FFT をかけてス
ペクトル解析をしたい」と思っていてディジタルフィルタには興味がないのであれば，とりあえずこ
こまで読めば OK．

12. ディジタルフィルタの基礎 (p. 128) (線形) ディジタルフィルタとは，すなわち 9 章で説明した線形
時不変システムそのものなわけで，そこが説明済みである以上，FIR フィルタの導入ほとんど自明である．問題はどうやって再帰型 IIR フィルタに話を持っていくかだが，樋口・川又 (2000) に倣って，一般論ではなく具体例 (実指数関数応答) で導入することにした．

13. ラプラス変換 (p. 135) z 変換を理解するにはラプラス変換を理解しなくてはならない．ラプラス変換とは何なのかというと，フーリエ変換する際に元の関数に実指数関数をかけておいて収束しやすくするものなわけだが，そのように説明されたところで，なぜラプラス変換が微分方程式論や線形シス
テム論で便利に使えるのかピンと来ない．それもそのはずで，別に収束しやすくなったから便利に使えるようになったわけではないからだ．この点の説明をちゃんとすることを試みた．
まず，微分方程式が代数方程式に置き換えられる理由を，周波数成分ごとの微分を考えることで説明した．これはフーリエ変換の教科書によく出てくる説明である (つまりこの性質はラプラス変換の専売特許ではないということだ)．じゃあ何のためにラプラス変換が必要なのか (なぜ s という新しい変d数が必要なのか) という疑問には，伝達関数の極の観点から説明することにした．また， dt
f (t) のラプラス変換が sF (s) ではなく sF (s) − f (0) になる理由について直観的な説明を試みた．

14. z 変換 (p. 160) 前章でラプラス変換の意義をじっくり説明したので，z 変換も同様の流れを繰り返す形で説明した．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

7
15. ディジタルフィルタの解析 (p. 172) 取り扱っている話題自体は，安定性，線形位相性，群遅延など
標準的なものばかりである．それぞれの条件や意味をできるだけ直観的に説明するようにしたが，群遅延の式の導出はあまり直観的とはいえないかも知れない (基本的には Oppenheim & Schafer (1998)の説明そのままである)．具体例として用いる関数の大部分は樋口・川又 (2000) に倣った．

16. ディジタルフィルタの設計 (p. 194) ほぼ標準的な説明である．

更新履歴2016.01.08 小さな修正をいくつか．
• 式 (2.27) で F3 を Fn と書いていたのを修正．
• sinc 関数が時刻 0 で値 0 を取るかのような書き方になっていた (t = ±1, ±2, · · · とかに勢い余って 0 を加えていた) のを修正．

• フーリエ級数展開を表す FS つきの矢印 の説明が重複していた (説明済みなのにフーリエ変換の章で再度説明していた) のを修正．

2014.11.03 ほぼ一年ぶりの更新．重要な変更点は以下の通り．
• 13 章で，連続時間の単位ステップ関数 u0 (t) の定義を変更．これまでは (他の多くの教科書と同様に) u0 (0) = 1 としていたのだが，そうすると 13.1 節の冒頭で微分方程式を定数変化法で解いてみせるところで初期値が整合しなくなってしまう (入力としてデルタ関数を取るという微妙なケースを考えているから，こういう微妙な問題が顕在化している)．この点は，当研究室修了生の森田賢氏にご指摘頂いた．というわけで，t = 0 のときの u0 (t) の値は未定義であり，初期値というのは t = 0 への左からの極限であるという立場を取ることにした．

• 4 章の冒頭で，離散時間信号とは「時間軸上で飛び飛びの時刻にしか値を持たない」ものだとやる夫に説明させているが，その飛び飛びというのが「等間隔で飛び飛び」でなくてはならないことをやらない夫にフォローさせることにした．というのは，某掲示板の某スレッド で >>73 のような疑問を見かけてしまったからである．4.3 節で述べているように cos 2n は周期的ではな
く，その周波数スペクトルは (飛び飛びとも言えるかもしれないが，等間隔ではないので) 離散的ではない．この点の矛盾というか曖昧さに気づいた >>73 氏は鋭いなあと思う反面，なんだか
おかしな回答に引っ張られて >>81 のような誤った結論にたどり着いているのが残念であり，その原因を作ってしまったことを反省したい．

• (あまり重要でもないが) 付録 B のバタワースフィルタの理論で出てくる Ωs (阻止域の周波数の下限) は，サンプリング周波数との混同を避けるため ΩL に変更．
2013.11.02 線形時不変システムとたたみこみについて，連続時間の場合の説明を追加した．また，以前の版では巡回たたみこみ (周期たたみこみ) を表すために普通のたたみこみとは違う記号を導入していたのだけど，結局最後まで使わなかったので削除 (正確には，だいぶ前に削除していたのだが一部残骸が残っていた．今回でおそらく完全に削除)．

2013.10.27 ずっと気になっていたのだけど，前書き」に章番号がついて実質的な最初の章 (フーリエ級数)が 2 章から始まるのが気持ち悪かったので思い切って変更．これにより過去の版とは章番号が 1 個ず
つずれることになった．過去の更新履歴に書かれている章番号もずれたままなのでご注意ください．
ついでに他にも細々と修正．特に図の見た目 (色使いとか) をいろいろ更新．

2013.10.5 いろいろまとめて更新．大きなものは以下の通り．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

8• バタワースフィルタの理論を付録として追加．この点が完全に天下りだったのを解消．
• 高速フーリエ変換の説明を付録として追加するかしないかずっと迷っていたのだが，追加しないことにした．やはり月並みな説明以上のことを書けそうにない．7 章で「そのうち話す」的なことを書いていた部分を削除．

• 9 章: たたみこみと積の関係の連続時間版の導出も書いておくことにした．ラプラス変換目当て
で読もうとする方もいるようなので，そのような場合は，フーリエ級数 → フーリエ変換 → フー
リエ変換の性質 (特にたたみこみ) → ラプラス変換，と進めば話は一応つながっている，はず．

• 14 章: 連続時間の単位ステップ関数の場合分けは，t = 0 は 1 の方に入れる方が一般的なようなので，そちらに修正．

2013.05.11 いくつか説明表現や字句の修正をしたほか，以下のミスを訂正．
• 4 章: 「δ(t) をフーリエ変換したら e−jΩt1 になる」等の δ(t) はもちろん「δ(t − t1 )」の誤り．
• 式 (4.44)〜(4.45) の説明図の T1 は t1 の誤り．
2012.08.04 以下の図のミスを訂正．
• 7 章: 低周波数と高周波数の帯域の説明図で，−3π → −π ，−π → π に修正．
• 14 章: 部分分数展開に対応するブロック図でラベル Yi の位置が正しくなかった (重み wi をつけた後になっていた) のを修正．
• 17 章: バタワースフィルタの振幅特性の図で ω を Ω に，rad を rad/s に修正．
ついでに (最近こればっかり)，HTML 版の数式番号等のリンクにマウスポインタを乗せたときに，リンク先の数式等がポップアップするようにしてみた．
…というような説明をここに書いていても誰も読んでいない気がするので，トップページにもう少し情報を集約してみることにした．

2012.07.15 以下の明らかなミスの他，いくつかの箇所で表現を修正．
• 16 章: 「つまり x[n] = cos 2πn とかを入力すると出力は 0 になる」 → cos 2π
5 n に修正．(±2πn/5と ±4πn/5 のどれでもよい)• 17 章: バタワースフィルタの定義式で k の範囲がずれていたのを修正．
ついでに (どっちがついでだかわからないが)，「アスキーアートがない時点で全く読む気が起きない」という読者へのささやかな対応として，やる夫とやらない夫をそれぞれアイコンで置き換える機能を追加．ページ上部の「アイコンを表示する」をクリックしてください．まあ機械的に置き換えているだけで表情とかは全部同じなので，意味があるかはわかりませんが．アイコンはこちらのサイトから頂きました．

2012.07.13 誤字・脱字の類をいくつか修正．本年度の講義が進行中 (もう終盤) ですが，受講生から指摘を頂いた脱字も修正しています．ありがとうございました．
それに加えて，ずっと懸案だった付録「伝達関数の部分分数展開」を公開．ラプラス変換や z 変換の章で省略した事項の補足説明になります．

2012.01.22 文章内の相互参照リンクを設けてみた．
「前に出てきたあの話と同じ」的な部分がわかりにく
いとの声を頂いたためですが，多少でも緩和できたかどうか．ざっと見直して気づいたところに挿入しただけなので，まだ足りないとは思いますが．
相互参照するに当たっていくつかの箇所で表現を調整したほか，その過程で気づいた以下の各箇所も修正:
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

9• 4.4 節: 離散的にしか値を持たない連続信号の積分についての説明を微修正．リーマン積分では定義できないと読み取られる恐れがあったので回避する．(もともとリーマン積分とは書いていないので間違いではないのですが)• 7.6 節: 「マトリックス状に表すとこうなる」と書いておきながら図を入れ忘れていたので追加．
(半年以上前に自分で描いた図だが…これはわかりやすいのか?)• 14.4 節: 積分と総和を交換するところが，何かを誤魔化している風の言い回しだったが，別に何の問題もないので修正．

• 14.5 節: 極が複素数の場合の説明を追加．最後の「フーリエ変換のまま s = jΩ と置いちゃダメなのか?」のところも説明を追加．伝達関数の分解図で H2 (s) 等がなぜか H2 (n) 等になっていたのを修正．

2012.01.16 3 章: 「k ≤ 0 の Fk だけわかれば」→「k ≥ 0 の Fk だけわかれば」と，10 章の式 (10.8)
が全く無意味なものになっていた (おそらく作業時のコピー・ペーストミス) のを修正 (以上のミス
は Takayoshi Kawada (@takkaw) 様にご指摘頂きました)．また，1.2 節として各章の執筆意図説明を追加．

2011.08.18 17 章「ディジタルフィルタの設計」を公開．一応これで当初予定していた内容は一通り書いたことになるので，PDF 版も公開 (トップページ先頭にリンクあり)．その他以下のしょうもないミスを修正:• 11 章: 「GΩs /2,Ωs /2 (Ω) のフーリエ変換」→「G−Ωs /2,Ωs /2 (Ω) の逆フーリエ変換」• 14 章: 「a − c < 1」 → 「a − c < 0」
• 15 章:「基本的にはどういうことだが」→「基本的にはそういうことだが」，「離散時間フーリエ変換を ejω と書く場合がある」→「離散時間フーリエ変換を X(ejω ) と書く場合がある」

2011.08.04 16 章「ディジタルフィルタの解析」を公開．
2011.07.25 15 章「z 変換」を公開．14 章のラプラス変換表の誤りを訂正 (aF (s) + bF (s) はもちろんaF (s) + bG(s) の誤記でした)．ついでに 15 章のまとめとの対応を取るため，14 章のまとめに「時間微分 → s 倍」の関係を追加．

2011.07.16 14 章「ラプラス変換」を公開．6 章の最後で F (ejω ) や F (jΩ) の表記についての言及を減らして，後にラプラス変換や z 変換が出てきたところで説明することにする．

2011.07.09 13 章「ディジタルフィルタの基礎」を公開．
2011.07.08 12 章「スペクトル解析と窓関数」を公開．
2011.07.03 11 章「サンプリング定理)」を公開．HTML 版の体裁を (例えば章番号を表示するなど) 微調
整．
「HTML 版の」ということは PDF 版も一応の用意はあるということなのですが，需要はあるのでしょうか．

2011.06.23 10 章「フーリエ変換の性質 (3)」を公開．
2011.06.16 8 章「フーリエ変換の性質 (1)」と 9 章「フーリエ変換の性質 (2)」を公開．
2011.06.03 1 章「前置き」の typo を修正．
「ディジタル信号処理は院試の範囲である」→「ディジタル信
号処理は院試の範囲外である」…こ，これはひどい．(院試の出題範囲については，必ず公式情報を確認してください)2011.05.27 7 章「離散フーリエ変換」までを公開．
2011.05.20 4 章「フーリエ変換」までをとりあえず公開．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

10

第 1 章 フーリエ級数
1.1

信号の分解

やる夫 そもそもフーリエ変換の意味がわからんお．数学の試験の前に公式と計算のしかただけは覚えたけ
ど，何をやってるのかさっぱりだお．
やらない夫 お前，そこからかよ…．先が長過ぎだろ，常識的に考えて…
やる夫 だいたいが「変換」って何を何に変換するんだお．
やらない夫 まあ確かにそこは，いきなり「変換」と考えるとわかりにくいかも知らんな．というか，たぶん数学の授業でもちゃんと順を追って説明してくれたと思うんだが…．
やる夫 やる夫が真面目に聞いてるわけないお．
やらない夫 だろうな．…そう，まずは「変換」じゃなくて「分解」だと考えるのがわかりやすい．信号を複数の成分に分解するのがフーリエ変換だ．
やる夫 信号…，分解…
やらない夫 ダメか．じゃあ一つずつ片付けていこう．まず「信号」だが，これは意外と真面目に定義するのは難しい．だから，とりあえず「時間の関数」のことだと思ってくれればいい．時間 t とともに変化する量を考えて，それを t の関数で表す．数式で書くなら例えば f (t) だな．具体例としては，音波でもいいし，気温変化でもいいし，株価でもいい．
やる夫 なんだ，それなら最初から時間の関数と言って欲しいお．
やらない夫 いや，本当は時間の関数とは限らないんだ．空間座標 x とともに変化する量 f (x) を考える場
合もある．バーコードなんかがそうだ．2 次元の空間座標とともに変化する f (x, y) を考える場合もあって，画像がまさにそれだ．動画像の場合は，画像が時間とともに変化するから f (x, y, t) になる．
これらはどれも「信号処理」の対象にすることができる．
やる夫 …何か急に話の難易度が上がった気がするお．
やらない夫 だな．だから，多次元の場合を最初から考えると大変なので，まずは 1 次元の場合だけ考えようというわけだ，そのときに t の関数と考えても，x の関数と考えても，数学的にはどちらでも全く同じことなんだが，とりあえず時間の関数 f (t) で考えることにしましょう，ということだ．実際，信号処理分野の用語は，時間関数で考える方が理解しやすいようにできている．特に「音波」だと考えておくと，後々出てくるいろいろな概念がイメージしやすいと思う．
やる夫 よくわからんけど，話が簡単になる方向なら大歓迎だお．
やらない夫 じゃあよしとするか．次は「分解」だ．これはつまり，信号を「複数の三角関数の和」として
表そうということだ．複雑な形をしているかも知れない関数を，より単純なものに分解するんだな．
三角関数はわかるな?
やる夫 馬鹿にするなお! sin とか cos くらいわかるお．こう見えても高校生までは優等生だったお!

第1章

11

フーリエ級数やらない夫 与えられた信号を，例えば 10 Hz，20 Hz，30 Hz … といったいろんな周波数の三角関数の和で表すわけだ．このことを，10 Hz，20 Hz，30 Hz …の周波数成分に分解するともいう．
やる夫 分解して何がうれしいのかお?
やらない夫 複雑なものも，単純な成分に分解できれば理解しやすくなるし，逆に，構成成分がわかれば，元の信号を人工的に合成する道もひらけるってもんだろ．あとは要らないものを取り除いたりとかにも使えるわけだ．
やる夫 ふーん，そんなもんかお．
やらない夫 三角関数で表される波，つまり正弦波とかサイン波とか呼ばれるやつだが，音波だとするとどんな音になるかわかるか?
やる夫 それは高校の物理で習ったお．音叉を鳴らしたときの音がサイン波に近いんだお!
やらない夫 そうだな．他には，117 に電話して聞ける時報の音，あれがサイン波だ．ポッ，ポッ，ポッ，
ポーンていう，短いポッが 440 Hz で，長いポーンが 880 Hz だ．あんな味もそっけもない音の足し合わせで，ピアノの音もバイオリンの音もギターの音も作り出せると思うと，結構すごいことだと思わないか?
やる夫 それは確かにそうかも…．ということは，音叉をものすごい数並べて，それぞれ丁度よい強さで叩けば，ピアノとかバイオリンに聴こえるってことかお?
やらない夫 うーん，まあ理論上はそういうことだが，叩く強さだけじゃなく，叩くタイミングもシビアに調整しなくちゃいけないので，現実には難しいだろうな．仮にぴったり揃ったとしても，音叉とピア
ノ・バイオリンじゃ，音量変化のしかたがだいぶ違うから，それっぽく聴こえるようにするのは難し
いはずだ．
やる夫 なんだ，つまらんお．

1.2

フーリエ級数やる夫 で，その丁度良い強さとか丁度良いタイミングってのはどうやって決めればいいんだお?
やらない夫 ようやく本題だな．まずは，分解する信号として周期的な関数 f (t) を考えよう．周期的でない場合への拡張はそれからだ．周期を T0 とする．周期的なので，具体的に計算する必要があるときは−T0 /2 から T0 /2 までの範囲だけ考えることにしよう．他の区間も同じものを繰り返してるだけだか
らな．

f(t)
t
T0

–T0/2

T0/2

やる夫 うっ，なんか急に数学っぽい話になったお…

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

12

フーリエ級数やらない夫 数学なんだからしかたないだろ．先に進むぞ．で，これが sin と cos の足し合わせで構成されているとする．

f (t) = a0 +





∞ 

2πk
2πk
t + bk sintak cos
T0
T0

(1.1)

k=1

ついて来てるか?
やる夫 …なんかややこしい sin と cos をたくさん足しているのはわかるお．
やらない夫 そんなにややこしくはないんだ．順番に見ていけばいい．まず最初の a0 は定数だ．
「三角関数の足し合わせ」のはずなのに定数があるのはおかしいと思うかも知れないが，これだって周波数が 0 の三角関数だと思ってしまえばいい．元の信号のうち振動しない成分なので，直流成分と呼んだりする．
やる夫 まあ，そこは OK だお．その後の cos とか sin とかの括弧の中身が萎えるお．
やらない夫 まず k = 1 の場合を考えてみよう．cos の中も，sin の中も，角周波数が 2π/T0 だ．時刻が T0だけ経過したら位相が 2π 進むんだから，要するに元の信号の 1 周期でちょうど 1 周するような cos
や sin ってことだろ．

f(t)
t
a1
b1
T0/2

–T0/2
やる夫 あー，なるほど．k = 2 のときは 2 周するわけだお．

f(t)
t
a2
b2
–T0/2

T0/2

やらない夫 そうだ．k が増えていくについて，より速く振動するサイン波になる．高周波になるんだな．
ただし，ここで足し合わされている周波数成分は，「k が自然数のもの」だけだということに注意して
ほしい．
やる夫 ?
やらない夫 k = 1.5 とか，k = 4.3 とか，そういう半端なものは足し合わせてないってことだ．
やる夫 あー，つまり，元の信号の 1 周期で，ちょうど 2 周とか 3 周とか 15 周とか，何周かして元の位相に戻るようなサイン波しか足してないってことかお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

13

フーリエ級数やらない夫 そうだな．ちょっと記号を定義しておこう．この k = 1 の場合の角周波数を基本角周波数と呼んで Ω0 = 2π/T0 と表す．ついでに，さっきから出てきている T0 の方は基本周期と呼んだりする．
「周期」「周波数」「角周波数」の間の関係は大丈夫か?
やる夫 えーと，周期 [s] と周波数 [Hz] は互いに逆数の関係だお．角周波数 [rad/s] は，周波数を 2π 倍したものだお．だから確かに Ω0 = 2π/T0 になるお!
やらない夫 いいだろう．基本角周波数 Ω0 を使って書くと，式 (1.1) は

f (t) = a0 +∞


{ak cos (Ω0 kt) + bk sin (Ω0 kt)}

(1.2)

k=1

と表せる．
やる夫 なんだ，こっちの方がわかりやすいお．
やらない夫 そう思うならこっちで考えればいい．どっちにしても同じことだ．大事なのは，この式では f (t)を，基本周波数の自然数倍の周波数をもった sin や cos だけ (と直流成分) の足し合わせで表現しているってことだ．

f(t)

t

a0

k=0

a1 cos Ω0t
b1 sin Ω0t

k=1

a2 cos 2Ω0t
b2 sin 2Ω0t
–T0/2

k=2

T0/2

基本周期が 0.01 s なら，基本周波数は 100 Hz (基本角周波数 = 2π × 100 [rad/s]) なので，f (t) は直流成分と，100 Hz の成分，200 Hz の成分，300 Hz の成分…，に分解されることになる．
やる夫 102 Hz とか，250 Hz の成分は出てこないってことかお．
やらない夫 そういうことだ．想像してみればまあ自然なことだと思うぞ．元の信号が 0.01 s 周期で周期的なんだから，それを組み立てるサイン波も，0.01 s の区間内に整数個の周期がすっぽり収まるようなものじゃないと困るだろ，常識的に考えて…．
やる夫 確かに，そうなってないと足し合わせて周期的にならないような気がするお．
やらない夫 だから，分解できるとしたらこういう形にならざるを得ない，ってのはまあ納得できると思う．
残る問題は，本当にどんな周期関数でもこの形に分解できるんだろうか，ということだ．
やる夫 なるほど．でもこの話の流れならできるに決まってるお．
やらない夫 残念，できない．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

14

フーリエ級数やる夫 どういうことだお! できないことを延々と聞かされてきたのかお!! 今さらできないとか言われても困るお!
やらない夫 まあ待て落ち着け．
「どんな周期関数でもできるわけではない」という意味だ．実用上，信号処理の対象としたくなるようなものはほとんど分解できると思って大丈夫だ．もう少し正確にいうと，
式 (1.1) の両辺を = で結ぶことの意味をどのように定義するかによって，分解できるかできないかの条件が変わってくる．そのあたりの詳しい話を知りたければ，数学の教科書をあたって欲しい．
やる夫 何言ってるかわからんお，教科書読むくらいなら納得したことにするお．実用上十分ならそれでいいお．
やらない夫 本当はそういう態度ではいかんのだが…まあ先に進もう．こうやって，式 (1.1) のように表すことを，f (t) をフーリエ級数に展開するという．そのときの係数 ak や bk をフーリエ係数と呼ぶ．さっきの話でいうと，このフーリエ係数によってそれぞれの音叉を叩く強さとかタイミングが決まるわ
けだ．

1.3

フーリエ係数やる夫 なるほど．…ってあれ? まだそのフーリエ係数の求め方を聞いてないお．
やらない夫 それがこれからの話だ．
やる夫 やらない夫は話が長いお．
やらない夫 誰のために話してると思ってんだ! まあいい．基本的なアイディアはこういうことだ．例えば

a3 の値を求めたいとしよう．式 (1.1) の両辺を式変形していって，a3 以外のすべてのフーリエ係数
がうまいこと消えてくれるようにしてやる．そうすればあとは a3 についての方程式を解いてやればいいわけだ．
やる夫 そんなうまくいくのかお．
やらない夫 じゃあまず a0 から考えるか．この場合やることは割とシンプルだ．両辺を −T0 /2 から T0 /2
まで単純に積分しよう．





 T0 /2 
∞ 

2πk
2πk
f (t)dt =t + bk sin
t
dt
a0 +
ak cosT0
T0−T0 /2−T0 /2

 T0 /2

(1.3)

k=1

で，ちょっと細かいことに目をつぶって，右辺の積分と総和を入れ替え可能だとしようか．するとこ
うなる．

 T0 /2

 T0 /2f (t)dt =−T0 /2−T0 /2a0 dt +


∞
T0 /2

k=1

−T0 /2


ak cos T0 /22πk
2πkt dt +
bk sint dt
T0
T0−T0 /2(1.4)

やる夫 う，なんかひどいことになってきたお．
やらない夫 見た目はごついけど，やってることは単純だ．積分を，級数の各項の中でするようにしただけだな．で，その各項のうち，a0 以外はきれいさっぱり 0 になって消えるんだが，わかるか?
やる夫 ?

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

15

フーリエ級数やらない夫 右辺に出てくる cos や sin はどれも，いま積分している −T0 /2 から T0 /2 の範囲にちょうど整数個の周期がすっぽりおさまっているんだったろ? だからこの範囲で積分すると全部 0 になる．式で書くと，任意の自然数 m についてこうなる．疑うんなら計算してみるといい．

 T0 /22πmcos(t)dt =T0−T0 /2

 T0 /2sin(−T0 /22πmt)dt = 0
T0(1.5)

やる夫 疑いませんお．
やらない夫 てことで，a0 の項だけ残るわけだ．

 T0 /2

 T0 /2f (t)dt =−T0 /2−T0 /2a0 dt = T0 a0(1.6)

あとはこれを a0 について解けばいい．

1
a0 =
T0

 T0 /2f (t)dt(1.7)−T0 /2やる夫 あ，a0 が求まったお．つまり元の信号を 1 周期分だけ積分して，それを周期の長さで割ればいいのかお．
やらない夫 そういうことだ．要するに元の信号の時間平均値が a0 だ．sin や cos の足し合わせだけじゃ，
どう足掻いても平均 0 の信号しか作り出せないから，その分を定数項 a0 として足してやっているわ
けだ．
「直流成分」と呼ばれる由縁だ．
やる夫 その他のフーリエ係数も同じように計算すればいいのかお? でも今みたいに都合よくいく気がしな
いお．
やらない夫 考え方は同じだ．でも使うのは式 (1.5) ではなくて，こんなのだ．任意の自然数 m，n の組について T0 /2
cos(

2πm
2πn
T0
δm,n
t) cos(t)dt =
T0
T0
2

(1.8)

sin(

2πm
2πn
T0
δm,n
t) sin(t)dt =
T0
T0
2

(1.9)

2πm
2πn
t) sin(t)dt = 0T0
T0(1.10)−T0 /2

 T0 /2−T0 /2

 T0 /2cos(−T0 /2

やる夫 なんかまた大軍が押し寄せてきたお．
やらない夫 お前はいちいち大げさなんだよ．まず記号の説明だが， δm,n は，m = n のときに 1，それ以外の場合に 0 になることを表す．
やる夫 知ってるお．クロネッカーのデルタだお．
やらない夫 なので結局これらの式が言っていることは，ある区間の中にちょうど整数個の周期がすっぽり収まるような cos とか sin を 2 種類持ってきて，両方をかけあわせてからその区間で積分しても，ほとんどの場合は 0 になって消える; 消えないのは，全く同じもの同士をかけあわせた場合だけだ，ってことだ．
やる夫 ええと，sin 同士，cos 同士の場合は同じ周波数のものどうしの場合以外は 0 になって，sin と cosをかけあわせた場合はどんな場合でも 0 になる．確かにそうなってるお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

16

フーリエ級数やらない夫 直観的には…こう考えようか．全く同じもの同士をかけあわせた場合は常に正の値になるから，積分して 0 にならないのは納得できるだろう．それ以外の組み合わせでは，かけあわせたときに正の部分と負の部分がちょうど同じ面積になるように生じて，積分したら 0 になる．まあ気になるならこれも自分で計算してみるといい．高校数学の範囲で計算できるからな．
やる夫 ふーん，まあ，気が向いたらやっとくお．
やらない夫 これらの式 (1.5) と式 (1.8) をあわせて三角関数の直交性と呼ぶ．詳しい話はそのうち触れた
いと思うが，いま何度もやった 2 つの関数を「かけてから積分する」という操作は，2 つの関数の内積を計算していることになるんだ．異なる三角関数は内積がゼロ，つまり直交していることを意味するから直交性と呼ぶ．
やる夫 何をいってるかわからんお．内積はベクトルに対して計算するものだお．関数の内積って意味わからんお．直交しているってのもわからんお．角度はどうなってんだお．
やらない夫 まあそう思うのもしかたないかも知れないが，関数をベクトルとみなす考え方なんだと思ってくれ．イメージとしては，そうだな，例えば [f1 , f2 , f3 ] と [g1 , g2 , g3 ] という 2 つの 3 次元ベクトルがあったら，要素ごとにかけて総和を取って

3
i=1 fi gi とするだろ．

やる夫 それはわかるお．
やらない夫 じゃあ関数を，その関数値がずらーっと並んだものを要素とする無限次元のベクトルだと思えば，総和が積分になって「かけて積分」するのが内積の計算方法になりそうな気がしないか?
3ḟඖ
↓㝈ḟඖ

f1 f2 f3

f(t)g1 g2 g3

g(t)
a

b

やる夫 えっ…，気がしないかと言われるとそういう気がしないでもないお．でもさすがに騙されている気がするお．
やらない夫 うん，まあ正直騙しているに近い．ただ，厳密に数学的な議論をしても同じ結論にたどり着く
ので，とりあえずそういうもんだと思ってくれ．
「直交する」ってのも，「内積がゼロになる」ことをそう呼ぶんだとだけ覚えておけばいい．
やる夫 ふーん，ま，いいお．で，これをどうやって使うんだお?
やらない夫 さっきと同じで，いま欲しいフーリエ係数だけを残して他が全部消えてくれるようにすればいい．例えば a3 が欲しいなら，a3 は cos

2π·3
T0 t

の項の係数なんだから，式 (1.1) の両辺に cos

をかけてから積分すればいい．






 T0 /2  T0 /2∞ 
2π · 32πk
2πkf (t) cost dt =
t + bk sinta0 +ak cosT0
T0
T0−T0 /2−T0 /2
k=1

2π·3
T0 t


cos


2π · 3t dt
T0(1.11)
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

17

フーリエ級数

さっきと同じように右辺の積分と総和を入れ替えると，右辺は a3 の項以外がすべて消えて T0 /2f (t) cos
−T0 /2 T0 /2
2π · 32π · 32π · 3a3 T 0t dt =
a3 cost cos
t dt =T0TT
200−T0 /2(1.12)となる．
やる夫 ややこしいけど，さっきとだいたい同じだからわかるお．あとは a3 について解けばいいんだお．

2
a3 =
T0



 T0 /2f (t) cos
−T0 /2
2π · 3t dt
T0(1.13)

やらない夫 そうだな．他の係数も全く同じだ．さっきの a0 も一緒にまとめると，フーリエ係数は以下の式で与えられることになる．

a0 =

1
T0

 T0 /2f (t)dt−T0 /2(1.14)


2πkf (t) cost dt (k = 1, 2, 3, · · · )T0−T0 /2
 T0 /2
2πk
2f (t) sint dt (k = 1, 2, 3, · · · )bk =T0 −T0 /2
T0

2
ak =
T0

 T0 /2



結局，f (t) をフーリエ級数に展開するときは，cos
ものを積分したものになるし，sin

2πk
T0 t

2πk
T0 t

(1.15)(1.16)の項の係数は f (t) に cosの項の係数は f (t) に sin

2πk
T0 t

2πk
T0 t

をかけた

をかけたものを積分したものになる．定数項はそのまま積分したものだったな．
やる夫 やっとたどり着いたお．感慨深いお．
やらない夫 じゃあ，ここまでの話をまとめるか．
• 周期 T0 の周期関数 f (t) (の実用上ほとんど) は，式 (1.1) のような三角関数の無限和で表すことができる．これを f (t) のフーリエ級数展開と呼ぶ．
• ここに出てくる各係数は式 (1.14) で与えられて，フーリエ係数と呼ばれる．
• 足し合わされる三角関数は，元の関数 f (t) の周期，その 1/2 の周期，1/3 の周期，1/4 の

周期…を持つものである．それ以外の周波数成分は存在しない．

やる夫 一個質問していいかお?
やらない夫 おお，何だ．
やる夫 数学の授業で使った教科書ではフーリエ級数の直流成分の項が a0 じゃなくて a0 /2 になってた気がするお．教科書が間違ってたのかお?
やらない夫 いや間違ってはいない．式 (1.14) の 3 つの式をもう一回見てくれ．もし a0 を 2 倍の値にしてよければ，1 個めの式は 2 個めの式に含めてしまえるのがわかるか?
やる夫 ええと，2 個めの式で k = 0 としたら，cos は 1 になるから，確かに 1 個めの式の 2 倍の値になるお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08



第1章

18

フーリエ級数やらない夫 だから，この 2 つの式を一緒にまとめてしまう方が美しい，と思う人が教科書を書くと，a0 を今日話した定義の 2 倍にしてしまって，代わりに式 (1.1) の直流成分の項の方を 1/2 倍して表すことになるんだ．どっちも中身は変わらない．フーリエ級数展開の式をきれいに見せたいか，フーリエ係数の計算式をきれいに見せたいか，それだけの違いだな．
やる夫 面倒くさいから統一して欲しいお．

1.4

積分と総和の交換

やらない夫 一応これでフーリエ級数の最低限の話は終わったんだが，もう少し補足説明しておきたいことがある．
やる夫 気分がいいから聞いてやってもいいお．
やらない夫 なんで上から目線なんだよ…．さっきのフーリエ係数を導出したところで，ちょっと目をつぶった点があったろ．
やる夫 あー，積分と総和の順序を入れ替えたところだお．
やらない夫 そうだ．無限級数だから，この入れ替えは常にできるわけじゃない．
やる夫 でもどうせ「実用上は多くの関数で可能」とかいう話なんだお? だったらやる夫は気にしないお．
やらない夫 いや，実はここはそういう風には済ませないんだ．無限級数を積分するときに積分と総和の入れ替えが可能かどうかを判定するためには，その級数がどんな項から構成されているかわからないとダメだろ．
やる夫 そりゃそうだお．
やらない夫 でも今の話は，フーリエ係数を求めるための議論だったから，その級数の各項がどんなものか
はまだわかっていないわけだろ．
やる夫 そう…だお．
やらない夫 各項がどんなものかわかるためには，積分と総和を入れ替えて計算する必要があったわけだろ．
やる夫 …だお．
やらない夫 積分と総和の入れ替えが可能かどうかを判定するためには，その級数がどんな項から構成されているかわからないとダメだろ．
やる夫 まずいお! 無限ループ恐いお!!
やらない夫 結局，今日の議論は「フーリエ係数を導出する」ための議論とはなり得ないんだ．こう考えて欲しい．仮に式 (1.1) のように f (t) が表せて，かつ右辺の級数をそのまま積分したり，sin や cos をかけてから積分したりしたときに，積分と総和を入れ替えられるような場合があったとしよう．そのときはフーリエ係数は式 (1.14) の形で与えられるわけだ．
やる夫 そこまではわかるお．今まで聞いてきた話そのものだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第1章

19

フーリエ級数やらない夫 ところが，実際に何か具体的な f (t) が与えられたときには，そのような処理をしてよいかど
うかはわからない．でも，ともかく式 (1.14) のように計算される係数を使って，式 (1.1) の右辺で表されるような三角関数の無限和を形式的に考えてしまうんだ．それが収束するのかとか，収束した結果 f (t) に一致するのかとかはひとまず置いておく．そういう風に「ともかく，形式的に，f (t) を級
数っぽく表示してみましたよ」という状態を

f (t) ∼ a0 +





∞ 

2πk
2πk
t + bk sintak cosT0
T0(1.17)

k=1

なんて書くことが多い．
やる夫 なんだお．= が ∼ になっただけだお．
やらない夫 「イコールかどうかは分からんよ，とにかくこう書いただけだよ」という意味がこめられていると思えばいい．こうやって各項の形をとにもかくにも定めてやれば，あとはこれが収束するのかとか，収束した結果が f (t) に一致するのかとかいう議論に進むことができるわけだ．そういう議論は省略するが，言ったとおり「実用上ほとんどの f (t) では」「十分に実用的な意味で」収束して一致すると考えて構わない．
やる夫 なんか騙された気がするお．
やらない夫 まあそう言うな．厳密な数学に踏み込まずに，可能な限り正確に説明しようとすると，こんな説明がぎりぎりの線だ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

20

第 2 章 複素指数関数型のフーリエ級数
2.1

sin と cos を重ねることの意味

やる夫 前回，周期的な信号をたくさんの三角関数の足し合わせで表す方法を聞いたんだお．例えば 10 ms
周期の信号だったら，0 Hz，100 Hz，200 Hz，300 Hz …のサイン波を適当な割合で重ね合わせれば合成できたんだお．
やらない夫 おお，わかってるじゃないか．
やる夫 よくわからないのは，cos と sin の両方が必要なことの意味だお．たくさんの音叉を鳴らして元の音を合成しようとしたら，100 Hz の周波数成分に関しては，100 Hz の cos の音叉と，100 Hz の sinの音叉が両方必要ってことかお? cos の音叉とか sin の音叉なんて聞いたことないお．
やらない夫 そのたくさんの音叉の例が現実的じゃないのは前回話した通りなんだが，まあ，いいか．じゃ
あ聞くが，sin と cos の違いは何だ?
やる夫 ええと，どっちも関数の形は同じだお．でも，位相がちょうど 1/4 周期分だけずれてるお．
やらない夫 そうだな．例えば，音叉ってのは叩いた瞬間を時刻 0 として，sin 関数に従って振動するとしようか．まあ実際の音叉はそんなに都合よくないだろうが，例えばの話だ．で，同じ周波数の音叉をもう 1 個用意して，1/4 周期だけタイミングをずらして叩くと cos 関数の振動を作り出せることになる．
やる夫 100 Hz の場合だと，…ちょうど 2.5 ms ずらすのかお．人間業じゃないお．
やらない夫 同じことを 200 Hz，300 Hz … の音叉についてもやるわけだ．各周波数の音叉を 2 個ずつ用意して，一方の組は sin 関数用ということにして一斉に叩く．もう一方は cos 関数用で 1/4 周期ずらして叩くわけだが，それぞれ周期が違うわけだからずらすタイミングもそれぞれ違う．200 Hz，300

Hz，400 Hz … の場合はそれぞれ 1.25 ms，0.833 ms，0.625 ms …ずつずらすことになるな．
やる夫 現実的じゃないと言われた意味がよくわかったお．
やらない夫 現実的でないのは確かだが，思考実験としては悪くない．今，各周波数について 2 個ずつの音叉を考えただろう．これを 1 個ずつにまとめられるのはわかるか?
やる夫 何を言ってるかわからんお．
やらない夫 フーリエ級数の中からある 1 個の周波数の成分だけ抜き出すと




2πk
2πk
ak cost + bk sin
t
T0
T0

(2.1)

なわけだが，これを 1 個の sin 関数で表せる．高校で習ったはずだ．
やる夫 習ったかもしれないけど，公式なんか全部覚えてないお．覚えているのは加法定理くらいのもん
だお．

第2章

21

複素指数関数型のフーリエ級数

やらない夫 加法定理だけ覚えていれば導けるぞ．適当な θk に対して，加法定理から






2πk
2πk
2πk
sin θk cos
t + cos θk sin
t = sin θk +
t
T0
T0
T0

(2.2)

と書けるだろ．
やる夫 書けるお．わかるお．
やらない夫 さっきの式の ak と bk を，この式の左辺の sin θk と cos θk に置き換えてやればいいってのが基本的な考え方だ．ただし sin2 θk + cos2 θk = 1 を満たさないといけないので，そうなるようにでくくってやる．




2πk
2πk
ak cost + bk sin
t
T0
T0




2πk
ak
cos
t
+
= a2k + b2k
T0
a2k + b2k

a2k + b2k

(2.3)
bk


sin
2

a2k + bk

2πk
t
T0


(2.4)

やる夫 なんかややこしい式に見えるけど，実はくくってるだけだお．大丈夫だお．

やらない夫 すると， √ b2k 2 , √ a2k 2 は単位円上の点になるから，θk = tan−1 abkk と決めてやれば加法
ak +bkak +bk定理の左辺に持ち込める．つまり 式 (2.4) の右辺 から続いて，






2πk
2πk
2
2
· · · = ak + bk sin θk cos
t + cos θk sin
t
T0
T0



2πk
t
= a2k + b2k sin θk +
T0

(2.5)
(2.6)

と書けるわけだ．

y
1
θk

1 x

やる夫 同じ周波数の cos と sin の和が，1 個の sin で書けたわけだお．

+=やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

22

複素指数関数型のフーリエ級数

やらない夫 cos の方の音叉は ak の強さで，sin の方は bk の強さで叩く必要があったわけだが，それを 1個の音叉で代替できる．ただし，強さは

a2k + b2k で，かつタイミングは位相が θk = tan−1 abkk だけ

ずれるように叩く必要があるわけだ．
やる夫 人間業じゃないのには変わりないお．
やらない夫 そうだな．でもこれで重要なことが理解できる．フーリエ級数展開ってのは，与えられた信号を複数のサイン波に分解することだった．そのとき，各周波数のサイン波は，それぞれ別個の振幅と初期位相を持っている．sin と cos の和として書くのは，その 1 つの表現方法に過ぎない．
やる夫 ということは，もっと直接的に振幅と初期位相をそれぞれ Ak ，θk として，

f (t) =∞



Ak sink=0

2πkt + θkT0

(2.7)

みたいに表してもいいってことかお?
やらない夫 そういうことだ．
やる夫 じゃあ何でそう表さないんだお? こっちの方が直観的にわかりやすい気がするお．
やらない夫 各周波数成分が振幅と位相を持つ，という意味ではこの方がわかりやすいのは確かかもしれな
いな．でも，その sin 関数の中に θk が入ったままの表現だと，数学的にちょっと扱いにくいんだな．
だからあまり使われない．
やる夫 ふーん，残念だお．
やらない夫 ただ，数学的に扱いにくいっていう点では，sin と cos の両方が必要なのも十分に扱いにくいんだ．実は，この点を解決するきれいな表現方法がある．その方法だと「各周波数成分の振幅と位相」
も明示的に表現される．
やる夫 なんだお．圧倒的じゃないかお．
やらない夫 というわけで今日はその話だ．

2.2

複素指数関数型のフーリエ級数

やらない夫 鍵になるのは複素指数関数だ．虚数単位を j で表すことにして，オイラーの公式と呼ばれるこ
んな式，これは知ってるだろ．

ejθ = cos θ + j sin θ(2.8)

やる夫 知ってるお．でもどうしてそうなるかは理解してないお．
やらない夫 どうしてというか，まあ，これは公式というよりは定義だと考える方がいい．実数上でしか定義されていなかった指数関数の定義域を複素数に広げる際にこのように定義するってことだ．ただし，もちろん好き勝手に定義したわけじゃなくて，指数関数の持ついろんな性質が保たれるようにできている．
やる夫 どういう性質だお?

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

23

複素指数関数型のフーリエ級数

やらない夫 例えば，

ex+y = ex ey

(2.9)

d ax
e = aeaxdx(2.10)とかとかだな．試しに計算してみるといい．ともかく理解しておいてほしいのは，ejθ は複素平面の単位
円上の偏角 θ の位置に対応するってことだ．

Imj

exp(jθ) = cosθ + j sinθ
θ

Re

1

やる夫 それはオイラーの公式が意味することそのものだから，よくわかるお．
やらない夫 あとは，何らかの複素数に ejθ をかけることの意味だな．もとの数の複素平面上の位置から，原点まわりに偏角 θ だけ反時計回りに回転させることになる．
やる夫 えーと，どういうことだお．
やらない夫 もとの複素数が極座標表示で rejφ だったとするだろ．ただし r は実数だ．そこに ejθ をかけるとrejφ ejθ = rej(φ+θ)(2.11)になる．偏角が θ だけ進むだろ．

Imr exp(j{φ + θ})jr

r exp(jφ)
θ

φ
r

Re

やる夫 ああ，そう言われてみれば当たり前のことだお．同じように，実数 r をかけるということは，偏角はそのままで原点からの距離が r 倍になるということなんだお．
やらない夫 ああ，そのくらいわかっていれば，話を進めるには十分だ．出発点は前回のフーリエ級数の式(1.1) だ．この中の cos と sin を，オイラーの公式を使って複素指数関数に置き換えたいわけだ．どうすればいいかわかるか．
やる夫 ええと，…わかりませんお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

24

複素指数関数型のフーリエ級数

やらない夫 ejθ と e−jθ の両方を考えるといい．

ejθ = cos θ + j sin θ(2.12)e−jθ = cos θ − j sin θ(2.13)

辺々を足せば cos が，引けば sin が複素指数関数だけで表せる．

ejθ + e−jθ2ejθ − e−jθsin θ =
2j

(2.14)cos θ =

(2.15)

やる夫 ああ，見たことあるお．
やらない夫 フーリエ級数の式に代入すると

∞ 
ejΩ0 kt + e−jΩ0 kt
ejΩ0 kt − e−jΩ0 kt+ bk
f (t) = a0 +
ak
2
2j
k=1


∞
 ak − jbk
ak + jbk −jΩ0 kt
ejΩ0 kt +e= a0 +
22(2.16)(2.17)

k=1となる．2π/T0 といちいち書くと大変なので，Ω0 と書いていることに注意してくれ．
やる夫 ええと，同じ複素指数関数の項をまとめたわけだお．
やらない夫 そうだな．この式をよく見てくれ．総和は k が 1 から無限大まで取っているわけだ．総和の中の第 1 項は ejΩ0 kt が k = 1 から無限大まで足し合わされている．第 2 項は e−jΩ0 kt が k = 1 から無限大まで足し合わされているわけだが，これは ejΩ0 kt を k = −1 からマイナス無限大まで足し合わせていると思ってもよいだろう．
やる夫 ちょっと気持ち悪いけど，言ってることはわかるお．
やらない夫 最初の定数項の a0 も，ejΩ0 kt の k = 0 の項だと考えることができる．結局，全部ひっくるめて

f (t) =∞


Fk ejΩ0 kt(2.18)k=−∞のような形で表してよいだろう．これが複素指数関数型のフーリエ級数だ． Fk がこの場合のフーリエ係数になる．
やる夫 ああ，なんか妙にすっきりした式になったお．
やらない夫 そうだな．複素指数関数で表したおかげだ．
やる夫 あれ? 三角関数で表示したときは ak とか bk みたいに小文字で書いていたのに，複素指数関数型のときのフーリエ係数はどうして大文字で書くのかお?
やらない夫 あー，そこは別に大文字で書かなくちゃいけないわけじゃない．むしろ世の中の多くの教科書
だと，小文字で ck とかを使う方が普通だと思う．
やる夫 じゃあ何でそう書かないのかお?
やらない夫 今の時点では別にどう書いてもいいんだが，後から出てくる「フーリエ変換」とかと対比して考えようと思うと，大文字で書いておくのが便利なんだ．もうちょっと詳しくいうと，時間信号の方
を小文字の f ，周波数成分を表す方を同じ文字の大文字 F で表しているところがミソだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

25

複素指数関数型のフーリエ級数

やる夫 ふーん，じゃあ時間信号が x(t) だったら，フーリエ係数は Xk って書くってことかお?
やらない夫 そういうことにしよう．
「フーリエ変換」ではそういう風に書くルールにしている本が多い．フーリエ級数の場合はそういうルールじゃない本が多いんだが，我々は「フーリエ変換」流に統一して書くことにする．

2.3

フーリエ係数の計算やらない夫 残るはフーリエ係数の計算だ．今までの流れで式変形していって ak と bk から計算してもいいんだが，前回と同じ考え方で導いておこうと思う．つまり，前回使った三角関数の直交性: 式 (1.5)・(1.8) の代わりに
 T0 /2−T0 /2∗ejΩ0 mt ejΩ0 nt dt = T0 δm,n(2.19)

を使って，同じ考え方をする．
やる夫 これも直交性なのかお．確かにこれも「かけて積分」しているけど，右側の指数関数についている∗ はなんなんだお?
やらない夫 ∗ は複素共役を取る印だ．つまり，複素平面で実軸に対して対称な位置に動かすんだな．複素指数関数の場合，偏角の符号を逆にしたら共役の位置に移るだろ．だから T0 /2−T0 /2ejΩ0 mt e−jΩ0 nt dt = T0 δm,n(2.20)と書いてもいい．
やる夫 三角関数のときは複素共役なんかとらなかったお．
やらない夫 本当は複素共役を取るのが正しいんだ．複素数ベクトルの内積を計算するときも，片方は複素共役を取っただろ．
やる夫 そ，…そうだったかお．
やらない夫 ああ，もう一度教科書を見てみるといい．で，三角関数のときは，sin や cos は実数だったから，複素共役を取っても何も変わらないので省略しただけだ．
やる夫 ふーん，で，式 (2.19) は本当に成立するのかお．
やらない夫 まあ実際に計算してみるといい．m = n のときは，積分の中身が 1 になるから結果が T0 にな
るのはすぐわかるだろう．m = n のときも真面目に計算するだけだ．積分は実指数関数と全く同じように計算できるからな．そのとき Ω0 = 2π/T0 だったことを忘れないように注意しとこう．

 T0 /2e−T0 /2jΩ0 mt −jΩ0 nte T0 /2
dt =ejΩ0 (m−n)t dt(2.21)−T0 /2

T0 /21
ejΩ0 (m−n)tjΩ0 (m − n)
−T0 /2
1=ejπ(m−n) − e−jπ(m−n)
jΩ0 (m − n)1=(−1)m−n − (−1)m−njΩ0 (m − n)==0(2.22)(2.23)(2.24)(2.25)

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

26

複素指数関数型のフーリエ級数

やる夫 う，最後の指数関数が −1 の累乗に変わるところがわからんお．
やらない夫 複素平面で考えるといい．(m − n) が整数だってことに注意だ．ejπ(m−n) にしろ e−jπ(m−n) にしろ，偏角が π の整数倍なんだから，−1 か 1 にしかならない．どっちも (m − n) が奇数のとき −1
で，偶数のとき 1 だ．

Im

Im

Re

Re

やる夫 なるほど，(m − n) の値が変わると ejπ(m−n) と e−jπ(m−n) は複素平面で逆方向に回転するけど，180 度ずつ回転するから同じことなんだお．
やらない夫 ここまで来ればあとは三角関数のときと同じだ．フーリエ係数 F3 が欲しいなら，その項だけ∗
残るように，式 (2.18) の両辺に ejΩ0 3t ，つまり e−jΩ0 3t をかけて積分すればいい．

 T0 /2f (t)e−jΩ0 3tdt =−T0 /2

 T0 /2  ∞−T0 /2

Fk ejΩ0 kt

e−jΩ0 3t dt(2.26)k=−∞

やる夫 で，同じように積分と総和の順序を入れ替えるんだお．
やらない夫 そうだな．本当は常に入れ替えられるとは限らないんだが…っていう話も，前回の最後 (p. 18)に補足説明したのと同様だ．
 T0 /2
 T0 /2f (t)e−jΩ0 3t dt =F3 ejΩ0 3t e−jΩ0 3t dt = F3 T0−T0 /2(2.27)−T0 /2

結局，フーリエ係数 Fk は，
 T0 /2
1
Fk =f (t)e−jΩ0 kt dt
T0 −T0 /2(2.28)

あるいは同じことだが T0 を使って
 T0 /2
1−j 2πk t
Fk =f (t)e T0 dt
T0 −T0 /2(2.29)と表されることになる．
やる夫 ejΩ0 kt の項の係数を計算するときに，ejΩ0 kt じゃなくて，e−jΩ0 kt をかけて積分しなくてはいけな
いわけだお．三角関数の場合と違うので，間違えそうだお．
やらない夫 あくまで「複素共役をかけて積分する」んだと意識しておくのがいいかもな．まとめよう．


• 周期 T0 の周期関数 f (t) (のうち実用上重要なものの多く) は，式 (2.18) のような複素指数関数の無限和で表すことができる．これを f (t) の複素指数型フーリエ級数展開と呼ぶ．

• ここに出てくる各係数は式 (2.29) で与えられて，フーリエ係数と呼ばれる．
• 足し合わされる複素指数関数は，三角関数のときと同様に元の関数 f (t) の周期，その 1/2の周期，1/3 の周期，1/4 の周期…を持つものである．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

27

複素指数関数型のフーリエ級数

以降，f (t) をフーリエ級数展開して係数 Fk が得られることをFS

f (t) −→ Fk(2.30)と書くことにしよう．FS は Fourier Series (フーリエ級数) の略のつもりだ．あまり標準的な書き方
じゃないんだが，後でフーリエ変換と対比するときとかに使おうと思う．

2.4

フーリエ級数のイメージ

やる夫 前回の sin とか cos を足し合わせるのは何となく想像できたけど，式 (2.18) の ejΩ0 kt を足し合わせるってのがどうもイメージできないんだお．
やらない夫 そもそも ejΩ0 kt 自体がイメージできているかどうかだな．まず確認だが，sin Ω0 kt が，角周波数 Ω0 k で時間 t とともに振動していくのはイメージできるな?
やる夫 できるお．高校では優等生だったって言ったはずだお!
やらない夫 ejΩ0 kt だって同じように角周波数 Ω0 k の振動だ．ただし sin とは違って関数値として複素数を取るわけだ．sin のときは時間 t の軸と，関数値の軸をとって 2 次元のグラフを書いたと思うが，複素数値関数だと実軸と虚軸を考えなきゃいけないから，絵を描くなら 3 次元グラフのようになるな．
やる夫 ええと，普通に sin 関数のグラフを書くときは，横軸に時間を取って，縦軸に関数値を取るわけだ
お．時間はそのままで，縦軸を実軸だとして…
やらない夫 時間軸と実軸の両方に直交するように虚軸を取ればいい．あるいは，複素平面の実軸と虚軸の両方に直交するように時間軸を取ると考えてもいい．どっちでも同じことだ．

Im
Re

t
やる夫 で，この 3 次元っぽい空間で振動するのかお．
やらない夫 振動というより，螺旋を描くという方がいいな．ejθ は複素平面の単位円上で偏角 θ の位置を指していたわけだろ．ejΩ0 kt は，t = 0 で実軸上の 1 のところからスタートして，時間 t が進むとともにこの単位円上を反時計回りにまわるわけだ．

Im

exp(jΩ0t)
Ret
やる夫 ああ，回りながら時間軸方向に進んでいくから螺旋になるわけだお．
やらない夫 そうだな．
「単位時間でこの螺旋が何周するか」が周波数だ．同じことだが「単位時間でこの螺旋の位相が何 rad 進むか」が角周波数 Ω0 k だ．k が増えれば速く振動する螺旋になる．元の関数 f (t)を，k の異なるたくさんの螺旋の足し合わせで表そうというのが，複素指数関数型のフーリエ級数だ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

28

複素指数関数型のフーリエ級数

やる夫 なるほど，そういうイメージで式 (2.18) を見ると，多少はわかったような気がするお．…ん? あれ?
やらない夫 どうした?
やる夫 sin や cos の足し合わせのときは，k は正の整数だけを考えたんだお．でも複素指数関数を足し合わせるときは，k は負の無限大から正の無限大まで考えることになったんだお．k が負のときの角周
波数 Ω0 k って一体何なんだお．周波数がマイナスなのかお? 「単位時間あたり −10 周する」とか意
味わからんお!
やらない夫 うん，いい指摘をするじゃないか．その点も基本に立ち返って考えるといい．角周波数がマイ
ナスってことは，時間が進むと複素平面上ではどうなる?
やる夫 ええと，偏角が減っていくわけだから，時計回りにまわるってことかお．
やらない夫 そうだ．それをさっきと同じく時間軸・実軸・虚軸のグラフで考えるとどうなる?
やる夫 時計回りにまわりながら進んでいくわけだから…，さっきと逆回りに回転する螺旋になるお!
Im
exp(jΩ0t)
Im
exp(-jΩ0t)

Re

Re

t

t

やらない夫 そう，それが負の周波数の正体だ．このイメージができるようになると，式 (2.14) の意味がよ
くわかるはずだ．
やる夫 ええと，反時計回りと時計回りの螺旋を足して 2 で割っているわけだお．実数部分は，どっちも同
じく cos の動きをするから，足して 2 で割ったものもそれらと同じだお．虚数部分は，常に共役の関係にあるから…あっ消えてなくなるんだお! たしかに左辺の実数の cos 関数に一致するお．
Imṇ䛾࿘Ἴᩘ䛾ᅇ㌿⹫㒊Re㈇䛾࿘Ἴᩘ䛾ᅇ㌿ᐇ㒊
やらない夫 やけに説明的な台詞ありがとう．
やる夫 どういたしましてだお．
やらない夫 フーリエ級数展開の ejΩ0 kt と e−jΩ0 kt の項の間の関係もこれと同じなんだ．
展開したい関数 f (t) が実数値を取るとしよう．するとそれぞれの周波数成分もやっぱり実関数になってくれないと困るわけだ．だから，Fk ejΩ0 kt と F−k e−jΩ0 kt が足し合わされて，さっきと同様に虚数部分が打ち消されるようになっている．そう考えると Fk と F−k がどういう値じゃなくちゃならな
いかが見えてくるだろ．ちなみに Fk も F−k も一般に複素数だということに注意しとこう．
やる夫 ええと，Fk とかの絶対値は螺旋が回転するときの半径なわけだお．少なくとも回転する半径は一致してないと打ち消せないお．だから，|Fk | = |F−k | は必要だお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

29

複素指数関数型のフーリエ級数

やらない夫 そうだ．でもそれだけじゃダメだ．偏角についても条件がある．
やる夫 Fk の偏角って…どういう意味になるのかお?
やらない夫 Fk ejΩ0 kt に t = 0 を代入したときの値が Fk だろ．つまり時刻 0 における螺旋の初期位置がFk だ．
やる夫 ええと，同じ半径で，同じ角速度で，逆向きに回転する 2 つの螺旋があって，それらの虚数部分が常に打ち消し合うためには…，ああ，初期位置が共役の関係にあればいいんだお．だから，Fk の偏角と F−k の偏角は同じ大きさで符号が逆，つまり  Fk = − F−k だお．
やらない夫 そういうことだ．結局，f (t) が実数の場合は，k ≥ 0 の Fk だけわかれば k < 0 の方も定まってしまうんだな．
やる夫 単に，虚数部分を打ち消すためのトリックとしてだけ存在するってことかお?
やらない夫 まあ身も蓋もない言い方をするとそうなるかな．ただし f (t) が複素数値を取る場合はこの限りではないので注意だ．
やる夫 ともかく，おかげでどうして「負の周波数」が出てきたのかは何となくわかった気がするお．
やらない夫 三角関数型のフーリエ級数と対比してみるといいかもな．三角関数型の場合，ある周波数成分のサイン波の振幅と初期位相を表現するために cos と sin の足し合わせで表したわけだ．だから akと bk の両方が常に組になる．
やる夫 それに対して複素指数関数型の場合は，正と負の周波数の複素指数関数の足し合わせで表すことになる．今度は Fk と F−k が組になるわけだお．
やらない夫 そう．しかも，「振幅」と「初期位相」がものすごくストレートに表示されているのがわかるだ
ろう．
やる夫 あ，そういえばそうだお．Fk の絶対値が振幅そのもので，偏角が初期位相そのものだお．
やらない夫 これが複素指数関数型のフーリエ級数の嬉しいところだ．単に式 (2.18) のようにすっきりと書き表せるだけじゃなくて，そこに出てくるフーリエ係数 Fk が「各周波数成分の振幅と位相」を明示的に表している．
やる夫 なるほど，そういえば今回の話はそういう流れで始まったんだったお．
やらない夫 図で表すとこんな感じかな．まずこれが三角関数型のフーリエ級数だ．元の周期信号が，基本周波数の整数倍の周波数を持つ成分に分解される．それぞれの成分がどのくらい含まれているかを表しているのがフーリエ係数 ak ，bk だ．ただし，各周波数について cos と sin の両方を考える必要が
ある．

a0

0

a1

b2
a3

b1

Ω0

a2

b3

2Ω0

3Ω0

Ω [rad/s]

次にこれが複素指数関数型のフーリエ級数だ．同じく基本周波数の整数倍の周波数を持つ成分に分解される．ただし，各周波数について，正と負の周波数の組で表される．フーリエ係数は複素数だから，このグラフでは絶対値と偏角にわけてかいてみた．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第2章

30

複素指数関数型のフーリエ級数|F0 ||F-1 ||F1 ||F-2 ||F2 |-3Ω0 -2Ω0 -Ω0 0

Ω0 2Ω0 3Ω0∠F1∠F-2 ∠F-1 ∠F0-3Ω0 -2Ω0 -Ω0 0

Ω [rad/s]∠F2

Ω0 2Ω0 3Ω0Ω [rad/s]

こんな風に周波数成分に分解されたものを「スペクトル」とか「周波数スペクトル」とか呼ぶことが多い．特に |Fk | のみを考えると「振幅スペクトル」， Fk のみを考えると位相スペクトルと呼ぶ．
やる夫 なるほど，振幅スペクトルは偶対称で，位相スペクトルは奇対称なわけだお．
やらない夫 ああ，ただしあくまでも f (t) が実関数の場合だということを忘れるな．あと，振幅の 2 乗，つまり |Fk |2 のことをパワースペクトルと呼ぶ．これもよく出てくる概念なので覚えておくといい．
やる夫 2 乗しただけかお．別に振幅スペクトルだけでいいんじゃないかお?
やらない夫 2 乗したものが応用上重要になることもあるんだ．まあ当面は，そういう名前なんだと思っておけばいい．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

31

第 3 章 フーリエ変換
3.1

周期をどんどん長くする

やらない夫 さて，というわけでフーリエ級数の話をしてきたわけだ．どんな話だったか覚えてるか?
やる夫 えっと，周期的な時間信号をいろんな周波数成分に分解するんだったお．
やらない夫 そう，その「周期的」ってのが重要だ．じゃあ周期的じゃない信号はどうするの? ってのが今回の話になる．結論からいうと，それがフーリエ変換だ．
やる夫 「級数」が「変換」に変わるんかお．なんか「周期的」かどうかとは全く異質な話に聞こえるお．
やらない夫 そうかもな．まあその辺は追々理解してもらえばいい．ともかく出発地点はフーリエ級数だ．
周期 T0 の時間信号を周波数成分に分解するんだった．どんな周波数成分が出てくる?
やる夫 えっと，基本角周波数が Ω0 = 2π/T0 で，その整数倍の周波数成分だけがでてくるんだったお．
やらない夫 そうだな．だからスペクトルは飛び飛びに値を持つことになる．図でかくとこんな感じだったな．

2π/T0 = Ω0FStΩ
-3Ω0 -2Ω0 -Ω0 0

Ω0 2Ω0 3Ω0-T0/2 T0/2
やる夫 ん，この矢印の上の FS ってなんだったかお?
やらない夫 前回の式 (2.30) で導入したが，矢印の元をフーリエ級数展開すると矢印の指す先になることを表しているつもりだ．
さて，ここで，元の 1 周期分の時間信号の波形をそのまま変えずに，周期だけを長くしたら，例えば周期を 2T0 にしてみたら，どうなる?
やる夫 えっと，どういうことだお．元の波形を変えずに…ってことは，こういうことかお? スカスカなグラフになるお．

t

-T0

T0

やらない夫 ああ，そういうことだ．例えば，1 秒ごとにベルが鳴っていたのが，2 秒ごとに鳴るようになったと思えばいい．鳴っている間の音としては変わらないけど，鳴る間隔だけが変わったってことだ．

第3章

32

フーリエ変換やる夫 把握したお．
やらない夫 同様に，周期をどんどん長くして，無限大までしてやれば，周期的じゃない信号になるだろう，というのが話の流れだ．

t

2T0 → ∞-∞ ←-2T0
やる夫 なんか強引な気がするお．そんなんでいいんかお．

やらない夫 やや乱暴かな．まあ気にするな．ともかく，周期を長くしていったときに，周波数領域がどういう風に変化していくかを考えていこう．で，出発地点に戻ると，周期 T0 のときは，周波数領域では Ω0 = 2π/T0 おきに飛び飛びに値を持つんだったわけだろ．
やる夫 そうだお．さっきのグラフの通りだお．
やらない夫 周期が 2T0 になったらどうなる?
やる夫 えーと，基本周波数は基本周期の逆数なんだお．角周波数で考えるならその 2π 倍だお．だから，基本角周波数は 2π/2T0，つまり Ω0 /2 になるはずだお．
やらない夫 正解だ．周期が 2 倍に伸びたから，周波数が 1/2 の低周波でも，その周期内にすっぽり収まれ
るようになったわけだ．で，その整数倍の周波数はすべて存在できることになる．グラフにかくと線の密度が 2 倍に増えるわけだ．

2π/2T0 = Ω0 /2FStΩ
-3Ω0 -2Ω0 -Ω0 0-T0

Ω0 2Ω0 3Ω0

T0

同じように，周期を 4T0 にしたらどうなる?
やる夫 基本角周波数が Ω0 /4 になるお．スペクトルの線の密度が 4 倍になるお．

2π/4T0 = Ω0 /4tFSΩ-3Ω0 -2Ω0 -Ω0 0-∞ ←-2T0Ω0 2Ω0 3Ω0

2T0 → ∞

やらない夫 そうだな．その流れでちょっと想像をはたらかせてみてくれ．周期を無限大に飛ばしたら，ス
ペクトルはどうなると思う?
やる夫 うーん，スペクトルの線の間隔がどんどん狭くなっていくお．だから，飛び飛びじゃないスペクト
ルになるのかお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

33

フーリエ変換やらない夫 そういうことだ．−∞ から ∞ の連続時間上で定義された時間関数は，周波数領域で見ると，−∞ から ∞ の連続周波数上で定義されたスペクトルになる．ちょっと議論は乱暴だったけど，ああ何かそうなりそうだな，と納得してもらえればとりあえず OK としよう．
やる夫 ふーん，まあ言ってることの雰囲気はわかるお．

3.2

フーリエ変換とフーリエ逆変換

やらない夫 さて，実際にそういう極限を考えたときに，数式としてはどんな形になるのかっていうのが次の話だ．ところがちょっと問題があって，今の話の流れで考えていても，実は答えにはたどり着けないんだ．
やる夫 ちゃぶ台返しかお．じゃあ今までの話はなんだったんだお．
やらない夫 まあそう言うな．飛び飛びの離散周波数から連続周波数になっていくイメージを持ってもらいたかっただけだ．でも，どんなに間隔が細かくなっても線は線のままだからな．そのままじゃ連続にはならない．なのでそこはちょっと連続化のための手続きを踏んでやる必要がある．
やる夫 どういうことかお．
やらない夫 フーリエ級数展開の式から出発しよう．前回の式 (2.18)，つまりこれだ．

f (t) =∞


Fk ejΩ0 kt

(3.1)

k=−∞

Fk ejΩ0 kt を整数 k について総和しているわけだ．これはいいな?
やる夫 OK だお．
やらない夫 スペクトルの間隔 Ω0 をどんなに細かくしていっても，総和のままじゃダメなんだ．周波数が連続化されて，総和が積分になるように話を持っていきたい．
やる夫 よく話が見えないお．
やらない夫 具体的に見ていこうか．このグラフが Fk ejΩ0 kt を表していると思ってくれ．Fk じゃなくて，ejΩ0 kt をかけた後，でも総和を取る前のグラフだ．

Ω-3Ω0 -2Ω0 -Ω0 0

Ω0 2Ω0 3Ω0

この線の長さを全部足すと f (t) になる，ってのがフーリエ級数の意味するところだ．長さっていっても本当は複素数だという点には注意しなきゃいけないんだが，ともかくこうやって表そう．
やる夫 わかるお．フーリエ級数の式そのものだお．
やらない夫 ところが，このまま線の間隔を狭くしていっても，線のままだといつまでたっても連続にならないってのが問題だったわけだ．だから，こんな風に線の長さじゃなくて面積になるように書き換え
よう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

34

フーリエ変換㠃✚ =Ω
-3Ω0 -2Ω0 -Ω0 0

Ω0 2Ω0 3Ω0

やる夫 えっと，これはどういうことだお．
やらない夫 線の代わりに横幅 Ω0 の短冊みたいなのを考える．この短冊の面積が，元の線の長さ，つまりFk ejΩ0 kt と等しくなるようにする．すると短冊の高さはどうなる?
やる夫 んー，Fk ejΩ0 kt /Ω0 でいいのかお? Ω0 で割っただけだお．

やらない夫 そういうことだ．これで，この短冊の面積をすべて足し合わせると f (t) になるようにできた
わけだ．こうやって「総和を計算する問題」を「面積を計算する問題」に書き換えておいてから，分
割をどんどん細かくしていけば，「面積を積分で求める問題」に持って行くことができる．
やる夫 うーん，なんか微妙にしっくり来ないけど，そんなもんなのかお．
やらない夫 同じ無限でも，「整数が無限にある」というときの無限と「実数が無限にある」というときの無限との間には大きなギャップがあるんだ．だから「線」のまま間隔を狭くしていっても連続にはならない．そのギャップを，面積を持つ短冊を考えることで埋めていると思ってくれ．
今の話を数式で書くとこうなる．まずフーリエ級数の式を，面積の総和だと思って書き換える．

f (t) =

∞

k=−∞

Ω0

Fk ejΩ0 kt
Ω0

(3.2)

やる夫 横×縦の総和に書き換えたわけだお．
やらない夫 で，理由は後で説明するが，何も聞かずにここで 1/2π をくくり出してくれ．
∞
2πFk ejΩ0 kt
1 
f (t) =
Ω0
2π
Ω0

(3.3)

k=−∞

やる夫 ええー，まあ聞くなというなら聞かないけど，気持ち悪いお．
やらない夫 うん，あとで説明するから勘弁してほしい．で，ここで新しい変数をいくつか導入しておこう．
まず Ω[k] = Ω0 k とする．基本角周波数の k 倍の値を持つ角周波数だ．丸括弧じゃなくて角括弧なのは，括弧の中身が整数だということを強調しているつもりだ．
∞
1 
2πFk ejΩ[k]tf (t) =
Ω0
2π
Ω0

(3.4)

k=−∞

やる夫 整数 k によって変わる角周波数を表す変数だと考えるわけだお．
やらない夫 そして，総和の中の項のうち 2πFk /Ω0 の部分を F (Ω[k]) と書くことにする． Fk の定数倍だから，周波数スペクトルを表す量になる．

f (t) =∞1 
Ω0 F (Ω[k])ejΩ[k]t
2π

(3.5)

k=−∞

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

35

フーリエ変換やる夫 ん，なんで F (·) の中に Ω[k] が出てくるのかお? F [k] じゃだめなのかお．
やらない夫 そうだな，今の時点では F [k] だと考える方が自然かもしれない． k という整数に応じて値が決まるわけだからな．でも，後から積分に移行するときに備えてここは角周波数の単位を持つ量で書いておきたいんだ．つまり，k という整数に応じて Ω[k] という角周波数が決まって，その角周波数のスペクトル成分 F (Ω[k]) が与えられると考えておく．
やる夫 何かさっきから後の都合ばっかりだお．
やらない夫 F (Ω[k]) の計算式も書き下しておこう．Fk を計算する式 (2.28) で，Ω0 k を Ω[k] と書いてやると，こうなる．

Fk =

1
T0

 T0 /2f (t)e−jΩ[k]t dt(3.6)−T0 /2

これを F (Ω[k]) = 2πFk /Ω0 に代入して

 T0 /2
2π
f (t)e−jΩ[k]t dt
T0 Ω0 −T0 /2
 T0 /2=f (t)e−jΩ[k]t dt

F (Ω[k]) =

(3.7)
(3.8)

−T0 /2になる．
やる夫 ええと，Ω0 = 2π/T0 だから確かにそうなるお．F (Ω[k]) が Ω[k] によって決まる量になっているのもわかるお．
やらない夫 それから，f (t) = · · · の式に戻って，これは単に変数名の置き換えだと思ってもらえばいいん
だが，ΔΩ = Ω0 とする．
∞
1 
f (t) =F (Ω[k])ejΩ[k]t ΔΩ
2π

(3.9)

k=−∞

やる夫 んー，どうして Ω0 のままじゃダメなのかお?
やらない夫 別にダメじゃないんだが，単に，積分に移行するときにわかりやすくするためだと思ってくれ．
書く場所を右辺の一番後ろに移したのもそのためだ．
やる夫 ふーん，まあいいお．
やらない夫 さて，ここまでで準備完了だ．T0 → ∞ の極限を考えてやる．Ω[k] は実数 Ω に連続化されて，ΔΩ は無限小になって dΩ になる．
 ∞1f (t) =F (Ω)ejΩt dΩ
2π −∞(3.10)

で，途中で計算しておいた式 (3.8) の F (Ω[k]) の方も，同様に T0 → ∞ の極限を考える．単純に積分の範囲が無限大に飛んでいくだけだな．これをフーリエ変換と呼ぶ．
 ∞F (Ω) =
f (t)e−jΩt dt(3.11)−∞

そしてさっきの式 (3.10) の方をフーリエ逆変換と呼ぶ．
やる夫 いつの間にか「級数展開」が「変換」になったお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

36

フーリエ変換やらない夫 いつの間にかというか，いつ「変換」になったかと敢えて答えるなら，無限に飛ばして連続化したときだな．その時点で「連続時間上の関数」と「連続周波数上の関数」の相互間の「変換」になったと考えている．
フーリエ変換の計算式の右辺には時間変数 t と周波数変数 Ω が含まれているが，t で積分するから，

Ω だけが残る．連続時間上の関数から連続周波数上の関数への変換になるわけだ．フーリエ逆変換の方は，右辺を Ω で積分しているから，t だけが残るんだな．時間関数への変換になる．
やる夫 結局，周波数が連続になっただけで，フーリエ級数と同じようなものだと思っていいのかお?
やらない夫 そうだな，基本的な考え方は同じだ．フーリエ級数は，周期的な時間信号を無限個の複素指数関数の足し合わせで表現したわけだ．ただし無限といっても高々「整数の個数」の無限だ．周波数成分は飛び飛びにしか存在しないが，それで元の時間関数が十分に再現できた．
これに対して，周期的とは限らない一般の時間信号を表現しようと思うと．周波数としてはあらゆる実数を考えなくてはならなくなる．数式で表現すると複素指数関数の「総和」ではなくて「積分」で表現しなくてはならないわけだ．
やる夫 フーリエ級数の「複素指数関数の足し合わせで表す」っていう考え方は直観的にわかりやすかった
お．でも総和じゃなくて積分になるとどうもピンと来ないお．
やらない夫 そうかもしれないが，本質的には全く同じことなんだ．同じイメージを持っていて構わない．
ただし「足し合わせ」という言葉を使うのはさすがに違和感があるので，「重ね合わせ」という言葉を使うことが多い．
やる夫 「重ね合わせの原理」とかいう場合の重ね合わせと同じかお?
やらない夫 そうだな．
「重ね合わせ」という言葉であれば，総和の場合も積分の場合も，まあそんなに違和
感無く表現できてる気がするが，どうだろう．まあ語感は人それぞれかも知れないけどな．
ともかく，一般の時間信号は，あらゆる実数を周波数とする複素指数関数の重ね合わせで表すことができる，ということだ．これがフーリエ逆変換の意味だ．
やる夫 逆? あ，そうか，フーリエ級数展開に対応するのは，フーリエ変換じゃなくてフーリエ逆変換の方なんだお．なんか混乱しそうだお．
やらない夫 そう，フーリエ変換は，フーリエ係数の計算の方に対応している．それぞれの周波数成分がどのくらい含まれているかを知るための計算になっているということだな．F (Ω) は一般に複素数になるから，振幅と位相を持っている．フーリエ係数 Fk と同様に，周波数 Ω の成分の振幅と初期位相を表しているわけだ．
やる夫 フーリエ級数展開やフーリエ係数の計算を「変換」と呼んじゃダメなのかお?
やらない夫 ダメってことはないし，変換だと理解して構わないと思うぞ．単に歴史的な事情で「級数展開」
だと解釈されるのが普通だというだけだ．級数展開だろうが変換だろうが，信号を複数の周波数に分解しているんだという点には変わりがない．周波数が飛び飛びか，連続かという違いはあるけどな．
やる夫 こうして見比べると，フーリエ変換とフーリエ逆変換の式ってほとんど似たようなもんだお．指数部にマイナスがついているかどうかと，定数倍があるかないかだけの違いだお．
やらない夫 そうだな．まあ，どっちを変換と呼んでどっちを逆変換と呼ぶかなんてのは，単に慣例的なものだ．時間 → 周波数の方向を変換，反対方向を逆変換と呼ぶと約束したに過ぎない．
ついでに言うと，さっきの式 (3.3) のところで 1/2π をくくり出したのも，同じように単に慣例的なものなんだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

37

フーリエ変換やる夫 ああ，後から説明するって言われてたのを忘れてたお．結局どういうことなんだお?
やらない夫 あそこで 1/2π をくくり出さなかったどうなるか，計算してみればわかるんだが，フーリエ変換の式の方の先頭に 1/2π がついて，逆変換の式の方には何もつかなくなるんだ．だから，「フーリエ変換」の式をきれいに見せたかったら今回みたいに 1/2π でくくればいいし，「フーリエ逆変換」の式をきれいに見せたいならば，くくらずに導出したもので定義すればよかった．どっちにしろ，フーリ
エ変換して，またフーリエ逆変換すればちゃんと元に戻るからな．どっちでもよいんだけど，我々は√前者を採用したってことだ．教科書によっては両方に 1/ 2π をつけているのもあるしな．
やる夫 どっちでもいいってのはあまり納得いかないお．定義が変わったら周波数成分の値が定数倍だけ変わってしまうお．
やらない夫 変わってもいいんだよ．例えばもとの時間信号の振幅が，そうだな，電圧だったとしようか．
じゃあそれをフーリエ変換したときの周波数成分の単位はどうなる?
やる夫 えっ? えーと，電圧を時間積分してるんだから，電圧×時間の次元になるのかお．あまり普段使うような単位じゃなさそうだお．
やらない夫 だな．だから，その値が 2π 倍になってようがいまいが，その絶対的な数値自体は大した問題じゃない．長さをヤードで測るかメートルで測るか尺で測るかによって数値が変わるのと同じだ．ただし，どの定義で計算したものかはちゃんと把握しておかないとわけがわからなくなるので注意した方がいい．いろんな教科書の公式を混ぜて使うのは危険だ．
というわけでまとめよう．ついでにいくつか記号や用語も導入しておこう．
• 連続時間 −∞ < t < ∞ で定義された関数 f (t) (のうち実用上重要なものの多く) に対して，式 (3.11) で計算される F (Ω) を f (t) のフーリエ変換と呼ぶ．(あるいはこの計算をすること自体をフーリエ変換と呼ぶ)• F (Ω) から，式 (3.10) によって元の f (t) が復元できる．この計算をフーリエ逆変換と呼ぶ．(あるいは「f (t) は F (Ω) のフーリエ逆変換である」という言い方もする)• Ω は角周波数を表す連続変数である． F (Ω) は f (t) に含まれる角周波数 Ω の振動成分の量 (振幅・位相) を表す．

• |F (Ω)|， F (Ω)，|F (Ω)|2 をそれぞれ，f (t) の振幅スペクトル，位相スペクトル，パワー
スペクトルと呼ぶ．



やる夫 あれ? そういえば数学の教科書では角周波数は小文字で ω って書いてたと思うお．どうして大文字で書くんだお?
やらない夫 そうそう，それを説明してなかった．これまではずっと連続時間信号について話をしてきたけ
ど，次回から離散時間信号についての話に入るんだ．つまり，時間軸上で飛び飛びの時刻にしか値をもたないような信号だな．いよいよ「ディジタル」信号処理の世界に入っていくわけだ．
離散時間信号について考えるとき，いわゆる普通の角周波数とは別に「正規化角周波数」という概念が出てくる．小文字の ω はそっちの方で使おうと思うんだ．だからそれと区別するために，普通の角周波数は Ω と書くことにする．ちょっと戸惑うかもしれないが，まあ我慢してくれ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

フーリエ変換38

3.3

重要なフーリエ変換対

やらない夫 互いにフーリエ変換と逆変換の関係になっているものを「フーリエ変換対」と呼ぶことがある．
後々の説明で必要になるものをいくつか計算しておこうと思う．
やる夫 あまり計算好きじゃないお．
やらない夫 まあ数学の演習じゃないので，必要最低限に留めようと思う．
そうそう，以下では F (Ω) が f (t) のフーリエ変換であることをこんな風に表すことにする．これらは割と標準的な記法だ．
F

f (t) → F (Ω)
F

3.3.1

(3.12)−1

F (Ω) → f (t)(3.13)

f (t) ↔ F (Ω)(3.14)

F [f (t)] = F (Ω)(3.15)

F −1 [F (Ω)] = f (t)(3.16)

矩形関数と sinc 関数

やらない夫 まずは，時間領域の矩形信号だ．ただし a > 0 とする．
1, −a ≤ t ≤ a
r−a,a (t) =0, otherwise

1-a(3.17)

ta

これをフーリエ変換するとどうなるか．
やる夫 とりあえず公式につっこんでみるお．
 ∞F [r−a,a (t)] =r−a,a (t)e−jΩt dt(3.18)−∞
 ae−jΩt dt=

(3.19)−a

ここまでは簡単だお．この後は…普通に積分すればいいのかお． e−jΩt の不定積分は (−1/jΩ)e−jΩt
だから…
やらない夫 いいんだが，分母に Ω が出てくるので，Ω = 0 のときだけは別扱いしないとだめだな．
やる夫 ああ，そうだお．じゃあ改めて，Ω = 0 のとき，こうなるお．
a1 −jΩte
F [r−a,a (t)] =−jΩ
−a1  jaΩe− e−jaΩ=jΩ(3.20)(3.21)

これでいいのかお?
やらない夫 もうちょっと計算を進めてみようか．このままじゃスペクトルの形状もよくわからないからな．
オイラーの公式 (2.15) で，sin θ = (ejθ − e−jθ )/2j だったことを使うんだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

39

フーリエ変換やる夫 あー，するとこうなるのかお．

2 ejaΩ − e−jaΩ·Ω2j2= sin aΩΩF [r−a,a (t)] =(3.22)(3.23)

やらない夫 そういうことだな．残りは Ω = 0 の場合だ．
やる夫 忘れてたお．えーとどうすればいいかお．ん? なんだ，
 aF [r−a,a (t)]|Ω=0 =e−j0t dt

(3.24)

−a
 a

dt

=

(3.25)−a= 2a(3.26)

単にこういうことかお．
やらない夫 いいだろう．結局，どんな形のスペクトルになるかわかるか?
やる夫 うーん，2/Ω は反比例のグラフだお．反比例と sin をかけたグラフだから，Ω が正のときは，sin
なんだけど振幅が Ω に反比例して減っていくようなグラフになるお． Ω が負のときは…反比例の部
分が負だから，sin 関数の正負がひっくり返ったものになって，その振幅はやっぱり Ω の絶対値に反比例して減っていくわけだお．だから左右対称なグラフになりそうだお．よくわからないのは Ω = 0の近辺だお．反比例は無限大に，sin はゼロに近づいていくから，かけ合わせた結果どうなるのか，すぐにはわからんお．
やらない夫 Ω = 0 のときの値が 2a なのは計算の結果わかっていただろう．で，実はちゃんと連続につながったグラフになるんだ．a = 4 の場合をプロットしてみるとこうなる．
82 / x * sin(4 * x)

7
6
5
4
3
2
1
0
-1
-2

-pi

-pi/2

0

pi/2

pi

「振幅」スペクトルを考えるときは絶対値を表示するので，スペクトルの形状としてはこんな形になる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

40

フーリエ変換8

abs(2 / x * sin(4 * x))

7
6
5
4
3
2
1
0

-pi

-pi/2

0

pi/2

pi

やる夫 ふーん，変なグラフだお．
やらない夫 ついでに，周波数領域の矩形関数をフーリエ逆変換する例もやっておこうか．

1, −a ≤ Ω ≤ a
G−a,a (Ω) =0, otherwise
やる夫 フーリエ逆変換も計算はほとんど同じなんだお．だから余裕だお．t = 0 の場合は
 ∞1
F −1 [G−a,a (Ω)] =G−a,a (Ω)ejΩt dΩ
2π −∞
 a
1
ejΩt dΩ=2π −a

1 ejat − e−jat
πt
2j
1
=
sin atπt=で，t = 0 の場合は

F

−1

1
[G−a,a (Ω)]|t=0 =
2π
a
=
π

 a

(3.27)(3.28)(3.29)(3.30)(3.31)

ejΩ·0 dΩ(3.32)−a(3.33)になるお．
やらない夫 そうだな．時間領域の矩形関数は，周波数領域では反比例と sin をかけ合わせた関数になる．
逆に，周波数領域の矩形関数も，時間領域では反比例 × sin になるわけだ．この「反比例 × sin」の形は信号処理ですごく重要なので「sinc 関数」という名前がついている．具体的には a = 1 として，

t = 0 のときの値が 1 になるようにしたものを sinc t とすることが多い．
sin t
t
sin Ω
sinc Ω =Ω

(3.34)

sinc t =(3.35)

やる夫 「多い」ってどういうことだお．そうしないこともあるのかお?
やらない夫 ああ，厄介なことにそうなんだ．今みたいに定義した sinc t は，t = ±π, ±2π, ±3π, · · · で横軸と交わるだろ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

41

フーリエ変換やる夫 そりゃ分子が sin なんだから，そうなるお．
やらない夫 ディジタル信号処理だと，t = ±1, ±2, ±3, · · · で横軸と交わるようにしたものが便利な場合があるんだ．そうなるように a = π にして，ただし t = 0 のときの値はやっぱり 1 になるように調整した

sin πtπt(3.36)のことを sinc 関数，あるいは区別するために「正規化 sinc 関数」と呼ぶことがある．グラフはこうなるな．ぱっと見の形はさっきのと同じだが，グラフの目盛りに注意してくれ．
1

sin(pi * x) / (pi * x)

0.8
0.6
0.4
0.2
0
-0.2
-0.4

-4

-3

-2

-1

0

1

2

3

4

なので，単に sinc 関数と言われた場合は，実際にはどっちを指しているかちょっと注意が必要だ．
やる夫 面倒くさいお．
やらない夫 まあとにかく，定数倍はさておくとして，矩形関数と sinc 関数がフーリエ変換対の関係になっていることを，しっかり把握しておいてくれ．
やる夫 ということは，sinc 関数に対してフーリエ変換の計算をすれば矩形関数が出てくるのかお?
やらない夫 出てくる．出てくるんだが，その計算は割とややこしい．何しろ sinc 関数は不定積分が初等関数の組み合わせで書けないんだ．なので積分の計算にいろいろと技巧が必要だ．というわけで「sincと矩形はフーリエ変換対」と覚えておいて，例えば時間領域の sinc 関数のフーリエ変換が必要になったときには，周波数領域の矩形関数から考えて逆算するようにする方が楽ちんだ．
やる夫 ふーん，なんだかずるいお．
やらない夫 いいんだよ，ずるくても．この「フーリエ変換対をセットにして考える」という戦略はとても重要だ．sinc 関数の場合は単に計算が面倒なのを回避するだけだが，もっと根本的な問題を回避する
場合にも有用なんだ．
やる夫 もっと根本的って，どんな場合だお?
やらない夫 フーリエ変換，あるいは逆変換が，普通の意味では存在できないような場合だ．
「デルタ関数」がその典型例だ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

フーリエ変換

3.3.2

デルタ関数と複素指数関数

42

やる夫 デルタ関数…数学の授業で習った気はするお．
やらない夫 正確にはディラックのデルタ関数とか，あるいは単位インパルス関数と呼ばれることもあるが，どんなものだったか覚えているか?
やる夫 なんか，ある一点でだけ無限大の値を持って，それ以外の点では 0 になるようなやつだったお．ピー
ンとインパルスが立ってる感じだお．
やらない夫 ああ，イメージとしてはそれで OK だ．無理やり数式で書くとすると
∞, t = 0
δ(t) =
0, t = 0(3.37)てな感じだな．これは t = 0 のところにインパルスが立っている場合だ．図で描くときにはこんな風に矢印にすることで，無限大だという雰囲気をかもし出す約束になっている．

δ(t)

t
0
ただし，こうやって書くだけではデルタ関数の性質をすべて伝え切れていない．この「無限大」のところがどんな無限大なのかが重要だ．具体的には，こういう性質を持つのがデルタ関数の「無限大」だ．
 ∞δ(t)dt = 1(3.38)−∞

やる夫 積分したら 1 になるわけだお．これがどう重要なのかお?
やらない夫 まず注意してほしいのは，この式では t の全区間を積分しているが，δ(t) が 0 でない値を持つのは t = 0 を跨ぐ瞬間のみだということだ．だから，t = 0 を含むような積分範囲を取れば，積分値は必ず 1 になる．
それが何を意味するかというと，デルタ関数は，高さは無限大だけど面積は有限で 1 だということだ．
やる夫 高さが無限大で，幅が 0 で，かけたら 1 になるような短冊だってことかお．
やらない夫 そう考える手もあるかな．ともかく，単に「無限大です」ってんじゃなく，何らかの意味で「大きさを考えられる」という点が重要だ．単に無限大だと言われた場合は，その 2 倍とか 3 倍とかを考えることに意味がない．でもデルタ関数の場合は，2δ(t) とか 3δ(t) とかがちゃんと意味を持っている．
やる夫 高さはどれも無限大だけど，面積はそれぞれ 2 と 3 だってことかお．
やらない夫 そういうことだ．この性質は，他の関数とデルタ関数をかけ合わせて積分するときに重要だ．
有限の値を持つ関数 x(t) とかけ合わせて積分すると
 ∞δ(t)x(t)dt = x(0)(3.39)−∞になる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

43

フーリエ変換

δ(t)

x(t)

t

x(0)
0

やる夫 えーと，t = 0 以外ではデルタ関数が 0 だから，x(t) がどんな値を取ろうと積分には影響しなくて，

t = 0 ではデルタ関数の x(0) 倍になるから，結局面積は x(0) になる…という解釈でいいかお?
やらない夫 いいだろう．何かにデルタ関数をかけて積分するということは，その関数の瞬時値を切り出すことになるんだな．t = 0 だけじゃなく他の時刻の値を切り出すこともできる．デルタ関数を t1 だけシフトした δ(t − t1 ) を使えばいい．t = t1 にインパルスが立っていることになる．これを他の有限値関数にかけて積分すると
 ∞δ(t − t1 )x(t)dt = x(t1 )(3.40)−∞となる．

δ(t – t1)

x(t)
x(t1)

t
t1

やる夫 t = t1 のときの瞬時値が取り出されるわけだお．
やらない夫 そう．どの場合も，積分範囲はインパルスの立っているところを含んでさえいれば OK だってことに注意しておこう．
やる夫 しかし，奇妙な関数というか不思議な関数だお．こんなもの実在するのかお?
やらない夫 うーん，実在という言葉の意味によるな．例えば音声信号とか電気信号として物理的に存在するかというと，振幅が無限大なんてのは無理だから，存在はしない．数学的にも，普通の「関数」としては存在しないと考えた方がいいだろうな．しかし，超関数という概念を導入することで，ちゃんと定義することができる．だから数学的にはちゃんと実在しているともいえる．
やる夫 超関数って，その中二病っぽい響きの単語は何なんだお．そういう難しそうなのは勘弁してほしいお．
やらない夫 まあそこに深入りする気はないので安心してくれ．とにかく信号処理を考える上ではものすご
く重要な概念なので，やや天下りだが，こういうような性質をもった「関数っぽいもの」が存在すると考えればいい．
やる夫 そうしますお．
やらない夫 というわけで，デルタ関数をフーリエ変換するとどうなるか，というのがここからの主題だ．
早速だが，δ(t) をフーリエ変換してみたらどうなる?
やる夫 どうなるって言われても，まあ公式につっこんでみるお．
 ∞F [δ(t)] =δ(t)e−jΩt dt(3.41)−∞

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

44

フーリエ変換で，デルタ関数をかけて積分しているんだから，t = 0 の値だけが切り出されてF [δ(t)] = e−jΩ0(3.42)=1(3.43)

あれ? やけにあっさり求まったお．これでいいのかお?
やらない夫 OK だ．簡単だろ?
やる夫 拍子抜けだお．
やらない夫 でもこの結果はとても重要だ．時間領域のデルタ関数 δ(t) の周波数スペクトルは定数 1 になる．これは何を意味する?

δ(t)

t

1

Ω

0
やる夫 周波数に関わらず 1 なんだから，全部の周波数成分が等しく含まれているってことかお．
やらない夫 そういうことになる．逆にいうと，あらゆる周波数成分を等しく重ね合わせるとデルタ関数が作り出せるってことだな．
やる夫 サイン波なんて無限に続く信号なのに，それを足し合わせたら t = 0 以外の時刻では全部ゼロになってしまうのかお．不思議だお．
やらない夫 同様に，時刻 t1 にインパルスが立っているデルタ関数もフーリエ変換してみようか．
やる夫 δ(t − t1 ) を公式に入れればいいんだお．
 ∞F [δ(t − t1 )] =δ(t − t1 )e−jΩt dt(3.44)−∞= e−jΩt1(3.45)

これでいいのかお．
やらない夫 ああ，この計算結果はどういう意味になる?
やる夫 ええと，周波数領域だから e−jΩt1 を Ω の関数だとして見なきゃいけないんだお．結局，Ω と一緒に進んでいく螺旋になって，その螺旋の回転の速さが定数 t1 で表されているわけだお．
Imδ(t – t1)
Re exp(-jΩt1)

tt1

Ω᣺ᖜ | exp(-jΩt1) | = 11Ω఩┦ ∠ exp(-jΩt1) = -Ωt1
Ω

t1
-1

0

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

45

フーリエ変換やらない夫 e−jΩt1 の解釈としてはその通りだな．時間領域で見てきた複素指数関数を，時間と周波数を入れ替えて考えればいい．さて，δ(t − t1 ) のスペクトルがこういう螺旋になるというのは，どう捉えればいいだろう?
やる夫 うーん，ピンと来ないお．
やらない夫 振幅と位相に分けて考えるといいかもな．振幅スペクトルだけ考えるとどうだ?
やる夫 |e−jΩt1 | は Ω に関わらず 1 だお．あ，そうか，だからあらゆる周波数が等しい振幅で含まれているっていう点では δ(t) と同じなんだお．問題は位相だお． e−jΩt1 = −Ωt1 だから，周波数 Ω の成分は，Ωt1 だけ位相が遅れていることになるお．これってどういうことだお…．
やらない夫 もう一度時間領域に戻って考えてみるといいぞ．δ(t − t1 ) ってのは，δ(t) から時刻 t1 だけシフトしているわけだろ．そういう関数を合成するには，各周波数のサイン波をどうすればいいと思う?
やる夫 そりゃ，やっぱり時刻 t1 ずつシフトしてやればいいはずだお．周波数 Ω のサイン波は 1 周期が2π/Ω だから，位相で考えると，比例計算で
2π

t1
= Ωt1
2π/Ω

(3.46)だけずらすことに相当するお．あっ，確かにこれが位相の遅れ分になっているお．

2π/Ω
t1

t

0

やらない夫 そういうことだ．結局，あらゆる周波数を等しく含んでいるという点では t = 0 にあるデルタ関数も t = t1 にあるデルタ関数も同じだ．時間がシフトしている分は位相の違いになって現れるが，「同じ時刻」だけずらすために必要な「位相の量」は周波数によって違う．その結果として現れるのが e−jΩt1 だ．
やる夫 なるほど．ようやく見えてきたお．
やらない夫 ついでに，e−jΩt1 に t1 = 0 を代入したら 1 になることも指摘しておこう．だから，デルタ関
数 δ(t − t1 ) のフーリエ変換は e−jΩt1 で，その t1 = 0 の特殊例が 1 になっていると理解しておくのがよいと思う．
やる夫 ということは，e−jΩt1 をフーリエ逆変換するとデルタ関数が出てくるはずだお．計算してみるお!
 ∞1−1 −jΩt1
F [e]=e−jΩt1 ejΩt dΩ
(3.47)
2π −∞
 ∞
1
=
ejΩ(t−t1 ) dΩ
(3.48)
2π −∞
∞

1
1
=
ejΩ(t−t1 )(3.49)
2π j(t − t1 )−∞あれ? ダメだお．ejΩ(t−t1 ) で Ω → ±∞ にしたときの値が定まらないお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

46

フーリエ変換やらない夫 ああ，それがさっき言った根本的な問題だ．よくよく考えてみると，デルタ関数なんて普通の「関数」ではなかったわけだろ．普通の意味の積分の結果としてさくっと出てくるようなものではな
いんだ．特殊な取扱いが必要になる．

sinc 関数をフーリエ逆変換するときのように「計算が難しい」のとはちょっと話が一味違う．
やる夫 じゃあどうすればいいのかお?
やらない夫 あきらめる．
やる夫 あきらめるのかお! あきらめたらそこで試合終了だお!
やらない夫 あきらめないためには超関数論にまともに踏み込まないといけないからな．そこで「フーリエ変換対をセットにする」考え方の出番だ．δ(t − t1 ) をフーリエ変換したら e−jΩt1 になると知っているんだから，e−jΩt1 のフーリエ逆変換が δ(t − t1 ) になることもわかっていると考えてしまう．
やる夫 さっきも言ったけど，ずるいお．
やらない夫 さっきも言ったが，ずるくて構わない．ともかく，複素指数関数をフーリエ変換しなくちゃな
らない状況になったときに，あー，これはデルタ関数になるなと思い出して，逆から計算できるようになれれば勝ちだ．差し詰め，試合に負けて勝負に勝つといったところか．
やる夫 あ，やっぱり試合は終了なのかお．
やらない夫 同様に，周波数領域のデルタ関数 δ(Ω) とか，それを定数 Ω1 だけシフトした δ(Ω − Ω1 ) とかのフーリエ逆変換も計算しておこうか．やり方はほとんど同じだ．
やる夫 同じように計算すると

 ∞1
δ(Ω − Ω1 )ejΩt dΩ
2π −∞1 jΩ1 te=2π

F −1 [δ(Ω − Ω1 )] =(3.50)(3.51)になるお．Ω1 = 0 の場合は

F −1 [δ(Ω)] =1
2π(3.52)

だお．時間領域 → 周波数領域のときとは，定数倍されているのと指数部の符号が違うだけだお．
やらない夫 ああ，フーリエ変換とフーリエ逆変換の定義の違いをそのまま反映しているわけだな．直観的にも解釈しやすい結果だと思うぞ．角周波数 Ω1 の振動は，Ω = Ω1 のところにインパルスが立つス
ペクトルになるわけだ．

Im

1/2π exp(jΩ1t)

δ(Ω - Ω1)

Re
Ω
Ω1
t
特に Ω1 = 0 の振動ってのは，つまり直流のことだから，Ω = 0 のところにインパルスが立つことになる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

47

フーリエ変換

δ(Ω)

t

1/2π

Ω
0

やる夫 ああ，言われてみるとそうだお．
やらない夫 じゃあ練習問題．cos Ω1 t のフーリエ変換はどうなるか．
やる夫 えーと，…複素指数関数とデルタ関数がフーリエ変換対だって話の流れだったから，オイラーの公式で複素指数関数表示してみるお．

ejΩ1 t + e−jΩ1 t
2
1 jΩ1 t 1 −jΩ1 t
+ e
= e
2
2

cos Ω1 t =(3.53)(3.54)

えーっと，時間領域での和は，周波数領域でもそのまま和にしてよかったかお?
やらない夫 ああ，2 つの信号を加算したときの周波数成分だからな．元のそれぞれの信号の周波数成分の和になる．フーリエ変換の定義式から見ても明らかだろう．もちろん定数倍された信号の周波数成分
も，やっぱり元の信号の周波数成分の定数倍だとして OK だ．つまり，フーリエ変換は線形変換だ．
やる夫 じゃあさっきの ejΩ1 t ↔ 2πδ(Ω − Ω1 ) の関係を使って，

1 jΩ1 t 1 −jΩ1 t
e
+ e
2
2

(3.55)F−→πδ(Ω − Ω1 ) + πδ(Ω + Ω1 )(3.56)になるはずだお．
やらない夫 そうだな．正の周波数 Ω1 と負の周波数 −Ω1 のところにインパルスが立ったスペクトルになるわけだ．

πδ(Ω + Ω1)

cos Ω1tπδ(Ω - Ω1)

t

Ω
-Ω1

3.4

Ω1

フーリエ級数とフーリエ変換の関係

やる夫 うーん
やらない夫 どうした? 何か納得行かない顔をしてるな．
やる夫 今日の話って元々，周期信号しか扱えなかったフーリエ級数展開を，周期的じゃない信号に適用できるようにするって流れだったお．それで出てきたのがフーリエ変換なわけだお．
やらない夫 そうだったな．
やる夫 でも，さっき計算した ejΩ1 t とか cos Ω1 t とかも周期的な信号なんだお．周期的な信号もフーリエ変換できるなら，フーリエ級数はもう要らないのかお?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

48

フーリエ変換やらない夫 いい質問だな．じゃあ，三角関数や複素指数関数に限らず一般論として，周期 T0 で周期的な信号 f (t) をフーリエ変換したときにどうなるかを考えてみようか．

f(t)
t

T0
周期信号だから，フーリエ級数に展開できるわけだ．
∞
f (t) =

Fk ejΩ0 kt(3.57)k=−∞

この両辺をフーリエ変換する．

F [f (t)] =
=

∞

k=−∞
∞


Fk F [ejΩ0 kt ](3.58)

2πFk δ(Ω − Ω0 k)(3.59)

k=−∞

最後の式変形では ejΩ1 t ↔ 2πδ(Ω − Ω1 ) の関係を使った．
やる夫 えーと，デルタ関数を Ω0 k だけシフトしたものを k について足し合わせているので，Ω0 間隔でデルタ関数がならんだような形になるわけだお．

F(Ω)Ω0 = 2π / T0Ω
-3Ω0 -2Ω0 -Ω00Ω0 2Ω0 3Ω0

やらない夫 これがどういう意味か考えてみようか．f (t) の周波数成分がどんな風になっているかを考えると，まず，基本角周波数 Ω0 の整数倍以外の周波数成分がゼロになっているのは，まあ OK だろう?
やる夫 それは想定範囲内だお．フーリエ級数のときと同じ (p. 13) で，Ω0 の整数倍以外の成分があったら元の信号の周期が T0 になりそうもないお．
やらない夫 問題は，Ω0 の整数倍のところ，つまり Ω = Ω0 k の場合だ．フーリエ変換の公式に Ω = Ω0 kを代入した場合を考えていることになる．
 ∞
F (Ω0 k) =f (t)e−jΩ0 kt dt(3.60)−∞

この式と，フーリエ係数を求める式 (2.28) を見比べてくれ．

1
Fk =
T0

 T0 /2f (t)e−jΩ0 kt dt(3.61)−T0 /2

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

49

フーリエ変換やる夫 ほとんど同じだお．フーリエ係数を計算するときの 1/T0 倍をやめて，積分範囲が 1 周期分だったのを −∞ から ∞ までに変えたのがフーリエ変換になるお．
やらない夫 そうだな．フーリエ係数を計算するときは，周期関数の 1 周期分だけを積分することで有限の値 Fk を得ていたわけだ．フーリエ変換するときは，まず T0 倍が必要だがそれはさておいても，この 1 周期分の積分を無限個足し合わせなきゃならない．
やる夫 んー，無限…? ああ，周期信号だから，1 周期分のコピーが延々に続くわけだお．だから無限に足し合わせることになるんだお．
やらない夫 そう，だから Ω0 の整数倍のところでは，フーリエ変換の値は無限大に発散する．それが，周期関数のフーリエ変換がデルタ関数の並んだものになる理由だ．三角関数や複素指数関数をフーリエ変換したときにデルタ関数が出てくるのも，その特殊な場合になっているだけだな．
やる夫 なるほど，辻褄は合ってるお．
やらない夫 デルタ関数が「普通の意味での関数」ではなかったことを思い出してくれ．言い換えると，周期信号は，普通の意味ではフーリエ変換が存在しないってことだ．それでは不便なので，関数の意味を拡張して考えている．本来はもっと厳密な扱いが必要だ．もし避けることができるなら避けておきたい．
やる夫 正直，どっちみち厳密性にはあまり興味ないから，今のままのゆるーい理解でいいなら，別に避けなくてもいいんじゃないかお?
やらない夫 数学的な厳密性に興味がない場合でも，例えば実際にコンピュータで計算しようと思ったら，無限大を扱うのは厄介だろ．
やる夫 ああ，それはそうかも知れないお．紙の上に描くなら矢印にすればいいだけだけど，コンピュータ
ではそうもいかないお．
やらない夫 そういう面倒さを避けるために，1 周期だけ積分することにしたのがフーリエ係数だ，と考えてもいいかな．どうせ周期的な信号なんだから，1 周期分だけ考えれば各周波数成分がどういう「割合」で含まれているかを知るには十分だ．
やる夫 結局，周期信号をフーリエ変換すると，フーリエ級数展開したときの Fk に比例した高さのデルタ関数が並ぶことになるってことでいいのかお?

㧗䛥: FkΩ0 = 2π / T0FSΩ
-3Ω0 -2Ω0 -Ω0

f(t)
t

0

Ω0 2Ω0 3Ω0䝕䝹䝍㛵ᩘ䛾 2πFkಸ

T0Ω
-3Ω0 -2Ω0 -Ω00Ω0 2Ω0 3Ω0

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

50

フーリエ変換やらない夫 そういうことになるな．
やる夫 どうして式 (3.59) は，Fk δ(Ω − Ω0 k) じゃなくて 2πFk δ(Ω − Ω0 k) が並んだものになるのかお? 2πはどこから来たんだお?
やらない夫 ほら，フーリエ変換の公式を導くときに1/2π を無理やりくくり出した (p. 34) だろう．その分の辻褄を合わせるために出てきたものだ．
やる夫 あー，そういえばそうだったお．
やらない夫 今まで見てきたような話を，フーリエ逆変換の視点から見ておくことも重要だ．各周波数成分
が有限値 Fk で，それ以外が 0 になっているようなスペクトル F (Ω) が与えられたとしよう．そのま
まフーリエ逆変換の公式に入れるとどうなる?
やる夫 どうなるって…，F (Ω) に ejΩt をかけて積分するから…，ん? 積分っていっても飛び飛びにしか値がないんだお．こんなもの積分しても何も出てこないお．
やらない夫 ああ．まず，高校で習ったような，等幅の短冊の面積の総和で近似して極限を取るような考え方では，こういう飛び飛びにしか値がないような関数の積分は定義できない．だからもう少しうまく定義された積分を導入する必要があるんだが，いずれにせよ，こういう「面積のない」関数の積分は0 になる．
やる夫 なんかよくわからないけど，面積がないから積分が 0 って話は抵抗なく受け入れられるお．
やらない夫 フーリエ逆変換したら全部 0 になっちゃうようではお話にならないわけだ．だから，各 Fk に比例したデルタ関数を考えてやることにして「面積を持つ」ようにしてやるわけだ．そうすればフーリエ逆変換の公式で，うまく時間信号に戻るようになる．

㧗䛥: Fk䝣䞊䝸䜶㏫ኚ᥮䜢ィ⟬tΩ-3Ω0 -2Ω0 -Ω00Ω0 2Ω0 3Ω0䝕䝹䝍㛵ᩘ䛾 2πFkಸ䝣䞊䝸䜶㏫ኚ᥮䜢ィ⟬
f(t)
t

Ω
-3Ω0 -2Ω0 -Ω00Ω0 2Ω0 3Ω0

T0 = 2π / Ω0
やる夫 うーん，雰囲気はわからないでもないけど，いまいち理解しにくいお．
やらない夫 雰囲気だけでもつかんでおくといい．というのは，この考え方は後々いろんなところで出てくるんだ．
座標軸上の飛び飛びの点でしか値をもたないような，つまり離散的な信号に対して，連続信号用の処理を適用したいときに，デルタ関数をかけておくことで各点の値に「面積」を持たせるという考え方だ．離散信号と連続信号が同じ密度を持つようにするためのトリックだと思ってもいい．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第3章

51

フーリエ変換やる夫 ピンと来ないお．
やらない夫 実は同じような考え方は今回の最初の方で既に使っているんだ．フーリエ級数からフーリエ変換に移行するときに，「線の長さの総和」を「短冊の面積の総和」に置き換えた (p. 34) だろ．短冊の面積に置き換える代わりに，「デルタ関数の面積」に置き換えているのが今の話だ．
やる夫 うーん，わかったような，わからないような感じだお．
やらない夫 まあ，またすぐに別の具体例が出てくるので，そのとき話そう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

52

第 4 章 離散時間信号
4.1

離散時間信号の表し方

やらない夫 前回までは，連続時間信号について考えてきたわけだ．ここからは，離散時間信号を考えていくことにする．
やる夫 時間軸上で飛び飛びの時刻にしか値を持たないってことだお．
やらない夫 そうだな．ある一定の時間間隔で飛び飛びの時刻のみを考える．その時間間隔がどんな長さかは，状況によってマチマチだ．1 秒ごとかも知れないし，1 分ごとかも知れない．はたまた 1 年ごと
かも知れないし．1 ミリ秒ごとかも知れない．ともかく一定時間間隔で値を持つとしよう．
やる夫 OK だお．
やらない夫 一番わかりやすいのは，連続時間信号から一定時間間隔で値を取り出してくる，という考え方
だな．例えば音声だと，空気中を伝播する音は，連続時間信号なわけだ．これをマイクロフォンで電気信号に変換する．ここでもまだ連続時間信号だ．その後で，例えば 20 マイクロ秒ごとに電圧を測って，コンピュータに取り込む．この時点で離散時間信号になるわけだ．こうやって連続時間信号から離散時間信号を作り出すことを，サンプリング，あるいは日本語訳で，標本化という．
やる夫 音楽用語のサンプリングと関係あるのかお? 他の曲の一部とか生楽器の音とかを取り込んで使うことをサンプリングって呼ぶお．
やらない夫 ああ，語源としては同じだな．何らかの集合の一部だけ取り出したものをサンプル (標本) といって，取り出す行為自体をサンプリング (標本化) というんだ．統計調査で全数を調べる代わりに
一部だけ調べることをサンプリング調査とか標本調査っていうだろ．楽曲の一部を取り出すのもサン
プリングだ．連続時間信号の一部を取り出して離散時間信号にするのもサンプリングだ．
やる夫 生楽器の音をディジタルシンセサイザに取り込むのは，楽音の一部を取り出すという意味でもサンプリングだし，連続時間信号から離散時間信号を取り出す意味でもサンプリングなんだお．面白いお．
やらない夫 話を戻そう．サンプリングするときの時間間隔のことをサンプリング周期，あるいは標本化周期などと呼ぶ．記号で書くときは Ts なんかをよく使う．添え字の s は sampling の s のつもりだ．その逆数がサンプリング周波数 (標本化周波数) fs で，単位は Hz だな．2π をかけるとサンプリング角
周波数 (標本化角周波数) Ωs になって単位は rad/s だ．さっきの例でいうと，20 マイクロ秒ごとに音声を取り込む場合は，Ts = 20 × 10−6 [s]，fs = 50 × 103 [Hz]，Ωs = 100π × 103 [rad/s] になる．
やる夫 なんかいっぱい出てきたけど，まあわかるお．
やらない夫 そんな風にサンプリングによって作られた離散時間信号は，例えば· · · , f (−2Ts ), f (−Ts ), f (0), f (Ts ), f (2Ts ), · · ·(4.1)

みたいな値が並んだものなわけだ．例えばコンピュータのプログラムで扱うなら配列か何かに入れておくことになるだろう．

第4章

53

離散時間信号

やる夫 まあそうすると思うお．
やらない夫 そうやって考えて，離散時間信号を· · · , f [−2], f [−1], f [0], f [1], f [2], · · ·(4.2)てな風に書くことが多い．サンプリング周期がどんな値だったかは気にせずに，時刻が整数のところでのみ値を持っていると考えるんだな．角括弧は，前回も出てきたが，括弧の中身が整数のときに使うことにする．

f(t)
t
T0

f[n]
n

1
やる夫 てことは，この場合の時間の単位は秒ではないってことかお．
やらない夫 そうだな．時間 [s] を，サンプリング周期 [s] で割って正規化したものを新たに時間だと考え直していることになる．正規化時間とでも呼べばいいかな．正規化時間は無次元量だ．単位はない．単位がないとわかりにくい場合は，頭の中で「1 サンプル，2 サンプル…」と数えるといいかもな．
やる夫 まあ，配列の一種だと考えれば，そんなに違和感はないお．
やらない夫 ただし，処理結果をまた連続時間に戻して考えたり，連続時間との相互関係を考えたりする場
合には，「サンプリング周期がいくらだったのか」を思い出さないといけないので，そこは注意してお
いてくれ．

4.2

正規化角周波数

やらない夫 そういう「正規化された時間」を考えているときは，周波数の方も「正規化」して考えてやらないといけない．これが離散時間信号を考えるとき特有の注意点だ．
やる夫 えーっと，どういうことだお?
やらない夫 まず復習だ．普通の周波数ってどういう意味だった?
やる夫 馬鹿にしないで欲しいお．単位時間つまり 1 秒あたりに何回振動するかを表しているんだお．だか
ら秒の逆数の Hz が単位なんだお．
やらない夫 じゃあ，今の「正規化された時間」の場合の周波数ってどういう意味になる?
やる夫 時間の単位が無次元になるんだお．だから，無次元の逆数で，…あれ? 周波数も無次元かお? それってどういう意味だお…
やらない夫 さっき言った通り「時間の単位は『サンプル』である」と考えるとわかりやすいかもな．1 サ
ンプル時間だけ経過する間に何回振動するか，を表すことになる．
やる夫 ああ，そうなるのかお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

54

離散時間信号

やらない夫 同じく，角周波数はどうなる?
やる夫 普通の角周波数が「1 秒あたりで何 rad 位相が進むか」を表すので，同じように考えると「1 サン
プル時間で何 rad 位相が進むか」ってことなのかお?
やらない夫 その通りだ．その「1 サンプル時間で何 rad 位相が進むか」を正規化角周波数と呼んでいる．
単位は rad だ．
やる夫 んー，角度の単位と同じなのかお．
やらない夫 そうなるな．これも「rad/sample」みたいな単位だと思っておく方が理解しやすいと思う．実
際には (正規化) 時間が無次元なので，結果としてただの rad になるんだけどな．
やる夫 紛らわしいお．
やらない夫 記号としては，この正規化角周波数を小文字の ω で表すことにしよう．今までの普通の角周波数を Ω と大文字で書いてきたのは，これと区別するためだ．
やる夫 あー，前にそんなこと言ってたお．
やらない夫 普通の角周波数のことを，区別のためにわざと「非正規化角周波数」と呼ぶこともある．非正規化角周波数 Ω と正規化角周波数 ω の間には

ω = Ω Ts

(4.3)

の関係がある．Ts はさっき出てきたサンプリング周期だな．この関係は理解できるか?
やる夫 ええと…，1 秒あたり何 rad 進むかが Ω なんだお．で，Ts は 1 サンプル時刻が何秒かを表しているんだったお．だから，これらをかけたら，1 サンプル時刻で何 rad 進むかになるわけだお．
やらない夫 そういうことだな．だからサンプリング周期が 1 秒の場合は，Ω と ω は一致する．
やる夫 混乱してきたお．
やらない夫 具体的な信号を考えてみるといいかな．例えば

x[n] = cos ω1 n

(4.4)という離散時間信号を考えようか．ω1 = π/4 [rad] のときのグラフをかくとどうなる?
やる夫 n は整数なわけだお． n が 1 増えると，cos の位相が π/4 進むわけだから，n が 8 増えたときにちょうど cos が 1 周することになるお．

cos[πn/4]n1
やらない夫 OK．cos π4 n は周期 8 の周期信号というわけだな．周期と角周波数の関係は正規化されていない場合と同じで，8 = 2π/(π/4) になっているわけだ．
やる夫 なるほどだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

55

離散時間信号

やらない夫 もう一度まとめると，離散時間信号を扱うときは，時間を整数で，つまり正規化時間で考えて，角周波数も正規化角周波数で考えることになる．この考え方によく慣れておいてくれ．離散時間信号の話をしているときは，特に断らない限り，単に「角周波数」といったら正規化角周波数のことを指しているので注意してくれ．
やる夫 「正規化角周波数」はわかったけど，「正規化周波数」の方は使わないのかお?
やらない夫 そう言われてみると，あまり使わないな．なんでだろうな．
やる夫 やらない夫もわからないのかお．

4.3

離散時間信号の不思議な性質

やらない夫 ところで離散時間信号では，連続時間のときの常識が通用しない場合があるんだ．そういう例について話しておこうと思う．
やる夫 なんだお，どきどきするお．
やらない夫 さっき，

x[n] = cos ω1 n

(4.5)

の周期を ω1 = π/4 の場合について考えただろう．同じことを ω1 = 2 について考えるとどうなる?
やる夫 なんだ，そんなの同じく考えればいいんだお? 角周波数が 2 なんだから，周期は 2π/2 = π になるお．
やらない夫 本当にそう思うか?
やる夫 …? そりゃ思うお．
やらない夫 グラフをかいてみてくれ．
やる夫 簡単だお．時刻が 1 進むごとに 2 [rad] 位相が進むんだお．それで，時刻が π 進んだときにちょう
ど cos が 1 周…，あれ? π は整数じゃないから，ちょうど cos が 1 周するようなところに信号の値は無いんだお．これってどうなるのかお…．

cos[2n]
0

2

1

3

π

4

5

n

π
やらない夫 そこが核心だ．つまり，cos 2n は周期信号じゃないんだ．三角関数とか，あとは複素指数関数もそうだが，離散時間の場合は常に周期的とは限らない．連続時間で考えたときにちょうど 1 周する
ような時刻がたまたま整数になっているときだけ，離散時間でも周期的になる．この辺が離散時間信号の第一の落とし穴だ．
やる夫 うー，意地悪だお．三角関数が周期的じゃないなんて，気持ち悪いお．…って「第一」のって何だ
お．まだあるのかお．
やらない夫 ああ．そしてこっちの方がもっと気持ち悪いかも知れない．結論を一言でいうと，離散時間の三角関数や複素指数関数は，角周波数を 2π 増やすと元の関数に戻る．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

56

離散時間信号

やる夫 元に戻る? 何言ってるかさっぱりわからんお．
やらない夫 つまり，こういうことだ．また角周波数 ω1 の cos 関数を考えよう．

x[n] = cos ω1 n

(4.6)

やる夫 さっきと同じだお．
やらない夫 この関数で，角周波数が 2π だけ大きくなったらどうなる?
やる夫 どうなるって，周波数が大きくなるんだから，振動が速くなるお．式で書くなら ω1 のところに

ω1 + 2π を代入するだけだお．
cos (ω1 + 2π)n(4.7)

これがどうかしたかお?
やらない夫 もう少し変形してみようか．

cos (ω1 + 2π)n(4.8)

= cos (ω1 n + 2πn)(4.9)= cos ω1 n

(4.10)=x[n](4.11)

これが任意の整数 n について成り立つ．cos の位相が 2πn 増えるってことは n 周して元に戻るってことだからな．
やる夫 x[n] の角周波数を 2π 増やしたらまた x[n] になったってことだお．…えっ? これどういうことだお?
やらない夫 今の話は ω1 の値によらず成り立つ．sin でも，複素指数関数でも同じだ．つまり，何か適当な三角関数や複素指数関数があったとして，その角周波数を 2π 大きくしたら，元の関数に戻るってことだ．
ポルナレフ あ…ありのまま 今 起こった事を話すぜ!
『おれは 角周波数を上げていたと思ったら いつのまにか元の関数に戻っていた』な… 何を言ってるのか わからねーと思うが おれも 何をされたのかわからなかった…
やる夫 いや，あんた誰だお．
やらない夫 まあ，実際あり得ないことだろ，連続時間の常識的に考えて…．ところが，離散時間の世界ではむしろこれが常識なんだ．
やる夫 よくわからんお．どうしてそんなことが起きるんだお．
やらない夫 「角周波数を 2π 増やす」というのは，どういう意味になる?
やる夫 ええと，正規化角周波数なんだから，1 サンプル時間あたりに進む位相が 2π 増えるってことだお．
つまり，1 サンプル時間あたりに振動する回数が 1 回増えるってことだお．
やらない夫 そうだな．グラフで考えようか．これが cos ω1 n だ．1 時刻で ω1 だけ位相が進んでいる．点線が連続時間のコサイン関数で，サンプリングしたものを実線の縦棒で描いている．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

57

離散時間信号n

やる夫 そうなるお．
やらない夫 角速度が 2π 増えるってのは，1 時刻に「もう 1 周分だけ」余計に回るってことだ．それを一点鎖線で示そう．

n

やる夫 あー，各サンプル時刻だけ見たら全く同じだお! 余計に回るのはちょうど 1 周だけから，1 時刻後の位相は同じになるんだお．
やらない夫 そういうことだ．あくまで時刻が整数のところの値しか考えないってことに注意しなくちゃな
らない．三角関数とか複素指数関数を見ると，つい時刻間の点線の部分を頭の中で想像してしまいがちだが，実際には点線の部分は「存在しない」んだ．だから，角周波数が 2π 増えるごとに元の信号に戻ってしまう．
やる夫 うーん，一応納得はしたけど，やっぱり不思議だお．
やらない夫 慣れるしかないかな．具体的な信号を見てみるとわかりやすいかも知れない．例えば，cos ωtを角周波数変えながらプロットしてみるとこんな風になる．上から順に ω が 0 から 2π まで増えていっている．横軸は時間で，点線は，連続時間信号だった場合のプロットだ．同じものが離散時間信
号だと縦棒で示した点になる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

58

離散時間信号

ω = 0.0 π̻ω = 0.2 π̻ω = 0.4 π̻ω = 0.6 π̻ω = 0.8 π̻ω = 1.0 π̻ω = 1.2 π̻ω = 1.4 π̻ω = 1.6 π̻ω = 1.8 π̻ω = 2.0 π



̻



























































































































































やる夫 大軍だお．
やらない夫 連続時間だと角周波数が増えるにしたがってどんどん振動が速くなっていく．これはわかるな?
ところがこれをサンプリングすると，ω = 2π で ω = 0 と同じになる．つまり直流に戻るんだな．
で，同じように 2π から 4π まで角周波数を増やしていくとこうなる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

59

離散時間信号

ω = 2.0 π



̻



























































































































































ω = 2.2 π ̻ω = 2.4 π ̻ω = 2.6 π ̻ω = 2.8 π ̻ω = 3.0 π ̻ω = 3.2 π ̻ω = 3.4 π ̻ω = 3.6 π ̻ω = 3.8 π ̻ω = 4.0 π ̻

やる夫 2π を過ぎて，そのまま角周波数を増やしていっても，0 〜 2π の間の繰り返しになってるわけだお．
やらない夫 そういうことだ．もう一つ気づいて欲しいのは，離散時間信号だと ω = π のときが一番振動が速いってことだ．そこから 2π にかけてどんどん遅くなっていって直流に戻る．
やる夫 あー，つい点線を見てしまうけど，縦棒だけを見ると，ω = π を境に対称に直流まで戻っていくお．
やらない夫 なので，繰り返しの区間が 0 〜 2π だと思わずに，−π 〜 π だと考える方がわかりやすいだろうな．実際，ディジタル信号処理ではそのように考えることが多いんだ．
角周波数 0，つまり直流を中心として，そこからちょっと角周波数が増えると小さな正の周波数になって，ちょっと減ると小さな負の周波数になる．正とか負の周波数っていう概念は以前話した通りだな．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第4章

60

離散時間信号

そして最も高周波なのが，角周波数が π あるいは −π のときだ．この範囲外に角周波数を上げよう
としても，結局 −π 〜 π の範囲を繰り返すだけになる．
やる夫 そう言えば，周波数成分を考えるときは，正の周波数と負の周波数を組にして考えるとわかりやす
かったんだお．そういう点でも，−π 〜 π の範囲で考える方が便利そうだお．
やらない夫 というわけで，三角関数にしろ複素指数関数にしろ，角周波数ってのは，−π 〜 π の範囲だ
けを考えれば十分だってことだ．この話は今後かなり重要になってくるので，よく理解しておいて欲しい．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

61

第 5 章 離散時間フーリエ変換
5.1

離散時間信号をそのままフーリエ変換するとどうなるか

やらない夫 さて，離散時間信号ってのがどんなものだかわかったところで，その周波数スペクトルがどうなるかを考えていこう．
やる夫 要するにフーリエ変換すればいいんだお? 何か難しいのかお?
やらない夫 ん? 難しくないと思うか．たのもしいじゃないか．
やる夫 だって，普通にフーリエ変換の公式に入れればいいんじゃないかお?
やらない夫 連続時間のフーリエ変換の式をそのまま使えばいいって意味か? じゃあ，そうすると何が起きるかって点から議論を始めるか．対象とする離散時間信号を f [n] と書こう．n は整数だ．これを無理やり連続時間信号だとみなしてフーリエ変換するわけだ．ということでいいか?
やる夫 そうだお．それだと何か問題があるのかお?
やらない夫 無理やり連続時間信号にしたものを f (t) と書こう．f (t) と f [n] は，同じ f という記号だが，基本的には別物だと考えてくれ．で，f (t) と f [n] の関係は

f [n], t = n
f (t) =
0,otherwise(5.1)

だと決めることにする．少し丁寧にグラフに描くとこうなるかな．白抜きの丸は値がないところだ．
f[n]
n

1
f(t)

t

1
やる夫 えーと，t が整数のときは f [n] と同じ値で，整数以外のときは 0 ってことだお．グラフは気持ち悪いけど，自然な決め方だと思うお．
やらない夫 で，その f (t) をフーリエ変換するわけだ．フーリエ変換の公式に入れる．
 ∞F (ω) =
f (t)e−jωt dt

(5.2)

−∞

やる夫 あれ? 連続時間なのに ω は小文字でいいのかお?
やらない夫 ああ，この場合は正規化角周波数で考えるのが正解だ．連続時間にはしたものの，この場合の時間の単位は「秒」ではないからな．
「単位時間」は，離散時間だったときの「1 サンプル時刻」に一致する．つまり正規化された時間で考えているわけだ．

第5章

62

離散時間フーリエ変換

やる夫 そっか，連続時間だからといって必ずしも非正規化周波数で考えるわけではないんだお．あくまで，時間が正規化されているかどうかが問題なんだお．
やらない夫 そういうことだ．話を戻そう．さっきの式のフーリエ変換を計算するとどうなるかという話だ．
やる夫 f (t) に e−jωt をかけて積分するんだお．…あれ? でも f (t)e−jωt は t が整数のとき以外は 0 だから，積分しても 0 になるんだお…．これじゃダメだお．何かどこかで聞いた (p. 50) 話だお．
やらない夫 そうだな．もとの離散時間信号 f [n] がどんなものだったとしても，今のように連続信号とみなしてフーリエ変換する方法では必ず 0 になってしまうので意味がない．別の方法が必要となる．

5.2

離散時間フーリエ変換

やらない夫 というわけで，別の方法を考えよう．ひとつの考え方はこうだ．t が整数のところ以外で f (t)e−jωtが値を持たないのが問題なので，値を持たせてやる．どんな値を持たせるかというと，t = n − 1/2と t = n + 1/2 の間は，t = n のときの値，つまり f [n]e−jωn と等しい考えよう．こんな階段状のグ
ラフを積分するわけだ．これなら積分が値を持つことができる．

f[n]e-jωntt = n – 1/2

t = n + 1/2

やる夫 でも，こんなガタガタのグラフを積分するのは面倒くさそうだお．
やらない夫 そんなことないぞ．要するにこの短冊それぞれの面積の合計を計算すればいいんだろ．だから総和を使って書き換えることができる．短冊の横幅は 1 なので，F (ω) =∞
f [n]e−jωn

(5.3)

n=−∞

となるわけだ．これを離散時間フーリエ変換 (Discrete-Time Fourier Transform; DTFT) と呼んでいる．
やる夫 あれ，あっさり結論に達したお．
やらない夫 簡単だろ．フーリエ変換の公式 (3.11) と見比べても，その離散時間版として違和感のない形になっているんじゃないかと思う．
やる夫 積分が総和に変わった程度だお．自然だと思うお．
やらない夫 というわけで，これで話を終わってもいいんだが，同じ式を別の見方で導いてみようと思う．
やる夫 えー，もう結論にたどり着いたんだから，これ以上面倒な話はいらないお．
やらない夫 そう言うな．こっちの考え方も重要なので知っておいた方がいい．話を少し巻き戻して，離散時間信号 f [n] を連続時間化するところに戻ろう．t が整数のところで f [n] の値をそのまま持ってきただけでは，面積がないので積分して 0 になってしまってまずかったわけだ．
やる夫 そうだったお．
やらない夫 そこで，各整数時刻の値を，積分しても値が残るようにしておくことにする．どういうことかというと，デルタ関数をかけておくということだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第5章

63

離散時間フーリエ変換

f(t)

t

1
式で書くならこうなる．
∞
f (t) =

f [n]δ(t − n)

(5.4)

n=−∞

やる夫 えーと，ある 1 個の n について考えると，デルタ関数を時刻 n だけシフトして，その高さを f [n]倍するわけだお．それを無数の n について足し合わせるから，各整数時刻の値 f [n] のそれぞれにデルタ関数をかけ合わせたようなものになるんだお．
やらない夫 あとはこれを，フーリエ変換の公式 (3.11) につっこんでやるわけだ．
 ∞ 
∞F (ω) =
f [n]δ(t − n) e−jωt dt
−∞

=
=

∞

n=−∞
∞


(5.5)

n=−∞

 ∞

f [n]
−∞

δ(t − n)e−jωt dt(5.6)

f [n]e−jωn

(5.7)

n=−∞

やる夫 あっ，式 (5.3) と同じになったお．
やらない夫 というのが，離散時間フーリエ変換の定義のもうひとつの考え方だ．
「もうひとつの」と言ったが，よく考えてみると，どちらの考え方も同じことを意味している．被積分関数を短冊状に拡張するにしろ，被積分関数にデルタ関数をかけるにしろ，[n − 1/2, n + 1/2] の区間での積分，つまり面積が f [n]e−jωn になるような操作を行っている点は同じだ．短冊のひとつひとつを，面積を保ったまま
ギュッと幅のない線に押しつぶした結果，高さが無限大になるイメージだ．
やる夫 うーん，ていうか，その辺も含めてやっぱりどっかで聞いたような話だお．
やらない夫 ああ．どこで聞いた話だったか覚えているか?
やる夫 えーと，確か周期信号をフーリエ変換したらどうなるかの話をしていたとき (p. 47) の一番最後だ
お．あのときは周波数領域で，フーリエ係数にデルタ関数をかけたものを考えて，逆フーリエ変換が計算できるようにしたんだったお．

f(t)
t

Ω
-3Ω0 -2Ω0 -Ω00Ω0 2Ω0 3Ω0

T0 = 2π / Ω0
やらない夫 そう．今回の話は，あのときの話と本質的に同じだ．ただし，時間領域と周波数領域が逆になっている．フーリエ変換も逆フーリエ変換も計算上はほとんど同じだったからな．時間と周波数を逆に見たときに同じようなことが起きるのは当然のことだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第5章

64

離散時間フーリエ変換

やる夫 あのときは時間領域で周期的な関数を考えていて，そういう関数は周波数領域では離散的なスペク
トルになったんだったお．今回は逆で，時間領域が離散的なんだお．
やらない夫 お，すごく大事な点に足を踏み込んだな．
やる夫 な，なんだお?
やらない夫 離散的な周波数スペクトルを持つ関数は，時間領域では周期的だったわけだ．じゃあ，離散的な時間信号は，周波数領域ではどうなっていると思う?
やる夫 えっと…，その流れでいうと周期的ってことになるお．
やらない夫 だよな．その周期はどうなる?
やる夫 えっ，どうなるんだお．周期時間関数のスペクトルの場合，周波数成分が Ω0 ごとに値を持っているんだとすると，時間領域での周期は T0 = 2π/Ω0 だったんだお．今回の話に当てはめると，時間領域で 1 ごとに値を持つような離散時間関数なんだから，周波数領域での周期は… 2π/1 つまり，2π ってことかお?
やらない夫 その通り．つまり，離散時間信号の周波数スペクトルは常に周期的になって，その周期は 2π
だ．同じスペクトルの形状が角周波数 2π ごとに繰り返し現れることになる．

f(t)

1

t

ω
-3π

-π

0

π

3π

やる夫 2π ごとに繰り返す…あれ? この話もどこかで聞いた気がするお．
やらない夫 ああ，今回の話は伏線回収ポイントだらけだ．どこで聞いた話だった?
やる夫 えーと，離散時間の三角関数とか複素指数関数は，角周波数が 2π 増えると元に戻る (p. 55) んだ
お．そのまま角周波数を増やしていっても，同じ信号が繰り返し現れるだけなんだったお．
やらない夫 そうだったな．周波数スペクトルってのは，いろんな周波数の複素指数関数が，それぞれどういう割合で含まれているかを表しているものだっただろ．ところが，離散時間の複素指数関数は角周
波数を 2π 増やすと同じものに戻って，以下繰り返しになるんだった．てことは，周波数成分の含まれている割合を表示してみたときに 2π ごとの繰り返しになるのは当然の帰結だろ．常識的に考えて…
やる夫 ああ，そりゃそうだお．例えば角周波数が 0.5π ，2.5π ，4.5π …の複素指数関数ってのは全部同じものなんだお．だからそれらの成分が元の信号に含まれている割合は同じじゃなきゃおかしいお．

5.3

離散時間フーリエ逆変換

やらない夫 じゃあ次は逆変換だ．F (ω) から f [n] に戻す処理だな．まず，逆フーリエ変換の公式 (3.10) でそのまま戻すとどうなると思う?
やる夫 ええと，F (ω) はそもそも，f [n] の各時刻にデルタ関数をかけてからフーリエ変換したものだった
お．だから普通に逆フーリエ変換すると，デルタ関数倍された f [n] に戻るんだお．
やらない夫 正解だ．じゃあ，f [n] まで戻すためにはどうしたらいいと思う?

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第5章

65

離散時間フーリエ変換

やる夫 ん? それもどこかで聞いた気がするお．…ああ，これもフーリエ級数とフーリエ変換の関係 (p. 47)
について聞いたときだお．あのときは，周期的な時間関数をフーリエ変換すると無限大になってデルタ関数が出てきちゃうから，積分範囲を 1 周期分だけにしたんだったお．今回は周期的な周波数スペクトルを逆フーリエ変換するんだから，やっぱりその積分範囲を 1 周期分だけにすればよいってことかお?
やらない夫 おお，いい推測だ．つまり
 π
1f [n] =F (ω)ejωn dω
2π −π

(5.8)

こういうことになるな．
やる夫 そう思うお．でも本当にそれでいいのかは自信ないお．
やらない夫 そうだな．特に，今の説明だと「定数倍」の部分がこのままでいいのか，別の係数に変える必要があるのかはよくわからない．念のため，f [n] を式 (5.3) で F (ω) に変換して，それをにさらに式(5.8) で変換したときにちゃんと f [n] に戻ることを計算で確かめておこうか．
 π
1
F (ω)ejωn dω
2π −π π  ∞1=
f [m]e−jωm ejωn dω
2π −π m=−∞(5.9)
(5.10)

式 (5.8) の右辺に式 (5.3) を代入しただけだ．
やる夫 んーと，代入される式 (5.8) に n が出てくるから，代入する方は n をあらかじめ m に書き換えているんだお．
やらない夫 計算を続けよう．積分と総和を入れ替える．

 π
∞
1 
··· =
f [m]
ejω(n−m) dω
2π m=−∞−π=(5.11)∞
1 
f [m] · 2πδm,n2π m=−∞(5.12)=f [n](5.13)というわけで f [n] に一致した．
やる夫 ちょっと待って欲しいお．着いていけてないお．クロネッカーのデルタがどうして出てくるんだお?
やらない夫 前に同じような計算をしたから，途中は省略してある．式 (2.21) 〜 (2.25) の辺りでやった計算と全く同じなので，ゆっくり計算してみればいい．
やる夫 ふーん，じゃあ後でやっとくお．で，クロネッカーのデルタが出てくるから総和のうち m = n の項だけが残って，f [n] に戻るんだお．
やらない夫 というわけで，晴れて式 (5.8) を離散時間フーリエ逆変換 と呼ぶことにする．
まとめよう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第5章

66

離散時間フーリエ変換• 離散時間 n (整数) で定義された関数 f [n] (のうち実用上重要なものの多く) に対して，式(5.3) で計算される F (ω) を f [n] の離散時間フーリエ変換と呼ぶ．(あるいはこの計算をすること自体を離散時間フーリエ変換と呼ぶ)• F (ω) から，式 (5.8) によって元の f [n] が復元できる．この計算を離散時間フーリエ逆変換と呼ぶ．(あるいは「f [n] は F (ω) の離散時間フーリエ逆変換である」という言い方もする)• ω は正規化角周波数を表す連続変数である．F (ω) は f [n] に含まれる正規化角周波数 ω の振動成分の量 (振幅・位相) を表す．
• F (ω) は周期 2π で周期的である．通常 −π < ω < π の範囲のみを考える．
• |F (ω)|， F (ω)，|F (ω)|2 をそれぞれ，離散時間信号 f [n] の振幅スペクトル，位相スペクトル，パワースペクトルと呼ぶ．

やる夫 フーリエ変換のときの F [f (t)] = F (Ω) みたいな表し方はないのかお?
やらない夫 万人に広く受け入れられている書き方はないようだな．以降では，こんな風に書くことと約束
しよう．
DTFT

f [n] → F (ω)
F (ω)

DTFT

→

−1

(5.14)

f [n](5.15)

f [n] ↔ F (ω)(5.16)DTFT[f (t)] = F (ω)(5.17)DTFT−1[F (ω)] = f (t)(5.18)

やる夫 あれ? ↔ がフーリエ変換のときと区別されてないお．
やらない夫 ああ，どっちを表しているかは空気読んで判断しろ．
やる夫 ひどいお．
やらない夫 まあ実際混乱することも多いから注意してくれ．時間領域については，時間変数が実数か整数かで見分けることになる．丸括弧か角括弧で見分ける手もあるな．ただし教科書によっては括弧の種類を区別していない場合もあるので注意だ．
周波数領域では，我々は Ω みたいに大文字の変数を使う場合は非正規化周波数， ω のような小文字の場合は正規化周波数ということにしているので，まあそれである程度判断できるかな．もっとはっきり区別したいときに，離散時間フーリエ変換 F (ω) をF (ejω )(5.19)と書くこともある．
やる夫 な，何なんだお，そのややこしいのは．
やらない夫 どうしてこういう書き方をするかは，後から出てくる z 変換ってのがわからないと説明できな
い．今のところは，こういう書き方をすることがあるという約束だと思ってくれればいい．ついでに言うと，フーリエ変換 F (Ω) の方もF (jΩ)(5.20)と書くことがある．こっちの書き方はラプラス変換に由来している．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第5章

67

離散時間フーリエ変換

やる夫 混乱してきたお．
やらない夫 まあ，以降では基本的に F (ω) や F (Ω) という書き方を使うことにする．一部の議論で，あるいは他の教科書でこういう表示が出てきても驚かないように，そういう記法があることだけ知っておいてくれ．後でラプラス変換や z 変換が出てきたときにまた説明しよう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

68

第 6 章 離散フーリエ変換
6.1

離散時間フーリエ変換の困るところ

やらない夫 これまで，フーリエ級数から始めて，フーリエ変換に進み，そして前回は離散時間フーリエ変換を学んだわけだ．
やる夫 そうだお．離散時間フーリエ変換がわかったので，これで晴れて離散時間信号の周波数スペクトルを計算できるようになったわけだお．
やらない夫 うーん，ま，そう言っても間違いではないな．
やる夫 何でそんな歯切れの悪い感じなんだお?
やらない夫 計算できるのは確かにその通りなんだ．机の上ではな．ところが，コンピュータの中で計算できるかって話になると，ちょっと手放しでは喜べない．
やる夫 んー，どういうことだお．
やらない夫 ちょっと離散時間フーリエ変換と逆変換の公式をもう一回書いてみてくれ．
やる夫 えーと，式 (5.3) と (5.8) だお．

F (ω) =∞
f [n]e−jωn

n=−∞
 π

f [n] =

1
2π

F (ω)ejωn dω

(5.3)
(5.8)

−π

やらない夫 ま，とりあえず式 (5.3) の離散時間フーリエ変換の方はよしとしようか．ある角周波数 ω を固定して右辺を計算すれば，その周波数の成分が計算できる．もちろん無限和は計算できないけど，現実世界に存在するの信号は有限の長さだからな．有限個の総和で計算できる．問題は式 (5.8) の逆変換だ．
やる夫 んー，逆変換だって，何か時間 n を固定して右辺の積分を計算するだけ…あ，そうか，積分しな
きゃならないんだお．
やらない夫 そこだ．時間は離散化されたけど，周波数は連続のままだからな．積分は計算機では厳密には計算できない．
やる夫 じゃあ，周波数も離散化すればいいんだお!
やらない夫 おお，空気読めるじゃないか．今回はその話だ．

第6章

離散フーリエ変換

6.2

周波数領域を離散化する

69

やらない夫 さて，周波数領域が離散化されているためには，時間領域ではどうなっている必要があると思う?
やる夫 うっ，えーと，どうだったかお．時間領域で離散化したときは，周波数領域でスペクトルが周期的になったんだお．時間と周波数をひっくり返して考えると，「周波数を離散化すると時間領域では周期的になる」ってことでいいのかお?
やらない夫 その通りだ．落ち着いて思い出してみて欲しいんだが，フーリエ級数ってまさにそうだったろ．
やる夫 ああ，そういえば，時間の周期関数を飛び飛びの周波数成分に分解するのがフーリエ級数展開だったお．周波数領域で離散的になってるお．
やらない夫 今回考えるのは，周波数領域だけじゃなく，時間領域・周波数領域の両方で離散的にするって点がフーリエ級数とは違うところだ．
やる夫 ええと，そうすると…，時間領域でも周波数領域でも周期的になる…ってことかお?
やらない夫 そうなるな．時間も周波数も，離散的でかつ周期的ってことだ．
やる夫 おお，対称的だお．
やらない夫 整理しておこう．離散時間信号の周波数スペクトルは，一般の場合は，周期 2π の周期的な連続スペクトルになる．ただし，その特殊な場合として，周期 N の周期的な時間信号の場合を考えると，周波数スペクトルは，周期 2π で周期的で，かつ離散的なスペクトルになる．これならコンピュー
タで扱えそう，という寸法だ．
やる夫 時間領域でも周波数領域でも，有限個の数字の組で表されているわけだお．だからコンピュータで扱えるわけだお．
やらない夫 そういうことだ．ところで，周波数領域ではどんな間隔で離散化されていることになると思う?
やる夫 えーと，それはフーリエ級数のときと同じように考えればいいんだお．時間領域で周期 N ってことは，基本角周波数が 2π/N だってことだお．だから，周波数領域では 2π/N 間隔で離散化されていることになるお．
やらない夫 おお，わかってるじゃないか．
やる夫 馬鹿にしないでほしいお．
やらない夫 さて問題．周波数領域の周期 2π の区間のうち，何箇所の点で周波数スペクトルは値を持つだ
ろうか．
やる夫 え? 長さ 2π の区間で 2π/N ごとに値を持つんだから，N 点に決まってるお．わざわざ聞くほどのことかお?
やらない夫 強気だな．まあ答えとしてはそれで正解だ．ただし，時間と周波数の対称性という観点でこれをよく理解しておいて欲しい．時間領域で 1 周期あたり N 点からなる離散時間信号は，周波数領域
でも 1 周期あたり N 点の離散周波数スペクトルになる．
やる夫 あー，なるほど，時間でも周波数でもちょうど N 点で 1 周するんだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

70

離散フーリエ変換

やらない夫 これから導出するのは，そういう N 点の離散時間信号から N 点の離散周波数スペクトルへの変換とその逆変換だ．本来，離散時間・離散周波数フーリエ変換とでも呼ぶべきものだが，長いので普通は離散フーリエ変換 (Discrete Fourier Transform; DFT) と呼ぶ．
やる夫 そりゃまた大胆に略したお．

6.3

離散フーリエ逆変換

やらない夫 ということを踏まえた上で，式 (5.3) と (5.8) の離散時間フーリエ変換をもう一度見てみよう．

F (ω) =∞
f [n]e−jωn

n=−∞
 π

f [n] =

1
2π

(5.3)

F (ω)ejωn dω

(5.8)

−π

周期的でない離散時間信号の場合，離散時間フーリエ変換することで，周期 2π で，連続的なスペクトルが得られるんだった．

1

f[n]
n

F(ω)

DTFT

ω
-3π

-π

0

π

3π

これが，f [n] が周期的な場合にどうなるかを考えてみるわけだ．まず，スペクトル F (ω) が離散的になるってのは，これまで話して来た通りだ．じゃあ，各点の F (ω) はどういう値になるか?
やる夫 式 (5.3) を素直に考えると，F (ω) の計算は，f [n] の 1 周期分の総和をさらに無限に足し合わせることになるから，無限大に発散するお．デルタ関数が一定間隔で並んだようなスペクトルになるお．

1

2π/8

f[n]
n

ω
-3π

࿘ᮇ: 8

F(ω)

DTFT
-π

0

π

3π

࿘ᮇ: 2π

やらない夫 そうだな．前回で，周期的スペクトルのフーリエ逆変換を考えたとき (p. 64) と同じことが起きているわけだ．時間と周波数が逆だけどな．周期的でない時間信号の場合に連続的に広がっていた
スペクトルが，一定間隔の飛び飛びの線の並びにギュッと圧縮されるイメージだ．
やる夫 ギュッと圧縮したから線の高さが無限大に伸びるって話を前に聞いたお (p. 63) ．
やらない夫 まあ，あくまでイメージだけどな．でもそういうイメージを持っておくのは重要だ．
で，逆変換である f [n] の計算の方は F (ω) を積分するわけだが， 2π/N の間隔でデルタ関数が並んだ F (ω) を長さ 2π の区間で積分するわけなので，要するにインパルス N 本の面積を足し合わせることになるわけだ．それによって，元の有限値の列 f [n] に戻るという仕組みだ．
やる夫 確かに前回と似たような話だお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

71

離散フーリエ変換

やらない夫 というわけで，離散時間フーリエ変換の枠組みで周期時間信号を考えようと思うと，無限大の値を持つ F (ω) が出てくるわけだ．無限大のままじゃ不便だから，有限の値で表せるように改変したのが離散フーリエ変換という枠組みだ．
まずは，F (ω) をこんな風に表すところから始める．

F (ω) =∞
ck δ(ω −

k=−∞

2πk
)
N

(6.1)

やる夫 いきなりややこしい式だお．んー，そもそも ck って何だお．
やらない夫 F (ω) はインパルスを 2π/N おきに並べたものだっただろ．ω = 2πk/N に立っているインパルスが，デルタ関数 δ(ω − 2πk/N ) の ck 倍の高さだとする．インパルスの「面積」が ck だと考えてもいい．
やる夫 えーと，あ，そうか，ck δ(ω − 2πkN ) が ω = 2πk/N に立っているインパルスで，その付近だけを積分区間にとって積分すると ck になるんだお．で，それを k = −∞ · · · ∞ まで重ね合わせたのが F (ω)になるんだお．
やらない夫 そうだな．F (ω) が周期 2π なのに対応して，ck は周期 N だということに注意してくれ．
やる夫 c0 ，c1 ，… と増えていって cN −1 の次の cN は c0 と同じ値に戻るわけだお．
やらない夫 で，式 (5.8) の積分に，これを代入する．

f [n] =

1
2π

 π 
∞
−π k=−∞

ck δ(ω −2πk jωn
)e dω
N

(6.2)

N −1

=

2πkn
1 
ck e j N
2π

(6.3)

k=0

やる夫 えーと，デルタ関数を含む式の積分だから， ω = 2πk/N のところの値だけが残るわけだお．…あれ? 総和の範囲は 0 から N − 1 までなのかお? 何かおかしくないかお?
やらない夫 ああ，そこはちょっと説明が必要だな．まず，長さ 2π の積分区間が N 本のインパルスを含んでいるってのはわかるだろう．だから連続する N 個の k について総和を取ることになるんだが，ほら，ck は周期 N で繰り返すわけだろ．どの範囲で取っても同じだから，一番わかりやすそうな 0 から N − 1 までにしている．
やる夫 んー，それってわかりやすいかお? だってそれって，式 (5.8) でいうと 0 〜 2π を積分区間に取ったようなものだお．今までみたいに −π 〜 π に相当する範囲で総和を取る方がわかりやすいんじゃないかお?
やらない夫 ああ．実はそれは正しい指摘だ．ただし，今まで考えてきたフーリエ変換だって 0 〜 2π を積分範囲に取っても全く問題ないってことに注意してくれ．単に慣習の問題でしかないと思っていい．
離散フーリエ変換はどうしてもコンピュータで処理することを前提にして考えるからな．プログラムの中で配列とかを表すことを考えると，0 〜 N − 1 を範囲にするってのは，まあ妥当な慣習かなと思う．配列のインデックスに負の数を取れないプログラミング言語が多いからな．
やる夫 ふーん，じゃ，まあそう思うことにしますお．
やらない夫 というわけで，ほとんどゴールにたどり着いているんだが，最後に，慣例に従って定数倍のところを変えておこうと思う．ck = F [k] · 2π/N となるような数列 F [k] を導入しよう．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

72

離散フーリエ変換

やる夫 また天下りですかお．
やらない夫 まあ，そうなんだが，フーリエ変換対を定義するときにで定数倍の決め方が大して本質的でな
いのは，これまで見てきた通り (p. 37) だ．こう決める理由も後でわかる．
やる夫 ふーん，ま，いいお．
やらない夫 ともかく，さっきの式の ck に代入する．その結果得られるのがこれだ．
N −1

f [n] =

2π
1 
F [k]ej N kn (n = 0, 1, · · · , N − 1)
N

(6.4)

k=0

これを離散フーリエ逆変換と呼ぶ．
やる夫 あれ? 逆変換? 離散フーリエ変換より先に逆変換が出てきたお．
やらない夫 そうだな．これまでの議論は，離散時間フーリエ「逆」変換の積分がコンピュータで計算できないのを何とかしようという流れだったので，逆変換が先に導出されるのはまあ自然なことだ．

6.4

離散フーリエ変換

やる夫 じゃあ離散フーリエ変換の方はどうなるのかお?
やらない夫 もちろん式 (5.3) が出発点になる．

F (ω) =∞
f [n]e−jωn

(5.3)

n=−∞

f [n] が周期的なとき， 左辺の F (ω) ってのは，ω = 2πk/N に無限大のインパルスが立っていて，それ以外の箇所では 0 になるような関数だった．
やる夫 そうだったお．
やらない夫 どうして無限大になるかというと，右辺の計算が f [n] の 1 周期分の総和をさらに無限に足し合わせることになるからだという話をさっきしていたな．
やる夫 覚えてるお．
やらない夫 なので，例によって総和を 1 周期分だけでやめてしまうことで，無限大になるのを回避しよう．

F (ω) が意味のある値を持つ ω = 2πk/N の各点についてこれを計算する．つまり F (2πk/N ) を計算するわけだが，これを k の関数 F [k] と考えよう．この計算が離散フーリエ変換だ．

F [k] =

N−1
f [n]e−j N kn (k = 0, 1, · · · , N − 1)
2π

(6.5)

n=0

やる夫 うん，1 周期分だけ計算することで無限大にならないようにするってのは，フーリエ級数のとき(p. 49) も，離散時間フーリエ逆変換のときにも (p. 64) 出てきた話だお．今回も定数倍については確認が必要じゃないかお?

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

73

離散フーリエ変換

やらない夫 そうだな．離散フーリエ変換したものを離散フーリエ逆変換して，元に戻ることを確認してお
こう．
N −1

1 
2π
F (k)ej N kn
N
k=0


N −1 N −1
2π
1  
−j 2π
km
ej N knf (m)e N
=
N
m=0

(6.6)

(6.7)

k=0

N −1

=

N −1

 2π
1 
f (m)
ej N k(n−m)
N m=0

(6.8)

k=0

N −1

=

1 
f (m)N δm,n
N m=0

(6.9)

= f (n)(6.10)

やる夫 ああ，これも何度も出てきたような計算だお．クロネッカーのデルタが出るところは，えーと，m = nのときと m = n のときで場合分けして普通に計算すればいいんだお．
やらない夫 離散フーリエ変換の定義式 (6.5) の頭には定数倍がついていないのに注意してくれ．こうなる
ように，さっき ck = F [k] · 2π/N と決めたんだと考えるといい．
やる夫 離散フーリエ変換の式の方をきれいにするために，離散フーリエ逆変換の式にしわ寄せがいったわ
けだお．フーリエ変換とか離散時間フーリエ変換と同じだお．
やらない夫 というわけで，離散フーリエ変換の対が式 (6.5) と式 (6.4) として無事定義できた．時間領域と周波数領域のどちらも離散的で，どちらも周期 N で繰り返す．しかも値は無限大に飛ばない．コンピュータでは，どちらもサイズ N の配列で表せるわけだ．

1

f[n]

1

n
0 12L

DFT

N-1

F[k]
k

0 12 L N-1

まとめよう．
• 離散時間 n (整数) で定義された周期 N の関数 f [n] に対して，式 (6.5) で計算される F [k]を f [n] の離散フーリエ変換と呼ぶ (あるいはこの計算をすること自体を離散フーリエ変換と呼ぶ)．

• F [k] も，整数 k について定義される周期 N の関数である．
• F [k] から，式 (6.4) によって元の f [n] が復元できる．この計算を離散フーリエ逆変換と呼ぶ．(あるいは「f [n] は F [k] の離散時間フーリエ逆変換である」という言い方もする)• k は周波数のインデックスを表す整数で，F [k] は，f [n] に含まれる正規化角周波数 2πk/N[rad] の振動成分の量 (振幅・位相) を表す．

• |F [k]|， F [k]，|F [k]|2 をそれぞれ，周期的離散時間信号 f [n] の振幅スペクトル，位相ス
ペクトル，パワースペクトルと呼ぶ．

やる夫 何ていうか，このまとめも毎回おなじみな感じだお．筆者もコピペしてるんじゃないかお?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08



第6章

74

離散フーリエ変換

やらない夫 他の章と見比べてみるのもいいかもな．周波数を表すインデックス k が，実際には正規化角周
波数 2πk/N に対応しているというのが重要なところだ．特に注意が必要なのは，k が大きくなったからとって，周波数が高くなるとは限らないことだ．
やる夫 え，えっ!? どういうことだお．k が大きくなったら 2πk/N だって大きくなるお．高周波になるんじゃないかお．
やらない夫 そこが勘違いしやすいところだ．離散フーリエ変換 F [k] は周期 N の周期関数だったことを忘れてないか? k = N で k = 0 に戻るんだ．
やる夫 あ…，そうだったお．確かに k = N は正規化周波数でいうと 2π [rad] になるお．0 と一緒で直流成分だお．
やらない夫 k が 0 から N まで増える間に，正規化角周波数は 0 から 2π まで変化するわけだが，その間で一番周波数が高いのはあくまで真ん中の π のところだ．k でいうと，N が偶数なら k = N/2 がこれに対応する．これを過ぎると周波数は k が増えるとともに低くなっていく．

ṇ䛾࿘Ἴᩘ

㈇䛾࿘Ἴᩘ
F[N] = F[0]F[N-1]

F[0]
F[1]
F[2]

-π

0

π

ప࿘Ἴᩘ

2π

ω

㧗࿘Ἴᩘ

やる夫 うー，まぎらわしいお．
やらない夫 k = N/2 以降は，前に話した「負の周波数」に相当する領域なわけだ．グラフを描いて考える
ときは，むしろそこで切って左右を入れ替える方がわかりやすいかもな．
やる夫 うーん，気持ち悪いお．やっぱり k を 0 から N − 1 まで取る慣習が間違ってる気がするお．
やらない夫 まあ，こればっかりは慣れてもらうしかないな．
やる夫 記号での表し方も，やっぱり標準的なものはないのかお．
やらない夫 そうだな．こんな風に書くことにしよう．
DFT

f [n] → F [k]
F [k]

6.5

−1

DFT

→

(6.11)

f [n](6.12)

f [n] ↔ F [k](6.13)

DFT[f (t)] = F [k](6.14)

DFT−1 [F [k]] = f (t)(6.15)

高速フーリエ変換

やらない夫 さて，離散フーリエ変換がわかったので，コンピュータで信号の周波数分析ができるようになったわけだ．ただし，実際には，あの公式の通り計算しちゃいけない．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

75

離散フーリエ変換

やる夫 なんだお，またちゃぶ台返しかお．
やらない夫 もっと効率のよい計算方法がある．高速フーリエ変換 (Fast Fourier Transform; FFT) と呼ばれている．離散フーリエ変換が必要なときは，常にこの計算方法を用いるべきだ．
やる夫 じゃあそれを教えて欲しいお．
やらない夫 そうしたいのはヤマヤマなんだが，時間がないので，パス．
やる夫 えー，ひどいお．
やらない夫 基本的なことはだいたいの信号処理の教科書には書いてあるはずなので，そちらを当たってほ
しい．そしてもう一つ，世の中に出回っている高速フーリエ変換のプログラムには，普通の教科書に書いてあることよりもう少し踏み込んだ高速化がなされているものも多い．だから実用上は，自分でプ
ログラムを書こうと思わずに，ちゃんと世の中で実績のあるライブラリなり何なりを使うのが一番だ．
やる夫 人のふんどしかお．
やらない夫 時にはそういう割り切りも必要だ．
やる夫 でも，高速って言うけど，実際のところどんだけ高速なんだお．そんな大した違いあるのかお．
やらない夫 そうだな，その点だけは議論しておこうか．まず，離散フーリエ変換を公式通り計算するとどのくらいの演算が必要になる?
やる夫 えーと，式 (6.5) だから…あれ? 指数関数の計算量ってどう考えればよいのかお?
やらない夫 あー，そこは計算済みだとしておこうか．e−j N kn の部分は入力に依存しないから，あらかじ
2π

め計算して表として持っておくと考えていい．
やる夫 そうかお．じゃあ，えーと，F [k] を計算するには，複素数の乗算を N 回して，それら N 個の複素数の総和を取るんだから加算が N − 1 回だお．
やらない夫 それはある一つの k について計算する場合だな．k = 0, 1, · · · , N − 1 の全部について計算するならどうだ?
やる夫 その N 倍だお．
やらない夫 そういうことになる．大雑把にいって，N 2 に比例する計算量がかかるということだ．このことをよく「計算時間が O(N 2 ) である」という．話し言葉では「計算時間が N 2 のオーダである」ということが多いな．
やる夫 何かまた記号が増えたお．
やらない夫 で，高速フーリエ変換を使うと，計算量がなんと O(N log2 N ) になる．
やる夫 なんと!! って，いやいや，全然ピンと来ませんお．
やらない夫 まあそうかもな．具体的な数字を入れてみようか．普通，離散フーリエ変換を使うときは N =256 とか 512 とか 1024 とか，そういう点数で計算することが多い．N 2 はそれぞれ 65536，262144，
1048576 だ．
やる夫 ざっと約 6 万，26 万，100 万ってとこだお．
やらない夫 これが N log2 N になると，それぞれ 2048，4608，10240 になる．
やる夫 10 倍とか，下手したら 100 倍速くなるのかお…．そりゃ使わない手はないお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

離散フーリエ変換

76

6.6

4 種類のフーリエ変換のまとめ ― 離散性と周期性

やる夫 なんだかいろんな種類のフーリエ変換が出てきて混乱してきたお．
やらない夫 そうだな，最初のフーリエ級数も 1 つと数えると全部で 4 種類出てきたことになる．ここらでまとめておこうか．

 T0 /2
1
Fk =f (t)e−jΩ0 kt dt
T0 −T0 /2∞

f (t) =
Fk ejΩ0 kt

フーリエ係数の計算(2.28)

フーリエ級数(2.18)

フーリエ変換(3.11)

フーリエ逆変換(3.10)

離散時間フーリエ変換(5.3)

離散時間フーリエ逆変換(5.8)

離散フーリエ変換(6.5)

離散フーリエ逆変換

(6.4)

k=−∞

 ∞

f (t)e−jΩt dt

F (Ω) =−∞

f (t) =F (ω) =

1
2π

 ∞

∞


f [n]e−jωn

n=−∞
 π

f [n] =

F [k] =F (Ω)ejΩt dΩ

−∞

1
2π

F (ω)ejωn dω

−π

N
−1


f [n]e−j N kn
2π

n=0
N −1

f [n] =

2π
1 
F [k]ej N kn
N

k=0

離散性と周期性に注目して表にするとこんな感じになる．
時間領域
離散性

周波数領域

周期性

連続

周期的

連続

非周期的

離散的

非周期的

離散的

周期的

フーリエ級数展開←→
フーリエ変換←→離散時間フーリエ変換←→
離散フーリエ変換
←→

離散性

周期性

離散的

非周期的

連続

非周期的

連続

周期的

離散的

周期的

やる夫 んー，余計ややこしいお．
やらない夫 時間領域での信号の様子を分類すると，連続なのか離散的なのかの 2 通りのそれぞれについて，
周期的なのか非周期的なのかの 2 通りがあって，都合 2 × 2 = 4 通りだ．そのすべての場合に対応しているわけだ．
やる夫 あー，それで 4 種類なのかお．
やらない夫 これまで何度も出てきた (p. 64) ことの復習だが，時間領域で周期的な信号は，周波数領域ではどうなるんだった?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

77

離散フーリエ変換

やる夫 えーと，離散的になるんだったお．基本周波数の整数倍のスペクトルしか持たないんだったお．フーリエ級数のところで最初に出てきた話だお．
やらない夫 その通り．じゃあ，時間領域で離散的な信号は?
やる夫 周波数領域では周期的になるんだったお．正規化角周波数が 2π 増えても，元の信号と見分けがつかないんだったお．
やらない夫 そうだな．時間と周波数を入れ替えても同じだ．時間または周波数の一方の領域で離散的だと，他方では周期的になる．逆に一方で周期的だと，他方では離散的になる．
やる夫 それでこういう表になるわけだお．
やらない夫 時間から周波数，周波数から時間のそれぞれについてマトリックス状に表すとこうなるかな．
᫬㛫㡿ᇦ 䊻 ࿘Ἴᩘ㡿ᇦ
㠀࿘ᮇⓗ

㐃⥆

㞳ᩓⓗ

࿘ᮇⓗ

䝣䞊䝸䜶ኚ᥮
㞳ᩓ᫬㛫
䝣䞊䝸䜶
ኚ᥮

࿘Ἴᩘ㡿ᇦ 䊻 ᫬㛫㡿ᇦ
㠀࿘ᮇⓗ

㐃⥆

䝣䞊䝸䜶㏫ኚ᥮

㞳ᩓⓗ

㞳ᩓ᫬㛫
䝣䞊䝸䜶
㏫ኚ᥮

䝣䞊䝸䜶⣭ᩘᒎ㛤䛧䛶䝣䞊䝸䜶ಀᩘ䜢ᚓ䜛࿘ᮇⓗ䝣䞊䝸䜶ಀᩘ䛛䜙䝣䞊䝸䜶⣭ᩘ䜢⤌䜏❧䛶䜛㞳ᩓ䝣䞊䝸䜶㏫ኚ᥮㞳ᩓ䝣䞊䝸䜶ኚ᥮

フーリエ変換は連続・非周期のまま，離散フーリエ変換は離散的・周期的のまま，時間領域と周波数領域を行ったり来たりする変換だ．それに対して，フーリエ級数展開と離散時間フーリエ変換は，「連
続・周期的」と「離散的・非周期的」が入れ替わりながら行ったり来たりする変換になる．
やる夫 こうしてみると「フーリエ級数展開」だけ名前が異色だお．
やらない夫 そうだな．
「離散周波数フーリエ変換」とでも呼ぶ方がすっきりするかも知れない．でも歴史的経緯があるのでそういう呼び方はしない．
やる夫 そういえば，式の形もフーリエ級数だけちょっと違って見えるお．
やらない夫 といっても，1/T0 をどっちにつけるかだけの違いだけどな．何度も話した通り，正変換と逆変換のどちらに定数倍をつけるかは本質的な問題じゃないんだ．フーリエ級数の場合は歴史的にあくま
で「級数展開」として扱われてきたので，f (t) = · · · の方をきれいな形にして，フーリエ係数を計算
する Fk = · · · の方にしわ寄せしたわけだ．他の 3 つは時間領域から周波数領域への変換の方をきれいに表示して，逆変換にしわ寄せしたわけだな．
やる夫 あー，そうか，そこだけを例外だと思って見渡すと，4 組ともほとんど同じ式だってわかるお．
やらない夫 そうだな．その他に注意して見比べておきたいところとしては，• 連続変数については積分，離散変数については総和する．
• 積分・総和の範囲は，変換元の領域で非周期的な場合は全域，周期的な場合は 1 周期分だけ．
• 指数の肩につくのは「符号 × j × (正規化) 角周波数 × (正規化) 時間」で，符号は 時間 → 周
波数の方向の変換のときに負で，逆のときに正．Ω0 k と Ω が角周波数，ω と 2πk/N が正規化
角周波数を表す．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第6章

78

離散フーリエ変換といったあたりかな．
あと，さっき出てきた「高速フーリエ変換」は，あくまで「離散フーリエ変換」の高速計算方法だってことには注意しておこう．
やる夫 あー，確かに名前だけ聞くと「フーリエ変換」が高速化されたように聞こえて紛らわしいお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

79

第 7 章 フーリエ変換の性質 (1): 時間シフトと
変調
7.1

時間シフト

やらない夫 フーリエ変換の性質のうち重要なものを見ていこうと思う．フーリエ級数，フーリエ変換，離散時間フーリエ変換，離散フーリエ変換の 4 種類それぞれについて，同様の性質が成り立つので，4つずつ見比べていくのがわかりやすい．
FS

F

DTFT

DFT

まずは「時間シフト」に関する性質だ．x(t) −→ Xk ，x(t) −→ X(Ω)，x[n] −→ X(ω)，x[n] −→ X[k]だったとしよう．すると，以下の各式が成り立つ．
x(t − t1 ) −→ e−jΩ0 kt1 Xk
FS

(7.1)

F

x(t − t1 ) −→ e−jΩt1 X(Ω)(7.2)

x[n − n1 ] −→ e−jωn1 X(ω)

(7.3)

DTFT
DFT

x[n − n1 ] −→ e

−j 2π
N kn1

X[k]

(7.4)





やる夫 いきなりややこしいお．
やらない夫 まあそう言わずにじっくり見てくれ．いずれも左辺は連続時間 t あるいは離散時間 n の関数
だ．t1 とか n1 はただの定数だ．
やる夫 定数 t1 とか n1 とかだけ時間シフトしているわけだお．
やらない夫 それを周波数領域で見ると，時間シフトする前のスペクトルに複素指数関数をかけたものになる，というのがこの式の意味だ．
やる夫 んー，ピンと来ないお．
やらない夫 これらの公式の証明は数学の教科書を見れば載っているので，そっちを参照してもらうとして，
直観的な意味を考えていくことにしよう．
やる夫 お願いしますお．
F

やらない夫 と言っても，話は割と簡単だ．式 (7.2) のフーリエ変換の場合を考えよう． x(t) −→ X(Ω) ってのは，信号 x(t) を無数の複素指数関数に分解して考えたときに，周波数 Ω の成分が X(Ω) だけ含
まれているってことだ．

第7章

フーリエ変換の性質 (1): 時間シフトと変調

80

x(t)

t

=
+
+
+

やる夫 そうだったお．
やらない夫 x(t) を時間 t1 だけシフトすると，分解された各周波数の複素指数関数はどうなっている必要がある?
やる夫 そりゃ，やっぱり t1 だけシフトしているはずだお．全部の周波数成分をいっせいに時間 t1 だけシフトして，それを重ね合わせれば x(t − t1 ) になるはずだお．

t1x(t – t1)

=

t1

t

+

t1

+

t1

+
やらない夫 そうだな．じゃあ，周波数 Ω の複素指数関数を時間 t1 だけシフトするためには，位相がどれだけシフトしなくてはならない?
t1
やる夫 位相…，えーと，1 周期 2π/Ω [s] が位相 2π [rad] に相当するんだから，比例計算で 2π 2π/Ω= Ωt1[rad] になるお．…あれ?

2π/Ω
t1

t

0

やらない夫 何か気づいたか?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第7章

フーリエ変換の性質 (1): 時間シフトと変調

81

やる夫 前にこの計算やったことあるお．えーと，式 (3.46) だお．そうか，位相を Ωt1 だけ遅らせるために元のスペクトルに e−jΩt1 をかけたのが右辺の e−jΩt1 X(Ω) なんだお．
やらない夫 そう，あのときと同じだ．式 (3.46) のときは，デルタ関数を時間シフトしたときに，周波数領域でどうなるかを調べたんだった．デルタ関数 δ(t) のフーリエ変換は定数 1 だったから，今の時間
シフトの公式で X(Ω) = 1 にした場合に一致する．結局，あのとき見たのは，今やった時間シフトの性質の例の一つに過ぎないわけだ．

7.2

変調

やらない夫 で，今の話を時間領域と周波数領域を入れ替えて考えるとこうなる．
FS

ejΩ0 k1 t x(t) −→ Xk−k1

(7.5)

F

ejΩ1 t x(t) −→ X(Ω − Ω1 )

(7.6)

DTFT

ejω1 n x[n] −→ X(ω − ω1 )e

j 2π
N k1 n



(7.7)

DFT

x[n] −→ X[k − k1 ]

(7.8)





やる夫 今度は，周波数の方がシフトしているわけだお．時間領域の方に複素指数関数が出てきているお．…
んー，指数の符号がさっきはマイナスだったけど，今度はプラスなんだお．
やらない夫 ああ，フーリエ変換とフーリエ逆変換の計算式を考えると，積分する前にかける複素指数関数の指数部の符号が逆だっただろ．それを反映している．
やる夫 逆にいうと違うのはそのくらいだお．あとは本当に時間と周波数をそっくり入れ替えただけだお．
やらない夫 ああ，こういう風に，時間領域と周波数領域を入れ替えて，一方の性質から他方を類推する考え方に慣れておくことは重要だ．
と同時に，今回の場合は周波数側をシフトすること自体の意味を理解しておくことが重要なので，もう少し説明しよう．まず，右辺の意味は特に問題ないな? 周波数スペクトルをシフトしているだけだ．

Ω
0

Ω1

やる夫 そっちはわかるお．ピンと来ないのは左辺の複素指数関数をかける方だお．さっきの話だと，周波数領域の方に複素指数関数をかけるのは位相をずらしているだけなので想像しやすかったお．でも時間領域でかけると，ちょっと想像しにくいお．
やらない夫 こっちも式 (7.6) のフーリエ変換の場合で考えてみようか．ejΩ1 t ってのは，角周波数 Ω1 で螺旋を描きながら進んでいく振動 (p. 27) だったよな?
やる夫 そうだったお．
やらない夫 その螺旋振動の振幅が時間とともに変化して x(t) になっているのが，左辺の ejΩ1 t x(t) だ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第7章

フーリエ変換の性質 (1): 時間シフトと変調

82

䢵
䢴
䢳

Im 䢲
䢯䢳
䢯䢴
䢯䢵
䢲

䢳䢲

䢴䢲

䢵䢲

t

䢶䢲

䢷䢲

䢲
䢯䢳
䢯䢴
䢯䢵

䢳

䢴

䢵

Re

䢸
䢶
䢴

Im 䢲

䢺

䢯䢴

䢹

䢯䢶

䢸

䢯䢸

䢳䢲
䢲
䢲

䢷

䢳䢲

䢳䢷

䢴䢲

䢷

䢴䢷

t

䢵䢲

䢵䢷

䢶䢲

䢶䢷

䢷䢲

Re

䢯䢳䢲

䢶
䢵
䢴䢲

䢷

䢳䢲

䢳䢷

䢴䢲

䢴䢷

䢵䢲

䢵䢷

䢶䢲

䢶䢷

䢷䢲

t

やる夫 ああ，イメージしやすくなったお．
やらない夫 こういう状況を，ejΩ1 t という単一周波数の振動が，x(t) という信号によって振幅変調されているという．変調される側の振動 ejΩ1 t は搬送波と呼ばれる．
やる夫 何か難しい単語が出てきたお．振幅が変化させられているから振幅変調ってのは何となくわかるお．
搬送波って何だお．何が搬送されてるんだお．
やらない夫 そうだな，例えば x(t) が音声信号だったとしよう．これを放送局から電波に乗せて遠隔地に送信したい．
やる夫 お，急に具体的な話が出てきたお．
やらない夫 まず音声を電気信号に変えなきゃいけないが，これはマイクロフォンの仕事だ．空気の振動を
電気の振動に変えるわけだな．それを電磁波として飛ばしてやればとりあえず目的は達せられるわけだが，複数の放送局が一斉に送信しようとすると，全部混ざってしまって分離できなくなる．
やる夫 混信ってやつかお．
やらない夫 そう．人間が聴こえる音声というのはだいたい 20 Hz 〜 20 kHz の周波数成分を含んでいる．
音声を送信したい放送局は，そのままだと皆この周波数の電磁波を出すことになってしまう．
やる夫 あっ，それで周波数のシフトを使うのかお?
やらない夫 いい推測だ．例えば放送局 A は 1000 kHz の搬送波を，放送局 B は 1040 kHz の搬送波を使うと約束しよう．放送局 A は ΩA = 1000 × 2π × 103 の ejΩA t を振幅変調して作り出した電磁波を送信する．送信される電磁波は 980 〜 1020 kHz の範囲に周波数成分を持つわけだ．
ඖ䛾㡢ኌಙྕ

ᨺ㏦ᒁA ᨺ㏦ᒁB

f
0

1000
kHz

1040
kHz

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第7章

フーリエ変換の性質 (1): 時間シフトと変調

83

やる夫 放送局 B は ΩA = 1040 × 2π × 103 の ejΩB t を振幅変調すれば，送信される電磁波は 1020 〜 1060

kHz の範囲になるわけだお．周波数がかぶらないで済むお．
やらない夫 今，送りたい情報はあくまでそれぞれの放送局が持つ音声信号だったわけだ．ejΩA t や ejΩB t
は，送りたい情報を搬送するための振動だ．そういう意味で搬送波と呼ぶ．
やる夫 ようやく話がつながったお．
やらない夫 一般に，搬送波を何らかの方式で変化させることで，送りたい情報を乗せることを変調 (mod-ulation) と呼ぶ．変化のさせ方は，周波数を変えたり，位相を変えたり，いろいろあるわけだが，そのうちの一つで振幅 (amplitude) を変えるのが今説明した振幅変調だ．amplitude modulation，略して AM という．
やる夫 あっ，AM ラジオの AM かお?
やらない夫 そういうことだ．さっき説明したのが AM ラジオ放送の基本原理になっている．ちなみに周波数を変えて変調するのは周波数変調，frequency modulation という．
やる夫 あー，そっちが FM なわけだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

84

第 8 章 フーリエ変換の性質 (2): たたみこみと積― 線形時不変システムの入出力関係
8.1

時間領域たたみこみ

やらない夫 さて，フーリエ変換の性質の 2 つめだ．
「たたみこみと積の関係」あるいは「たたみこみの定理」などと呼ばれる，ものすごく重要なものだ．
1T0

 T0 /2−T0 /2
 ∞
−∞
∞


FS

h(τ )x(t − τ )dτ −→ Hk XkFh(τ )x(t − τ )dτ −→ H(Ω)X(Ω)
DTFT

h[m]x[n − m] −→ H(ω)X(ω)



(8.1)
(8.2)
(8.3)

m=−∞
N
−1




DFT

h[m]x[n − m] −→ H[k]X[k]

(8.4)

m=0



やる夫 あー，聞いたことあるお．でも何かややこしい積分が出てきてよくわからないんだお．
やらない夫 まあ，順番に説明していくことにするか．まずは「たたみこみ」ってのは何なのかって話だ．
やる夫 確か，この左辺のh(τ )x(t − τ )dτ みたいな積分のことをそう呼ぶんだったお．でもカッコの中がややこしくて，いつもわかんなくなるお．
やらない夫 カッコの中身の意味は後で話すとして，たたみこみの定義としてとしてはその通りだ．そして，離散時間信号の場合は積分の代わりに総和を取ることになるわけだが，これもやはりたたみこみと呼ぶ．敢えて区別したいときは「たたみこみ積分」「たたみこみ和」などと呼ぶけど，まあ混同の恐れがない限りは単にたたみこみと呼べばいいだろう．数式で書くときは，略して ∞h(t) ∗ x(t) ≡h(τ )x(t − τ )dτh[n] ∗ x[n] ≡−∞∞

h[m]x[n − m]

(8.5)
(8.6)

m=−∞

なんて風に「∗」を使って表すことが多い．
やる夫 確かに ∗ を使って書くのも見たことあるお．
やらない夫 それから，よくわからないと言われたカッコの中身だが，h(·) の中と x(·) の中は逆になっても第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係構わない．実際，τ  = t − τ とか m = n − m みたいな変数変換をしてやると −∞ ∞h(τ )x(t − τ )dτ =h(t − τ  )x(τ  )(−dτ  )
−∞

∞
 ∞

=
∞


(8.7)

h(t − τ  )x(τ  )dτ (8.8)

h[n − m ]x[m ]

(8.9)

−∞
∞


h[m]x[n − m] =85

m =−∞

m=−∞になる．h と x が交換可能，つまり h ∗ x = x ∗ h だってことだ．
やる夫 そういえば h(t) ∗ x(t) =h(t − τ )x(τ )dτ って書いている教科書もあった気がするお．

式 (8.1) とか式 (8.4) に出てくる方もたたみこみかお?
やらない夫 そうだ．でもちょっと注意する必要があって，これらでは積分や総和の範囲が元の信号の 1 周
期分だけだ．
やる夫 ああ，そういえば 式 (8.1) とか式 (8.4) は周期信号を扱ってるんだったお．
やらない夫 x も h も周期信号なので注意してくれ．この場合，1 周期分を積分し終わったらあとはそれを延々と繰り返すだけになる．当然無限大にすっ飛んでしまって面倒くさいので，その代わりに 1 周期だけ積分してやることにする．
やる夫 いつものトリック (p. 72) だお．その場合も ∗ 記号で書いていいのかお?
やらない夫 ∗ 記号のままのことが多いかな．明示的に区別したい場合は別の書き方をすることもあるが，特に標準的な記法はないようだ．以降の議論では出てこないが，教科書とかを読むときには，暗黙のうちに「周期信号をたたみこむときは 1 周だけ計算する」ことになっている場合があり得るということを注意しておいて欲しい．
ともかく，記号 ∗ を使うと最初の 4 つの性質はこう表記できる．

1FS
h(t) ∗ x(t) −→ Hk Xk
T0Fh(t) ∗ x(t) −→ H(Ω)X(Ω)
DTFT

h[n] ∗ x[n] −→ H(ω)X(ω)
DFTh[n] ∗ x[n] −→ H[k]X[k]

(8.1)
(8.2)
(8.3)
(8.4)

2 つの信号を時間領域でたたみこんだものを周波数領域で見てみると，元の 2 信号のスペクトルの積を計算したものと一致するわけだ．
やる夫 式の上ではその通りだけど，結局たたみこみがよくわかんないので，さっぱりわからないお．
やらない夫 そう言うと思ったよ．じゃあその「たたみこみとは何なのか」から話をすることにしよう．

8.2

線形時不変システムとたたみこみ

やらない夫 いきなり話が飛ぶように感じるかも知れないが，ここで，何らかの信号を入力すると何らかの信号が出力される「システム」を考えよう．
やる夫 唐突だお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

86

やらない夫 そうかも知れないが，たたみこみとは何かを理解するためだ．このシステムが具体的に何をするのかは別にどうでもいいんだが，例えば，音声信号を入力したら，高音がカットされた出力信号が出てくるとか，エコーがかかった出力信号が出てくるとか，まあそんなのを想像しておけばよい．
やる夫 まあ想像はできるお．
やらない夫 連続時間でも離散時間でも同じ話になるんだが，ここでは離散時間で考えることにしよう．入力 x[n] を入れると，出力 y[n] が出てくる．よくこういうブロック図と呼ばれるものを書くわけだ．

x[n]

y[n]

やる夫 制御工学の授業でよく出てきたやつだお．
やらない夫 システム，つまりこの箱の部分は，信号 x[n] から信号 y[n] への写像を定めているわけだ．ちょっと注意して欲しいのは，これは，ある時刻 n の入力の値 x[n] から出力の値 y[n] への関数というわけではなくて，x[n] という n の関数から，y[n] という n の関数への写像だってことだ．数学では作用素と呼ばれるものだな．
やる夫 何か難しそうな話になってきたお．
やらない夫 実際，一般論としては簡単じゃないんだな．これから，この関数 x[n] から y[n] への写像を何とか数式で表してやろうと考えていくんだが，完全に一般の場合を考えてしまうと難しい．
やる夫 関数から関数を定めるためのルールを数式で表すってことかお．そりゃややこしいに決まっているお．
やらない夫 ところが，ある条件を満たすシステムのみに話を限定して考えると，簡単に書き表すことができるんだ．その条件というのが「線形性」と「時不変性」だ．
やる夫 それも聞いたことあるお．
やらない夫 線形ってのは，入力が定数倍されたり足し合わされたりしたら，出力も同じく定数倍されたり足し合わされたりするってことだ．つまり，入力 x1 [n] に対する出力が y1 [n]，入力 x2 [n] に対する出力が y2 [n] だったとき，適当な定数 a1 ，a2 を使って a1 x1 [n] + a2 x2 [n] という入力信号を考えると，出力信号は a1 y1 [n] + a2 y2 [n] になる．
やる夫 和と定数倍が保存されるってことだお．
やらない夫 もう一つの条件の時不変ってのは，時間をずらして入力信号を入れてやると，元の出力と同じ形の信号が同じ時間だけずれて出てくるということだ．つまり，入力 x[n] に対する出力が y[n] だったとすると，x[n − n1 ] を入力したときには，y[n − n1 ] が出力される．
やる夫 同じ波形を入れたら，いつでも同じ波形が出てくるってことだお．
やらない夫 なんだ，わかってるじゃないか．
やる夫 制御工学の授業でも習ったと思うお．でも，どうしてそんな条件を置かなきゃいけないのかよくわ
かってないお．
やらない夫 つまるところ，入力信号を複数の要素に分解して考えられるようになるってところがミソだ．
分解後の各要素について出力を考えて，それらを重ね合わせればいい．で，どんな要素に分解すればよいかというと，単位インパルス信号だ．
やる夫 んーと，単位インパルスというと，デルタ関数のことだったかお?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

やらない夫 ああ，連続時間ならデルタ関数だ．今は離散時間を考えているから，
1, n = 0δ[n] =
0, n = 087(8.10)のことを単位インパルス信号と呼ぶ．

δ[n]
n
0
時刻 0 のところに面積 1 の値があるのが連続時間の場合の単位インパルスで，時刻 0 のところに振幅 1 の値があるのが離散時間の場合の単位インパルスだ．
やる夫 同じ名前なのに連続時間と離散時間で別なのかお．紛らわしいお．
やらない夫 あるシステムに単位インパルス信号を入力したときに得られる出力信号のことを，そのシステ
ムの単位インパルス応答，あるいは簡単にインパルス応答という．そうだな，例えば高音をカットするシステムであれば，こんな風になまった出力が出てくるだろう．

n

n
0

0

やる夫 エコーをかけるシステムだったら，こんな風に単位インパルスにエコーがかかった信号が出てくる
わけだお．

n

n
0

0

やらない夫 そしてここからが核心だ．線形時不変システムの場合，インパルス応答さえ知っていれば，他のどんな入力に対する出力でも計算によって求めることができる．例えば，単位インパルス応答が h[n]で表されるシステムを考えよう．

δ[n]

h[n]

n

n

0

0

そこに · · · , x[−1] = 0, x[0] = 2, x[1] = 4, x[2] = 3, x[3] = 0, · · · という信号を入力したとする．

x[n]
n

?

n

0
やる夫 n = 0, 1, 2 以外の時刻ではずっと 0 の入力なわけだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

88

やらない夫 そう．だからこの場合は n = 0, 1, 2 の 3 点それぞれに分解した入力に対する応答を重ね合わせ
ればよいことになる．時刻 n = 0 での入力信号値は x[0] = 2 だ．このシステムは線形だから，これに対する出力は単位インパルス応答の振幅を x[0] 倍した h[n]x[0] = 2h[n] になる．

h[n] x[0]

x[0]

n

n
0

0

やる夫 単位インパルスの振幅を 2 倍にした信号を線形システムに入力したんだから，そうなるお．
やらない夫 次に，n = 1 のときの入力信号値は x[1] = 4 だ．これは，単位インパルスを 1 時刻遅らせて，振幅を 4 倍したものだ．時不変性から，出力も 1 時刻遅れて，線形性から出力の振幅も単位インパ
ルス応答の 4 倍になる．つまり h[n − 1]x[1] = 4h[n − 1] が出力される．

x[1]h[n - 1] x[1]
n

n
0

0

やる夫 そうか，で，n = 2 のときは，単位インパルス応答を 2 時刻遅らせて，振幅を 3 倍した h[n−2]x[2] =3h[n − 2] が出力になるわけだお．

x[2]h[n - 2] x[2]
n

n
0

0

やらない夫 その通り．結局，入力信号全体に対する出力は，線形システムだから，今考えたものの和になる．

y[n] =∞
h[n − m]x[m](8.11)

m=−∞

=

2


h[n − m]x[m](8.12)

m=0= 2h[n] + 4h[n − 1] + 3h[n − 2]

(8.13)

これがたたみこみの正体だ．

x[n]∑m h[n - m] x[m]nn0
やる夫 ああ，確かにたたみこみの式 h[n] ∗ x[n] =0m h[n − m]x[m] が出てきたお．つまり，単位インパ

ルス応答を，入力信号の各時刻の値に対応して時間シフト + 定数倍しながら重ね合わせたものがた
たみこみの計算になるんだお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

89

やらない夫 そういうことになる．同じことを別の見方で見てみようか．インパルス応答 h[n] というのは結局何だったかというと，ある時刻に入力された単位インパルスが即座に出力に及ぼす影響 h[0]，1 時
刻遅れて及ぼす影響 h[1]，2 時刻遅れて及ぼす影響 h[2] …を表すものだったわけだ．
やる夫 わかるお．
やらない夫 ある時刻 n の出力値 y[n] を考えよう．y[n] は，時刻 n の入力値 x[n] が即座に及ぼす影響である h[0]x[n]，時刻 n − 1 の入力値 x[n − 1] が 1 時刻遅れて及ぼす影響 h[1]x[n − 1]，時刻 n − 2 の
入力値 x[n − 2] が 2 時刻遅れて及ぼす影響 h[2]x[n − 2] … をすべて重ね合わせたもので構成されている．つまりy[n] =∞
h[m]x[n − m]

(8.14)

m=−∞となるわけだ．これがたたみこみだと考えてもいい．
やる夫 ああ，h[n] ∗ x[n] =m h[m]x[n − m] がこっちに相当するわけだお．

やらない夫 まあ最初に見た通り数式の上では等価なので，どちらで考えても同じことだけどな．
ともかく重要なのは，線形時不変システムは，その挙動をインパルス応答のみで完全に記述できるということだ．本来は，入力信号に出力信号を結びつけるという高度なことをするはずの「システム」
を，インパルス応答という「信号」と同一視できる．なので，「インパルス応答が h[n] であるシステ
ム」のことを「システム h[n]」と呼んでしまったりするわけだな．そういう理由でブロック図の箱の中に h[n] と書いてしまったりもするわけだ．

x[n]

y[n]

h[n]

これは線形時不変システムならではの著しい特徴だ．そして，インパルス応答と入力信号から実際に出力信号を得るための操作がたたみこみだというわけだ．
やる夫 連続時間でも同じことなのかお?
やらない夫 そうだな．重ね合わせるところが和ではなく積分になるので若干わかりにくいかも知れないが，全く同じことだ．
連続時間の場合，ディラックのデルタ関数 δ(t) を単位インパルス信号と考えて，それに対する出力をインパルス応答 h(t) と呼ぶことにする．t = 0 の瞬間に「積分したら 1」になるインパルスを入れることを考えるわけだ．
やる夫 えーと，縦が無限大で，横が 0 で，縦横かけて面積を求めると 1 になるようなものを考えるんだっ
たお．…んー，でも例えば h(t) ∗ x(t) を考えるときに高さ無限大の入力なんて普通考えないお?
やらない夫 そこは，今まで何度もやってきたように，インパルスを同じ面積の短冊に置き換えて考えればいい．入力 x(t) を幅 Δτ の短冊に切り分けて考える．

x(n∆τ)t∆τ

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

90

n を整数として，t = nΔτ の瞬間に高さ x(nΔτ ) の短冊が入力されることになるわけだが，その面積は x(nΔτ )Δτ なので，インパルス δ(t − nΔτ )x(nΔτ )Δτ が入力されたのと同じ効果だと考える．高さを x(nΔτ )Δτ 倍して時刻 nΔτ だけシフトしたインパルス関数と，この短冊 1 枚を同一視したってことだ．
やる夫 えー，短冊の方は幅があるから，インパルスと同じとは思えないお．
やらない夫 もちろんそうなんだが，後で Δτ → 0 の極限を取るので気にしないでくれ．そうすると，この短冊 1 枚に対応して現れる出力は h(t − nΔτ )x(nΔτ )Δτ になる．
やる夫 線形時不変だから，出力もインパルス応答 h(t) が x(nΔτ )Δτ 倍になって，時刻 nΔτ だけシフトしたものになるわけだお．
やらない夫 これをあらゆる整数 n について足し合わせることで出力が得られる．
∞
h(t − nΔτ )x(nΔτ )Δτ(8.15)

ここで Δτ → 0 の極限を取ると，nΔτ は連続変数 τ になって ∞y(t) =
h(t − τ )x(τ )dτ

(8.16)

y(t) =n=−∞−∞となる．これが連続時間の場合のたたみこみだ．

8.3

周波数応答と「たたみこみと積の関係」

やる夫 たたみこみの意味はわかったけど，それがどうして周波数領域では積になるのかはまだわからな
いお．
やらない夫 そこを理解するためには，周波数応答という考え方が重要だ．また話を離散時間に戻して，線形時不変システム h[n] への入力を，周波数ごとに分解して考えよう．ある周波数 ω の複素指数関数x[n] = ejωn が入力だったとする．

exp(jωn)
1

h[n]

n

やる夫 角周波数 ω で回転する螺旋 (p. 27) が入力されるんだお．
やらない夫 その場合の出力 y[n] がどうなるかというと，さっきやった通りインパルス応答 h[n] をたたみこむことで計算できるわけだ．

y[n] =
=
=

∞

m=−∞
∞

m=−∞
∞


h[m]x[n − m]

(8.17)

h[m]ejω(n−m)(8.18)

h[m]e−jωm ejωn

(8.19)m=−∞= ejωn∞h[m]e−jωm(8.20)m=−∞

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

91

やる夫 たたみこみの定義通り計算しているわけだお．
やらない夫 さてここで問題だ．今の計算の最後の式の総和を取っている部分，どこかで見たことないか?
やる夫 ん，

m h[m]e−jωmの部分かお? …あ，離散時間フーリエ変換の公式 (5.3) になってるお．

やらない夫 そうだ．インパルス応答 h[n] の離散時間フーリエ変換 H(ω) がここで登場している．つまり
出力 y[n] は

y[n] = H(ω)ejωn(8.21)と表せることになる．
やる夫 んーと，システム h[n] に ejωn を入れたら H(ω)ejωn が出てくるってことかお．
やらない夫 そう，注意して欲しいのは，H(ω) は n の関数ではなくてただの複素数だってことだ．
やる夫 つまり，出力はやっぱり角周波数 ω で振動する螺旋なんだお．だけど H(ω) 倍されてるところが入力からの違いだお．
やらない夫 H(ω) 倍されるってどういうことだかわかるか?
やる夫 ええと，前に考えた (p. 28) 気がするお．振幅と位相に分けて考えればいいんだお．振幅が |H(ω)|
倍されて，位相が − H(ω) だけ遅れるってことだったお．
やらない夫 これも線形時不変システムならではの重要な特徴だ．線形時不変システム h[n] に入力として単一周波数で振動する信号を入れると，出力も全く同じ周波数の振動になる．ただし振幅や位相は変化して，その変化分は H(ω) をかけることで表せる．

exp(jωn)1h[n]nH(ω)exp(jωn)|H(ω)|n−∠H(ω)
やる夫 あっ，だからたたみこみが積になるのかお?
やらない夫 そういうことだ．h[n] ∗ x[n] を計算するというのは線形時不変システム h[n] に信号 x[n] を入力して出力を求めるということだ．x[n] を周波数成分に分解して考えると，周波数 ω の成分 X(ω)
は H(ω) 倍されて H(ω)X(ω) になる．これがあらゆる ω について成り立つ．時間領域のたたみこみ
が周波数領域で積になるってのは，つまりそういうことだ．
やる夫 わかった気がするお．
やらない夫 というわけで，インパルス応答 h[n] を離散時間フーリエ変換したもの H(ω) は，線形時不変システムの挙動を周波数領域で表したものになっている．重要なので名前がついていて，周波数応答と呼ばれる．
やる夫 各周波数成分の振幅がどのくらい増幅されて，位相がどのくらい遅らせられるかを表す量になるわ
けだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

92

やらない夫 ああ，「信号」の周波数成分を分析するツールであるフーリエ変換が，「システム」の応答を周波数領域で分析するのにも使えるわけだ．それもこれも，「システム」が「インパルス応答」という 1 本の信号と同一視できるという線形時不変システムの著しい特徴から導かれるものだ．
やる夫 線形時不変性のありがたみを思い知ったお．それにしてもインパルス応答すごいお．単に時刻 0 に
インパルスを入れただけなのに，そのときの出力にシステムのすべての情報が含まれているんだお．
やらない夫 インパルス応答と周波数応答は互いにフーリエ変換対の関係にあるわけだからな．すべての周波数の情報を含んでいるわけだ．そもそも単位インパルス信号ってのは，あらゆる周波数成分を等しく含んでいる信号だったわけだ．
やる夫 ああ，連続時間のフーリエ変換の例のところ (p. 42) でやったお．デルタ関数 δ(t) はフーリエ変換
したら 1 になるんだお．すべての周波数成分が 1 だお．離散時間の単位インパルスでも同じなのかお?
やらない夫 δ[n] の離散時間フーリエ変換を実際に計算してみるといい．
やる夫 ええと∞δ[n]e−jωn(8.22)n=−∞=e−jω0(8.23)=1(8.24)

ああ，まあ，計算するまでもないくらい簡単に 1 が出てきたお．
やらない夫 つまり，いろんな周波数の振動を 1 個ずつ入力しながら振幅・位相がどのくらい変わるかを見ていくのが周波数応答だとすると，あらゆる周波数の振動を一度にドンとつっこんで，出力を見るのがインパルス応答なわけだ．その出力をフーリエ変換して周波数ごとにバラしてやると，周波数応答に一致するんだな．
やる夫 この辺の話も，連続時間でも同じことになるのかお?
やらない夫 ああ，全く同じだ．単位インパルス応答 h(t) のフーリエ変換 H(Ω) が周波数応答になる．式(8.20) に相当する計算を自分でやってみるといい．
やる夫 ええと，x(t) = ejΩt を入力することを考えればいいのかお?
 ∞y(t) =h(τ )ejΩ(t−τ ) dτ

(8.25)−∞= ejΩt ∞h(τ )e−jΩτ dτ

(8.26)−∞= H(Ω)ejΩt(8.27)になるから，なるほど確かに入力 ejΩt が H(Ω) 倍されて出てくるお．
やらない夫 同じ関係は，フーリエ変換だけじゃなくラプラス変換や z 変換についても成り立つし，成り立
つ理由も全く同様だ．詳しくは，それぞれの変換の話をするときに見ていくことにしよう．

8.4

周波数領域たたみこみ

やらない夫 で，同じことを時間領域と周波数領域を逆にして見ると，こうなる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第8章

フーリエ変換の性質 (2): たたみこみと積 ― 線形時不変システムの入出力関係

93




FS

h(t)x(t) −→∞H Xk−(8.28)l=−∞ ∞1H(W )X(Ω − W )dW
h(t)x(t) −→
2π −∞
 π
DTFT 1
H(w)X(ω − w)dw
h[n]x[n] −→
2π −π
F

DFT

h[n]x[n] −→(8.29)(8.30)N −1

1 
H[ ]X[k − ]N(8.31)

=0

やる夫 時間領域での積が，周波数領域ではたたみこみになるんだお．
やらない夫 これは，フーリエ変換と逆変換の対称性から理解しておくということでよいと思う．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

94

第 9 章 フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換
9.1

パーセバルの等式

やらない夫 フーリエ変換の性質の 3 つめだ．パーセバルの等式とかパーセバルの関係とか呼ばれるものを紹介しよう．
1T0

 T0 /2−T0 /2 ∞|x(t)|2 dt =|Xk |2

(9.1)

k=−∞

 ∞

|x(t)|2 dt =12π|x[n]|2 =12π|x[n]|2 =1 |X[k]|2
N

−∞
∞


n=−∞
N
−1


|X(Ω)|2 dΩ(9.2)|X(ω)|2 dω

(9.3)

−∞
 π
−π
N −1

n=0



∞


(9.4)

k=0



やる夫 聞いたことあるお．たぶん数学の授業でやったお．
やらない夫 ついでに，これと等価なんだが「一般化パーセバルの等式」などと呼ばれるものも紹介してお
こう．



1
T0

 T0 /2h(t)x∗ (t)dt =−T0 /2

Hk Xk∗

(9.5)

k=−∞

 ∞
1
h(t)x (t)dt =H(Ω)X ∗ (Ω)dΩ
2π −∞
−∞
 π
∞

1
h[n]x∗ [n] =H(ω)X ∗ (ω)dω
2π
−π
n=−∞

 ∞

N
−1




∞


∗

h[n]x∗ [n] =

n=0

(9.6)
(9.7)

N −1

1 
H[k]X ∗ [k]
N

(9.8)

k=0



やる夫 んーと，例えば式 (9.5) で h = x な場合が式 (9.1) に一致するので，確かにある種の一般化になっているわけだお．…ってあれ? 今「等価」って言ったかお?
やらない夫 ああ．言った．
やる夫 等価と一般化じゃだいぶ話が違うお．そもそも本当に等価なのかお? つまり，式 (9.1) から 式 (9.5)
は導けるのかお?

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

95

やらない夫 のっけから鋭いじゃないか．実はその答えは yes だ．式 (9.1) で x のところに h + x と h − xを代入して計算していくと，式 (9.5) の実部と虚部が出てくる．実際の計算は，まあ練習問題ということにしておこうか．
やる夫 ぐぬぬ．
やらない夫 というわけで，「一般化」という名称はあまり適切じゃないんだが，そう呼ばれることが多いので，まああまり気にしないことにしておこう．ともかく，今日話したいのは，これらの等式が持つ意
味についてだ．
やる夫 意味って言われても困るお…．とりあえず，時間領域と周波数領域でそれぞれなんか積分したり総和したりしたものが一致してるってのはわかるお．
やらない夫 その「なんか積分したり総和したり」という部分が重要だ．式 (9.5) で考えようか．左辺の積分は，フーリエ級数を導入したときに説明したように，関数 h(t) と x(t) の内積を表していると解釈できる．
やる夫 あー，そういえばそんな話をしたお (p. 16) ．複素ベクトル [h1 , h2 , h3 ] と [x1 , x2 , x3 ] の内積が3∗∗i=1 hi xi になることからの類推で， h(t)x (t)dt を h(t) と x(t) の内積とみなすことにしたんだったお．

h1 h2 h3

h(t)x1 x2 x3

x(t)
a

b

やらない夫 右辺の総和も，要素数が無限個だってことを置いておけば内積そのものだと思っていいだろう．
そのほか式 (9.5)〜(9.8) の左辺・右辺いずれも，それぞれの場合の内積だと思ってくれ．
やる夫 離散な場合は総和，連続な場合は積分で，周期的な場合は 1 周期分のみ，そうじゃないときは −∞〜 ∞ の範囲を考えてるんだお．逆にいうと，そういうところが違う以外は似たようなもんだお．
やらない夫 そういう見方ができるようになると，これら一般化パーセバルの等式が主張していることは簡単に説明できる．いずれの場合も，左辺は時間領域での内積であって，右辺は周波数領域で考えた場合の内積だ．つまり，任意の 2 つの信号の内積は，時間領域でも周波数領域でも (定数倍を除いて) 等
しい．フーリエ変換は内積を (定数倍を除いて) 保存するということだ．
やる夫 定数倍うんぬんがいちいちうざいお．
やらない夫 確かにそうだな．でもまあ，別にパーセバルの等式に限らず，定数倍が鬱陶しいのはフーリエ変換全般にいえることだからな．そういう風に定義されて世の中で使われてしまったんだからしかたない．
やる夫 「一般化」じゃないパーセバルの等式 (9.1)〜(9.4) の方も同じように捉えていいのかお?

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

96

やらない夫 ああ，同じ x 同士の内積を考えているので，つまり信号のある種のノルムが時間領域でも周波数領域でも変わらないことを言っているわけだ．
やる夫 ある種のノルムって言われても困るお．
やらない夫 現実世界の現象に即して考えるといいかもな．例えば x(t) が電圧を表しているとしようか．この電圧が一定値の抵抗にかかっているとすると，x2 (t) ってのは電力に比例するわけで，それを時間積分したものは消費エネルギーに比例する量なわけだ．
やる夫 なるほど，それはわかるお．
やらない夫 で，それを周波数領域に持っていくと，もう単位が何だかわからなくなるので想像しにくくなるんだが，同じように周波数スペクトルの持つエネルギーに相当する量を右辺は表していると考えようか．時間領域の方も，実は x(t) は電圧じゃなくて全然違う次元の物理量かもしれないが，今の話からの類推で信号のエネルギーを表していると考えてしまう．そうすると，パーセバルの法則は，時間領域で表しても周波数領域で表しても，信号のエネルギーは (定数倍を除いて) 一致すると主張していることになる．

9.2

関数をベクトルとみなす

やる夫 うーん，でも結局，h(t) と x(t) の内積ってのがさっぱりピンと来ないお．ベクトルでもないのに，∗h(t)x∗ (t)dt を内積だって呼ぶのは無茶じゃないかお?
i hi xi と似ているからってやらない夫 いや，立派にベクトルだぞ．
やる夫 え? どうしてだお?
やらない夫 じゃあ逆に聞くが，ベクトルって何だ?
やる夫 え，えっと，そりゃ，何かこう，矢印みたいなものだお．あ，そうだ．空間内での方向と大きさをもった量，それがベクトルだお (キリッ
バキ 方向と大きさをもった量がベクトルである… そんなふうに考えていた時期が 俺にもありました．
やる夫 いやいや，だからあんた誰だお．
やらない夫 まあ，完全に間違いとは言えないが，大学生の答えとして満点はあげられないな．
やる夫 ひどいお．完璧な答えだったつもりだお．じゃあどういう答えが正解なんだお?
やらない夫 ベクトルの公理を満たすもの．それがベクトルだ．
やる夫 は? 禅問答かお．
やらない夫 無意味に聞こえるかもしれないが，それが現代の数学のやり方だ．何か抽象的な集合を考えて，その集合の要素間の操作が一定のルールを満たすものとする．それによって，我々が素朴に知っている数学的構造を，厳密に，本質だけにそぎ落とした形で定義しようとするわけだ．
やる夫 いや，あの，抽象的過ぎてついていけませんお．
やらない夫 今の話でいくと，我々が素朴に知っている構造というのはさっきやる夫が説明したベクトルだ．
方向と大きさを持った量だったな．でも現代数学では，そういう素朴なベクトルが持つさまざまな性質が現れるためには，最低限どういうルールを定めておけばよいのかということを突きつめて考えて，そのルールをスタート地点とするというやり方をする．そういう風にして要素間の操作のルールが定められた集合のことをベクトル空間と呼んで，ルール自体のことはベクトルの公理と呼ぶわけだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

97

やる夫 で，どんなルールなのかお?
やらない夫 それは数学の教科書の最初の方に書いてあるはずだからそっちを参照して欲しい． Wikipedia
を見てもいいかな．
やる夫 丸投げかお．
やらない夫 同様に，内積の公理を満たすものを内積と呼ぶわけだ．内積が定義されたベクトル空間のこと
を内積空間と呼ぶ．内積の公理も教科書とかWikipedia とかでも参照して欲しい．
やる夫 うーん，まだわからんお．どうしてそんな回りくどいことをしなくちゃいけないんだお．ベクトルは矢印，それじゃダメなのかお．
やらない夫 ベクトルは矢印，そう思っているうちは，線形代数で学んだいろいろな成果が，矢印の範囲でしか応用できない．そうじゃなく，公理を満たすものはすべてベクトルだと考えると，応用範囲が格段に広くなる．なぜなら，線形代数で学んだベクトルのいろいろな性質は，公理のみから導き出されているからだ．ちゃんとした教科書であれば，ベクトルが矢印であるということは一切前提とせずにすべての定理が証明されているはずだ．
やる夫 ということは，ベクトルの公理を満たしてさえいれば，「矢印ベクトル」じゃなくても，線形代数で習ったいろんな定理を安心して適用していいってことかお．
やらない夫 そういうことだ．元の話に戻すと，h(t) とか x(t) という関数をベクトルとみなそうという話だった．関数としてのごく自然な定数倍 αx(t) と和 h(t) + x(t) を考えてやると，ベクトルの公理がすべて満たされていることは簡単に確認できる．この意味で，関数をベクトルだと考えることにする．
やる夫 そうすると，線形代数の結果を関数に適用できるようになるというわけだお．
やらない夫 そうだな．それともう一つ，関数に対する操作を，あたかも「矢印ベクトル」に対する操作のようにイメージして捉えることができるようになる．そうすることによって，いろいろと見通しがよくなる場合があるわけだ．
やる夫 内積についても同じかお?



h(t)x∗ (t)dt を考えると，これは内積の公理を満たすことが確認できる．…ただし，本当はこの積分が収束するかどうかの議論が必要だ．つまり，やらない夫 そう．h(t) と x(t) から定まる量 (h(t), x(t)) =収束しないような関数を除外した集合を考えてやる必要がある．その辺は深入りせず，そういう関数の集合の範囲で最初から考えていることにしよう．
やる夫 そういうふうに考えると，パーセバルの等式も安心して使えるわけだお．

9.3

ベクトルの正規直交展開とフーリエ級数展開

やらない夫 せっかく関数をベクトルと捉える視点を得たので，その見方でフーリエ級数展開を見直してみようと思う．その上で，後でまたパーセバルの等式に戻ってくることにしよう．
やる夫 ああ，なんかややこしい話に首をつっこんじゃった気がするお．
やらない夫 まあそう言うな．この視点はとても重要だ．さて，やる夫もおなじみの「矢印ベクトル」の復習から始めよう．ベクトル空間には基底と呼ばれるベクトルの組を取ることができて，任意のベクトルは各基底の方向を向いたベクトルの和に一意に分解できるんだった．って話は大丈夫か?

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

98

やる夫 ええと，辛うじて大丈夫な気がするお．N 次元のベクトル空間であれば，N 本の線形独立なベクトル{v1 , v2 , · · · vN } を取ることができて，どんなベクトルでもそれらの線形結合 a1 v1 + a2 v2 + · · · + aN vNとして表せるようにできるんだお．そういう {v1 , · · · vN } のことを基底と呼ぶんだお．

x = a1v1 + a2v2
a2v2
v2
v1

a1v1

やらない夫 いいだろう．基底の取り方は自由だが，もし可能であれば「正規直交基底」になるように取ると便利だった．
やる夫 あー，なんかそんなのもあったお．
やらない夫 今考えているベクトル空間に内積 (x, y) が定義されているとしよう．基底 {e1 , e2 , · · · , eN } が(ei , ej ) = δi,j を満たすとき，正規直交基底と呼ぶんだった．
やる夫 クロネッカーのデルタだお．えーと，あ，そうか．各基底ベクトルの長さが 1 に正規化されていて，かつ異なる基底ベクトル間の内積が 0，つまり直交するように取ったのが正規直交基底だったお．
やらない夫 ベクトル x を正規直交基底 {e1 , e2 , · · · , eN } を使って分解すると，各基底ベクトル方向の成分が簡単に書き表せる．具体的には ei の成分の大きさは内積 (x, ei ) になる．
やる夫 えーと，図で描くと，要はこういうことだお．

x = a1e1 + a2e2
= (x, e1)e1 + (x, e2)e2

a2e2

e2
e1

a1e1

x から ei の延長線上に垂線を下ろして，分解された成分の長さを決めるんだお．その成分の長さは，x と ei の間の角度を θ として ||x|| cos θ になるわけだけど，||ei || = 1 だから，||x|| cos θ =||x|| ||ei || cos θ = (x, ei ) になるんだお．
やらない夫 おお，矢印は得意みたいだな．さすがだ．
やる夫 微妙に馬鹿にされている気がするお．
やらない夫 ともかく，任意のベクトルが x = (x, e1 )e1 + (x, e2 )e2 + · · · + (x, eN )eN と分解できることになる．シグマ記号を使って表すとx=N
(x, ei )ei

(9.9)

i

だな．このように表すことを正規直交展開と呼んだりする．
やる夫 x を基底の線形結合で表すときの各係数が，x と各基底ベクトルの内積で計算できるわけだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

99

やらない夫 さて，この「矢印のベクトル」に関する知識を，「関数のベクトル」に適用してやろう．考えるのは，フーリエ級数と同じ土俵，つまり，区間 [−T0 /2, T0 /2] で定義される関数ということにしてお T /2
こう．内積の定義は (x(t), y(t)) = −T0 0 /2 x(t)y ∗ (t)dt だ．この場合に，任意の関数 x(t) を正規直交展
開することを考える．そのために，まずは正規直交基底を決めてやる必要がある．
 T /2やる夫 ええと，{e1 (t), e2 (t), · · · , eN (t)} で正規直交なもの，つまり (ei (t), ej (t)) = −T0 0 /2 ei (t)e∗j (t)dt =δi,j となるようなものを見つけようって話になるかお?
やらない夫 うーん，ちょっと惜しい．基底が N 本でいいのは N 次元ベクトル空間の場合だ．今考えている関数の空間は，実は無限次元なんだ．だから，基底も無限個必要だ．普通の線形代数の教科書は有限次元のベクトル空間しか扱っていないものが多いと思うので，この辺はちょっと天下りになるが，そういうものだと思って話を進めよう．つまり，正規直交性 (ei (t), ej (t)) = δi,j を満たすような，無限個の関数を探さなくちゃならない．
やる夫 ええー，そんな都合のいいもの見つかるのかお?
やらない夫 ああ．思い出して欲しいのは，式 (2.19) の複素指数関数の直交性だ．
 T0 /2∗ejΩ0 mt ejΩ0 nt dt = T0 δm,n(2.19)−T0 /2

やる夫 おー，そうだ，確かにやったお．あっ，でも δm,n じゃなくて T0 倍なんていう余計なものがついているお．
やらない夫 そうだな．つまり，複素指数関数群は直交するけど，正規化はされていない．長さが 1 じゃな√
いんだな．でもこれは大した問題じゃなくて，最初から T0 で割っておければいいだけの話だ．つまり，

{ek (t)} =1√ ejΩ0 kt
T0∞(9.10)k=−∞というように決めてやろう．これで正規直交になる．
やる夫 あ，それでいいのかお．
やらない夫 これで準備はできた．式 (9.9) にならって，任意の関数 x(t) はx(t) =∞
(x(t), ek (t))ek (t)(9.11)

k=−∞と展開できる．内積 (x(t), ek (t)) の部分を新しい記号 X̃k で書いてやることにしようか．つまり

X̃k = (x(t), ek (t))
∗
 T0 /2
1 jΩ0 kt=x(t) √ edt
T0−T0 /2
 T0 /2
1x(t)e−jΩ0 kt dt=√
T0 −T0 /2(9.12)(9.13)(9.14)だ．こうすると，さっきの展開はx(t) =∞
X̃k ek (t)(9.15)

k=−∞∞1 X̃k ejΩ0 kt= √T0 k=−∞(9.16)と書ける．…これらの式に見覚えないか?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

100

やる夫 えっ，あっ，そうか，式 (9.16) が複素指数型のフーリエ級数展開に，式 (9.14) がそのフーリエ係数の計算にそっくりだお．定数倍のところが違うだけだお．
やらない夫 そういうことだ．実際，Xk = √1T X̃k と置き直してやると，おなじみのフーリエ級数に一致0する．
キバヤシ そう，フーリエ級数展開とは，複素指数関数系を基底とした正規直交展開のことだったんだよ!!
ΩΩΩ なっ，なんだってーー!?
やる夫 いや，いやいやいや，だからあんたらも誰だお．どっから入って来たお．
やらない夫 ともかく，こういうふうに見てやると，フーリエ級数を幾何学的に捉えることができるわけだ．
信号をベクトルとみなして，各周波数に対応した基底の方向に分解してやる．これがフーリエ級数展
開だ．分解された各成分の大きさは，元の信号と各基底の内積で表される．これがフーリエ係数だ．
ただし，実際には「正規」じゃない直交基底 {ejΩ0 kt } で展開してしまうので，後から定数倍の辻褄を合わせる必要が出てくるんだけどな．
~
X1e1(t) = (x(t), e1(t)) e1(t)

x(t)

L
e1(t)
e2(t)
L

~
X2e2(t) = (x(t), e2(t)) e2(t)やる夫 その辺りが，変な定数倍が出てくる理由なわけだお．
やらない夫(9.10)
 次の話題に行く前に，今の議論で誤魔化したところを指摘しておこうと思う．それは，式
∞
1
jΩ
kt
の √T e 0
は本当に基底なのか? ということだ．
0k=−∞

やる夫 えー，それって今の話を全部揺るがしかねない話じゃないかお．どういうことだお．
やらない夫 基底であるためには，考えている空間に属しているあらゆる関数を，それらの線形結合として表せなくちゃならない．それってのは結局，フーリエ級数を導入したときに補足説明した (p. 18) ような，級数がちゃんと収束して，元の関数と一致するかどうかという話と同じ議論に行き着くんだ．
我々はその辺の厳密な話には目をつぶって，式 (9.10) が基底になるような関数の集合があるものとして，その範囲で考えているんだということに，一応注意しておいて欲しい．
やる夫 ふーん，本当はいろいろ厄介なんだお．

9.4

正規直交展開とパーセバルの等式

やらない夫 さて，そんなわけでパーセバルの等式に戻ろうか．
やる夫 あ，そういえばそれが話の発端だったお．忘れてたお．
やらない夫 フーリエ級数の場合の一般化パーセバルの等式 (9.5) の左辺の積分のところから見ていこう．

 T0 /2h(t)x∗ (t)dt(9.17)−T0 /2

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

101

ここで h(t) と x(t) をフーリエ級数展開したもので置き換える．ただし，ベクトルの正規直交展開として眺めたいので，式 (9.16) の方の流儀で書くことにしよう．
 ∞∗
 T0 /2   T0 /2∞
H̃k ek (t)X̃k ek (t) dt
h(t)x∗ (t)dt =−T0 /2−T0 /2k=−∞(9.18)k=−∞

やる夫 基底は ek (t) って書いたまま進めるのかお．
やらない夫 ああ，あくまで正規直交基底 {ek (t)} で展開しているんだってことを忘れずに進めていこう．
計算を続けると T0 /2h(t)x∗ (t)dt =−T0 /2∞∞H̃k X̃l∗ T0 /2ek (t)e∗l (t)dt−T0 /2k=−∞ l=−∞∞H̃k X̃k∗ (ek (t), ek (t)) +H̃k X̃l∗ (ek (t), el (t))
=
k=−∞
k=l

(9.19)(9.20)

やる夫 えーと，これは何をしているのかお…．あ，カッコを展開して，積分と総和を入れ替えて，同じ基底同士をかけているところと，そうじゃないところに分けてまとめてるんだお．
やらない夫 そう．で，ここで正規直交性の出番だ．(ek (t), el (t)) = δk,l なので前半の k = l のところだけが残る．結局

 T0 /2−T0 /2h(t)x∗ (t)dt =∞H̃k X̃k∗(9.21)k=−∞になる．
やる夫 式 (9.5) とほとんど同じ等式が得られたお．
やらない夫 ああ，定数倍が違うだけだな．
やる夫 Hk = √1T H̃k と Xk = √1T X̃k で置き換えれば等式 (9.5) と全く同じになるわけだお．
00

やらない夫 そういうことだが，置き換えずに H̃k や X̃k のままで，今やった計算の意味を幾何学的に考えてみよう．我々は h(t) と x(t) の内積を計算したわけだが，その際に両信号を正規直交基底で展開してから計算することにしたわけだ．

h(t)~H1e1(t)~X1e1(t)

x(t)

L
e1(t)
e2(t)
L

~
H2e2(t)~X2e2(t)やる夫 式 (9.18) のあたりがそうだお．
やらない夫 その計算は，各基底方向に分解された成分同士で内積を取って，それらを後から足し合わせることに相当している．内積というものが線形な計算だからこれが可能なわけだ．
やる夫 で，直交基底で展開しているから，異なる方向の成分同士は消えるんだお．さらに正規化されているから，結局，同じ方向の成分の係数同士をかけた H̃k X̃k∗ が残るんだお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換

102

0
h(t)

~
H1e1(t)

~~
H1X1*

~
X1e1(t)

x(t)

L
e1(t)
e2(t)
L

~
H2e2(t)~X2e2(t)

~~
H2X2*

0

やらない夫 そうだな．一般化パーセバルの等式はこういう構造によって成立していたわけだ．

h = x とした場合の式 (9.1) も同じことだが，この場合の結果は幾何学的にはもうちょっとわかりや
すい．こちらも T0 /2−T0 /2|x(t)|2 dt =∞|X̃k |2(9.22)

k=−∞と書き直してみよう．左辺は x(t) 同士の内積だから ||x(t)||2 ，つまり x(t) というベクトルの長さの2 乗を表していると解釈できる．パーセバルの等式は，これが正規直交基底で表した際の各成分の長さの 2 乗の和と一致することを示している．直観的には，N 次元直方体の対角線の長さと各辺の長さの関係に対応しているわけだ．

~| X3 |~| X2 |||x(t)||~| X1 |

やる夫 ああ，なるほど，こうしてみるとほとんど当たり前のことに見えるお．
やらない夫 有限次元のユークリッド空間であれば，当たり前の話だな．これが，無限次元の関数空間になると，必ずしも当たり前じゃないというのが重要なところだ．パーセバルの等式の導出過程をもう一度見てみると，フーリエ級数がちゃんと収束してもとの関数に一致するような範囲で話を考えているから，式 (9.18) のような置き換えができて，式 (9.19) のような展開ができるんだった．そういう条件を考えない一般の関数空間では，この当たり前に成り立ちそうな等式は，成立するとは限らない．
やる夫 無限次元こわいお．

9.5

フーリエ変換の場合はどうなのか

やる夫 フーリエ級数の場合 (式 (9.1)(9.5)) の話をずっと見てきたわけだけど，フーリエ変換，離散時間フー
リエ変換，離散フーリエ変換の場合も同じように考えればいいのかお?
やらない夫 そうだな，まあ，そう考えるのがいい…んだけどな．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第9章

フーリエ変換の性質 (3): パーセバルの等式 ― 正規直交展開としてのフーリエ変換103

やる夫 なんか歯切れが悪いお．
やらない夫 各種フーリエ変換の直観的な解釈としては，是非同じように捉えておくべきだと思う．ただし，数学的な定式化が同じように可能かというと，実はちょっと難しい．
∞
例えばフーリエ変換だと， −∞ x(t)e−jΩt dt = (x(t), ejΩt ) を計算しているわけだから，ejΩt を基底ベクトルに取っていると見ることができそうだ．周波数 Ω としては全実数を取り得るから，{ejΩt }Ω∈R

が基底を構成すると考えたいところだ．
∞∞
ところが，(ejΩt , ejΩt ) = −∞ ejΩt e−jΩt dt = −∞ dt が 1 にならない，というか収束しないので，正規直交基底だと呼ぶわけにはいかない．
やる夫 あー，確かにそうだお．てことは今までの議論は全然通用しないのかお?
やらない夫 拡大解釈することは可能だ．これまで考えてきた正規直交基底ってのは基底ベクトル同士の内積が (ei , ej ) = δi,j ，つまりクロネッカーのデルタになるものだったが，今の場合は (ejΩ1 t , ejΩ2 t ) =δ(Ω1 − Ω2 )，つまりディラックのデルタ関数になってるんだな．そして，今までは無限と言っても整数と同じ無限個の基底ベクトルの線形結合で表していたのに対して，今度は実数 Ω について重ね合わせることになる．より濃い無限になっているわけだ．
やる夫 離散時間と連続時間で単位インパルス信号の定義が違う，みたいな話だお．
やらない夫 そういうものを正規直交基底と見なすことを認めるなら，同じような議論ができるわけだが，正統的な数学ではそういう扱いはしないようだな．フーリエ変換自体がもっと慎重に定義されるし，
パーセバルの等式の導出も然りだ．
やる夫 あまり厳密な数学の議論をされてしまうと，ついていけないお．
やらない夫 なので，応用の立場からは，フーリエ級数を正規直交展開として理解した上で，その類推としてフーリエ変換を捉えておくということで悪くはないんじゃないかと思う．同じことが離散時間フーリエ変換にもいえる．
やる夫 いろいろ面倒くさいんだお．
やらない夫 一番面倒がないのは離散フーリエ変換だな．これは有限次元のベクトル空間になるわけだから，
初等的な線形代数の教科書の範囲で普通に理解することができる．つまり N 点の離散フーリエ変換というのは，N 次元のベクトル空間から N 次元のベクトル空間への線形写像なわけだ．例えば N = 4の離散フーリエ変換は
⎞ ⎛
⎛
W0
X[0]
⎟ ⎜ 0
⎜
⎜X[1]⎟ ⎜W⎟ ⎜⎜⎜X[2]⎟ = ⎜W 0
⎠ ⎝
⎝
X[3]
W0

W0

⎞⎛

⎞

W0

W0

W1
W2

W2
W4

⎟
⎟⎜
⎟
⎜
W 3⎟
⎟ ⎜x[1]⎟6⎟ ⎜W ⎠ ⎝x[2]⎟
⎠

W3

W6

W9

x[0]

(9.23)

x[3]と書ける．ただし見易さのために W = e−j N と書いている．
2π

やる夫 あー，こう書くと確かに線形代数っぽいお．
やらない夫 線形代数っぽいというか，線形代数そのものだな．4 × 4 行列のところを逆行列にすると，離散フーリエ逆変換になるわけだ．こうしてみると，離散フーリエ変換が時間 N 点から周波数 N 点への変換になっているのは当然のことだと理解できる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

104

第 10 章 サンプリング定理
10.1

サンプリングされた信号から元の連続時間信号を復元できるかやらない夫 これまでは，連続時間信号は連続時間信号，離散時間信号は離散時間信号と別々に考えてきた．
今回は，両者の間の関係を考えてみたい．
やる夫 関係っていうと，連続時間信号を一定時間おきにサンプリングして，離散時間信号を作った場合にどうなるかとか，そういうことかお．
やらない夫 そういうことだな．例えば電気信号にしろ，音声信号にしろ，現実世界にある多くの信号は連続時間信号だ．それをコンピュータで処理するために，サンプリングして離散時間信号にする．そう
やってコンピュータで処理している離散時間信号が，元の現実世界の信号をどのくらい反映しているか，元の信号が持っている情報を失わずに保っているのか，そういったことを把握しておくのは重要だ．
やる夫 そんなこと言っても，サンプリングされた時刻と時刻の間の情報は捨てちゃっているわけだお．サンプリング周期を短くすればするほど現実世界の信号に近くはなるだろうけど，情報が失われるのは避けようがないお．
やらない夫 本当にそうだろうか．
やる夫 そりゃそうだお．例えば時刻 n と n + 1 の信号のサンプル値が与えられていたとして，その間の連続信号が捨てられていたら，捨てられてしまった部分のことは知りようがないお．元の信号がどんなものだったか復元しようとしても，時刻 n と n + 1 のサンプル間を結ぶ経路はいくらでもあるし，
仮に「全部の点を滑らかに結ぶこと」みたいな制約をつけたとしたって，やっぱり無数の可能性があるお．だから，元の連続時間信号を知ることは絶対にできないお．

?
?
n

n+1

やらない夫 一般論としては，まあその通りだな，常識的に考えて…．
だが実は，元の信号に割と現実的な制約条件を考えてやることで，その常識的な想像を覆すことができる．つまり，サンプリングされた信号から，元の連続時間信号を完全に復元することができる．シャノンのサンプリング定理，あるいは標本化定理と呼ばれる有名な結果だ．

第 10 章105

サンプリング定理



連続時間信号 x(t) の帯域が Ωc に制限されていたとする．すなわち X(Ω) = F [x(t)] がX(Ω) = 0 for |Ω| ≥ Ωc

(10.1)

を満たすとする．
このとき，サンプリング周波数 Ωs = 2π
Ts がΩs > 2Ωc(10.2)

を満たせば，サンプリング後の離散時間信号 xd [n] = x(t)|t=nTs から，元の信号 x(t) を完全に復元できる．


つまり，元の信号の帯域の 2 倍を超える周波数でサンプリングしておけば，完全復元が可能ということだ．
やる夫 えっと，どういうことだお．捨ててしまったサンプル間の信号が取り返せるってことかお?
やらない夫 そういうことだ．ただし条件として，元の信号が帯域制限されていることが要求される．xd [n]と xd [n + 1] の間を結ぶ方法は無数にあるけど，復元された信号が Ωc 以上の周波数成分を含まない
ように結ぼうと思うと，一意に定まってしまうってことだな．
やる夫 ああ，そう言われると，原理上無理な話でもないってのは理解できるお．しかし本当にそんなことできるのかお．
やらない夫 というわけで，どうすればそんなことができるのかを丁寧に見ていこうと思う．帯域制限なんていう周波数領域での条件が関与していることからわかるとおり，鍵になるのは周波数領域での検討だ．
元の連続時間信号を x(t) としよう．周波数領域で見ると X(Ω) だ．

X(Ω) = F [x(t)](10.3)

X(Ω)

x(t)
t

Ω

これをサンプリング周波数 Ωs ，つまりサンプリング周期 Ts = 2π/Ωs でサンプリングして離散時間信号 xd [n] を得たとしよう．

xd [n] = x(t)|t=nTs(10.4)

x(t)tsampling

Ts

xd[n]
n

1
やる夫 時刻 t = nTs のところの値をサンプルしてくるわけだお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章106

サンプリング定理

やらない夫 これを周波数領域で見るには，離散時間信号だから離散時間フーリエ変換するわけだ．

Xd (ω) = DTFT[xd [n]]=∞

(10.5)

x(nTs )e−jωn(10.6)n=−∞

これからやるのは，端的に言うと，この Xd (ω) から X(Ω) を完全に復元できるかという問題を考えようということだ．
やる夫 えっと，X(Ω) が元の信号のスペクトルで，Ω = −∞ 〜∞ で与えられているんだお．それに対して Xd (ω) はサンプリングされた信号のスペクトルだから，周期 2π で周期的なスペクトル形状になるんだお．
やらない夫 そうだな．今 X(Ω) は形状がわかっているとしようか．一方 Xd (ω) の形状はわからないけど，周期 2π の周期関数だということだけはわかっている．この両者の関係を考えよう．

X(Ω)

x(t)
t
Ts

sampling

Ω

Xd(ω)

DTFT

xd[n]

?

n
1

-3π

?
-π

?
π

ω
3π

2π
やる夫 あれ? X(Ω) は非正規化周波数 Ω で，Xd (ω) は正規化周波数 ω で表されているんだお．関係を考えるのがちょっとややこしいお．
やらない夫 そうそう，このままじゃ比べにくいので，非正規化周波数に統一して考えることにしよう．
やる夫 えっと，正規化周波数と非正規化周波数の間の関係は式 (4.3) のω = Ω Ts

(4.3)

だったお．
やらない夫 ああ．Xd (ω) の ω を ΩTs で置き換えて考えていけばいいってことだな．

Xd (ΩTs ) =∞x(nTs )e−j(ΩTs )n(10.7)n=−∞t = nTs であることにも注意しておこう．e−jωn は e−j(ΩTs )n と置き換え可能で，これは e−jΩt と同じものを指す．それから，正規化周波数の 2π が，非正規化周波数では 2π/Ts = Ωs に対応していることも確認しておこう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章107

サンプリング定理

X(Ω)

x(t)
t

samplingTsΩ

Xd(ΩTs)

DTFT

xd[n]

?

n

?

?

Ω

-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/21Ωs= 2π / Ts

やる夫 うーん，置き換えるのはわかったお．でも，何か全然 X(Ω) との関係が見えてこないお．
やらない夫 X(Ω) は連続時間のフーリエ変換，つまり積分で与えられているからな．一方 Xd (ΩTs ) は離散時間フーリエ変換なので，総和で計算される．同じ土俵に乗せるために，Xd (ΩTs ) の方も積分の「フーリエ変換」で表示してみよう．
やる夫 えーっと，…どういうことかお?
やらない夫 離散時間フーリエ変換を導入したときのこと (p. 63) を思い出してくれ．各時刻の値に複素指数関数をかけて総和を取るのが離散時間フーリエ変換だったが，それは，各時刻の値にデルタ関数をかけてフーリエ変換したのと同じことだった．そのテクニックをここでも使ってやろう．つまり式(10.7) はXd (ΩTs ) = ∞ 
∞−∞δ(t − nTs ) x(t)e−jΩt dt(10.8)

n=−∞と書き直せる．
やる夫 あー，確かにやったお．デルタ関数は積分すると 1 になるから，あらかじめ各時刻の値にかけておくと，総和の代わりに積分で表せるんだったお．
やらない夫 これが何を表しているかというと ∞Xd (ΩTs ) = F
δ(t − nTs ) x(t)(10.9)n=−∞ということだな．デルタ関数を Ts おきに並べたもの∞
n=−∞ δ(t − nTs ) を元の連続時間信号 x(t) にかけて，それをフーリエ変換したもの，それがサンプリングされた信号のスペクトルだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章108

サンプリング定理

X(Ω)

x(t)
t
Ts

Ω

∑n δ(t – nTs)t
Xd(ΩTs){∑n δ(t – nTs) } x(t)
?

t

?

?

Ω

-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/2Ωs= 2π / Ts
ここで右辺にたたみこみと積の関係 (式 (8.29)) を使うと，
 ∞


1
F
Xd (ΩTs ) =δ(t − nTs ) ∗ X(Ω)
2πn=−∞(10.10)が得られる．
やる夫 あっ，ついに X(Ω) が出てきたお!
やらない夫 これでようやく，元の信号のスペクトル X(Ω) とサンプリングした信号のスペクトル Xd (ΩTs )を関係づけることができたわけだ．
ここまでの話をざっくりまとめると，サンプリングするということは，すなわちけることに相当している．これを周波数領域で見ると，n δ(t − nTs ) をかn δ(t − nTs ) のフーリエ変換をたたみこむことを意味する．
やる夫 うーん，n δ(t − nTs ) がかなり重要っぽいお．

やらない夫 だな．重要なので名前をつけて呼びたいんだが，実は教科書によって呼び方がまちまちだった
りする．メジャーなのとしては，くし型関数 (comb function) とか，デルタ列 (delta train) なんてのがある．ここではくし型関数と呼ぶことにしよう．記号もいろいろな書き方があるんだが，δTs (t) =∞δ(t − nTs )(10.11)n=−∞と書くことにしよう．デルタの下付き添え字が「くし歯」の間隔を表すことにする．
やる夫 くしって，髪をとかすあの「くし」かお．まー，よくそんな名前思いついたもんだお．
やらない夫 さっきの話をこの記法で書き直すと，

Xd (ΩTs ) =1
F [δTs (t)] ∗ X(Ω)
2π

(10.12)となる．残る問題は，くし型関数のフーリエ変換 F [δTs (t)] はどういうスペクトルになるか，それをたたみこむというのはどういう操作か，の 2 つだ．これらを順番に見ていこう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章サンプリング定理

109

10.2

くし型関数のフーリエ変換

やらない夫 というわけで，まずはくし型関数のフーリエ変換からだ．最終的には数式で示そうと思うが，その前にちょっとだけ直観的な把握をしておこうと思う．
やる夫 その方がありがたいお．
やらない夫 まず最初に，くし型関数 δTs (t) が周期 Ts の周期関数だってことに注意しよう．ということは，
周波数領域ではどうなる?
やる夫 何度も出てきた話 (p. 64) だお．周波数領域では Ωs = 2π/Ts おきに飛び飛びの値を持つ離散的なスペクトルになるお．
やらない夫 次に，くし型関数 δTs (t) は Ts おきにしか値を持たない離散的な信号でもあることにも注意しよう．ということは，周波数領域ではどうなる?
やる夫 お? あ，そうか．てことは，周波数領域では周期 Ωs で周期的ってことになるはずだお．
やらない夫 今の話の両方を考慮するとどうなる?
やる夫 んーと，同じ間隔 Ωs で周期的でもあって，なおかつ離散的でもあるわけだお．結局，Ωs おきにしか値を持たなくて，しかも各点での値は同じになるしかないんだお．

TsΩs∑n δ(t – nTs)t?

Ω

やらない夫 そうなるな．さらに，パーセバルの等式 (9.2) が成り立たなきゃいけないことを考慮しよう．もしも周波数領域の各点の値が有限値だとすると，二乗して積分しても 0 になってしまうわけだ．一方，
時間領域はくし型関数なので，0 にはならない．
やる夫 …ということは，結局，周波数領域も各点が無限大の高さを持つしかなさそうだお．ん? それってやっぱりくし型関数にならないかお?
やらない夫 ご明察．くし型関数のフーリエ変換はやっぱりくし型になる．
ちゃんと計算で示しておこうと思う．ただし，ちょっと技巧的になるけどな．まず，くし型関数 δTs (t)が周期 Ωs の周期関数であることに注意して，フーリエ級数展開しておく．

 
∞
Ts /2

1
−jΩs ktδTs (t) =δ(t)edt ejΩs kt
Ts −Ts /2

=

k=−∞
∞


1
Ts

ejΩs kt(10.13)(10.14)k=−∞

やる夫 …えーっと? あ，大カッコ [] の中はフーリエ係数なんだお．くし型関数のくし 1 本分だけが積分区間に含まれているので，デルタ関数で置き換えていいんだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章110

サンプリング定理

F

やらない夫 その上で，各項をフーリエ変換するという手順を取る．このとき，式 (3.51) の関係 ejΩ1 t −→2πδ(Ω − Ω1 ) を使う．
δTs (t) =F∞
1  jΩs kt
e
Ts

−→
=

k=−∞
∞


1
Ts

2π
Ts

(10.15)2πδ(Ω − kΩs )(10.16)δ(Ω − kΩs )(10.17)

k=−∞
∞


k=−∞

= Ωs δΩs (Ω)(10.18)

やる夫 つまり，時間領域で間隔 Ts のくし型関数は，周波数領域では間隔 Ωs = 2π/Ts で高さが Ωs 倍されたくし型関数になるってことだお．
FδTs (t) −→ Ωs δΩs (Ω)(10.19)∑n δ(t – nTs)

Ωs ∑k δ(Ω - kΩs)
Ωs

Ts
1

t

Ωs

Ω

やらない夫 これが，サンプリング定理を導出するための 1 個めの鍵だ．

10.3

くし型関数をたたみこむ

やらない夫 そもそも何の話をしてたかというと，式 (10.12) の関係

Xd (ΩTs ) =1
F [δTs (t)] ∗ X(Ω)
2π

(10.12)について考えてるんだった．今わかったことは，これが1Ωs δΩs (Ω) ∗ X(Ω)
2π1= δΩs (Ω) ∗ X(Ω)
Ts

Xd (ΩTs ) =(10.20)(10.21)と書けるということだ．
やる夫 サンプリングされた信号のスペクトル Xd (ΩTs ) は，元の信号のスペクトル X(Ω) にくし型関数をたたみこんだものになるってことだお．
やらない夫 その結果どうなるかってのは，まあ計算してみれば簡単だ．やってみるといい．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章111

サンプリング定理

やる夫 簡単ならやってみますお．

11δΩ (Ω) ∗ X(Ω) =
Ts s
Ts
1
=
Ts
=

=





∞


δ(Ω − kΩs ) ∗ X(Ω)

k=−∞



 ∞ 
∞−∞(10.22)

δ(W − kΩs ) X(Ω − W )dW(10.23)

k=−∞

∞  ∞
1 
δ(W − kΩs )X(Ω − W )dW
Ts−∞(10.24)1
Ts(10.25)k=−∞∞X(Ω − kΩs )k=−∞ってことかお．いや，できたけど，そんなに簡単でもなかったお…．この計算ちゃんと合ってるのかお?
やらない夫 自信ないか? じゃあ，ちょっと意味を考えてみようか．たたみこみってそもそもどういう現象を表現しているんだった?
やる夫 この間やった話 (p. 85) だお．インパルス応答が h(t) の線形時不変システムに入力 x(t) を入れたときに出てくる出力が，h(t) ∗ x(t) になるんだったお．
やらない夫 じゃあ，入力として x(t) = δ(t − T1 ) を入れたら?
やる夫 ん，定数 T1 だけ時間シフトしたデルタ関数ってことかお．そりゃ時不変システムなんだから，イ
ンパルス応答を T1 だけ時間シフトしたものが出てくるお．

h(t) ∗ δ(t − T1 ) = h(t − T1 )(10.26)

h(t)
δ(t)

h(t)

δ(t – T1)h(t – T1)

t
0

t
0

T1

T1

やらない夫 そうだな．t = T1 にインパルスが立っているデルタ関数 δ(t − T1 ) をたたみこむってことは，
たたみこまれる関数 h(t) をそのインパルスの位置までずらしてやるってことだ．
じゃあ，入力として x(t) = δT1 (t) を入れた場合はどうなる?
やる夫 くし型関数だから，デルタ関数が時間 T1 おきに並んでやって来るんだお．出力は，そのインパル
ス 1 個 1 個への応答の重ね合わせなので，たくさんのインパルス応答 h(t) を T1 ずつずらしたものの足し合わせが出て来るはずだお．

h(t) ∗ δT1 (t) =∞h(t − nT1 )(10.27)n=−∞h(t)∑n δ(t – nT1)t∑n h(t – nT1)t

やらない夫 ああ．さっきの式 (10.25) の辺りでやる夫がやった計算も，これを周波数領域でやっただけだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章112

サンプリング定理

やる夫 ああ，そうか．X(Ω) を周波数領域のインパルス応答みたいなものだと考えて，そういうシステムにくし型関数を入力したんだお．だから，X(Ω) を Ωs ずつずらしながら重ね合わせたものになってるんだお．辻褄は合ってるお．
やらない夫 というような，デルタ関数とかくし型関数をたたみこむ操作はよく出てくるので，ちゃんとイ
メージできるようになっておくのがよいだろう．基本的には今みたいにシステムの時間領域の応答を考えるのがわかりやすいと思う．周波数領域だとイメージはしにくいが，全く同じことだ．

10.4

連続時間信号の復元

やらない夫 今のがサンプリング定理を導出するための 2 つめの鍵だ．これでほとんど導出できたようなもんだ．
やる夫 そんなもんですかお．えーと，結局，サンプリングされた信号のスペクトルは1δΩ (Ω) ∗ X(Ω)
Ts s
∞
1 
=
X(Ω − kΩs )Ts

Xd (ΩTs ) =(10.21)(10.28)k=−∞てな風に，元の信号のスペクトルを Ωs ずつずらして並べたのを足し合わせたものになるってのがここまでの結論だお．

X(Ω)Ω

Xd(ΩTs)Ω-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/2
やらない夫 今，元の信号のスペクトル X(Ω) が Ωs /2 以下に帯域制限されているとしよう．
このときのサンプリング後のスペクトル Xd (ΩTs ) はどんな形になる?
やる夫 帯域制限されているってことは，−Ωs /2 〜 Ωs /2 の範囲以外は 0 だってことだお．てことは，あ，重ならずに並べられるんだお．

X(Ω)-Ωs/2 Ωs/2Ω

Xd(ΩTs)Ω-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/2
やらない夫 そうだ．だから，−Ωs /2 〜 Ωs /2 の部分だけ抜き出してくるような処理をしてやれば，元のス
ペクトル X(Ω) が完全に取り出せることになる．数式で書くならこうだな．

X(Ω) = Hr (Ω)Xd (ΩTs )(10.29)やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章113

サンプリング定理

ただし Hr (Ω) = Ts G−Ωs /2,Ωs /2 (Ω) で，G−Ωs /2,Ωs /2 (Ω) は式 (3.27) の矩形関数とする．

G−Ωs /2,Ωs /2 (Ω) =1, |Ω| ≤ Ωs /2(10.30)0, otherwiseX(Ω)-Ωs/2 Ωs/2
Hr(Ω)

Ω

Xd(ΩTs)Ω-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/2
やる夫 つまり，サンプリング後の信号 xd [n] を，離散時間フーリエ変換して，角周波数 −Ωs /2 〜 Ωs /2 の範囲以外の成分をカットして，残った成分を Ts 倍して，それを逆フーリエ変換すれば元の信号 x(t)になるってことかお．
やらない夫 そういうことだな．周波数スペクトルに Hr (Ω) をかけるというのは，低周波のみを残す作用を意味しているわけで，そういう作用をするシステムを一般に低域通過フィルタ，英語でローパスフィ
ルタと呼んだりする．特に今のように，指定された周波数 Ωs /2 より高い成分をすっぱりカットして，
Ωs /2 より低い成分を完全に残すものは，理想的低域通過フィルタと呼ぶ．結局，サンプリングされた信号から元の信号を復元する方法とは，理想的低域通過フィルタを通すことに他ならない．
やる夫 周波数領域でそうなるのはわかったお．でも，まだいまいちピンと来ないお．最初に，xd [n] とxd [n + 1] を結ぶ方法は無数にあるけど，帯域制限を満たすようにすると一意に定まってしまうって言ってたお．結局，どうやって結ぶことになるんだお?
やらない夫 時間領域でどうなるかってことだな．その場合は逆フーリエ変換して考えることになる．
やる夫 んーと，どういうことだお?
やらない夫 周波数領域で Hr (Ω) をかけるってことは，時間領域では hr (t) = F −1 [Hr (Ω)] をたたみこむってことだ．それが時間領域でサンプル間の結び方を与えることになる．
ちょっと面倒ではあるんだが，ゆっくり考えてみようか．式 (10.29) を時間領域で考えるとx(t) = hr (t) ∗ F −1 [Xd (ΩTs )]
xd [n]δ(t − nTs )= hr (t) ∗(10.31)(10.32)nになる．
やる夫 ん，えーと，たたみこみと積の関係のことを言っているのはわかるお．でもデルタ関数が出てくるのはどういうことだお?
やらない夫 Xd (ΩTs ) は xd [n] の離散時間フーリエ変換だからな．仮に離散時間フーリエ逆変換するとした
ら xd [n] に戻るんだが，今は F −1 ，つまりフーリエ逆変換しているので，xd [n] の各点にデルタ関数
をかけたものに戻ることになる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章114

サンプリング定理

xd[n]

DTFT
n

Xd(ΩTs)Ω1-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/2∑n xd[n] δ(t – nTs)t
Ts
やる夫 あー，いつものトリック (p. 64) だお．

やらない夫 で，この計算が何をしているかというと，とりあえず xd [n] のところを無視したとすると，くし型関数のたたみこみなわけだ．つまり hr (t) を Ts 間隔でずらっと並べて足し合わせることになる．
ただし実際には係数 xd [n] があるから，ずらっと並んだそれぞれの高さを xd [n] 倍にしておかないといけない．
つまり hr (t) を nTs だけシフトして xd [n] 倍したものを全 n について足し合わせたのが x(t) だ．これもある種のたたみこみととらえればいいんだが，離散信号 xd [n] と連続信号 hr (t) の離散たたみこ
みになっているのがややこしいところだ．
やる夫 んー，想像しにくいお．
やらない夫 hr (t) の具体的な形を考える方がいいかもな． Hr (Ω) を逆フーリエ変換することで求めておこう．式 (3.31) の結果を使えばいい．
やる夫 あ，そういえば，G−Ωs /2,Ωs /2 (Ω) の逆フーリエ変換は前に一度計算してるんだお．えーと，F −1 [Hr (Ω)] = Ts F −1 [G−Ωs /2,Ωs /2 (Ω)](10.33)

Ωs t
1
sin
πt
2
sin πtTs= Ts=(10.34)(10.35)πtTs

そうそう，sinc 関数になるんだったお．
やらない夫 この sinc 関数の形状についてちょっと確認しておこう．式 (3.36) の「正規化 sinc 関数」と見比べると，t を t/Ts で置き換えたものになっているだろ．
やる夫 なってるお．正規化 sinc 関数は t = ±1, ±2, ±3, · · · で 0 になるように正規化されていたので，今たたみこむ sinc 関数は t = ±Ts , ±2Ts , ±3Ts , · · · で 0 になるような形になるお．

sin π tπtsin π (t / Ts)
π (t / Ts)

1

1
t

-4

-2

0

2

4

t
-4Ts -2Ts

0

2Ts

4Ts

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章115

サンプリング定理

やらない夫 分子の sin がサンプル間でちょうど半周期進むようになっているわけだな．そして t = 0 のところの高さが 1 であることにも気をつけて，式 (10.32) のたたみこみを考えると，例えばこんな感じになる．青い点が各サンプルの値だ．赤い曲線が 1 個 1 個の sinc 関数で，それらすべてを足し合わせたものが元の信号の復元結果になる．

xd[n]

n

やる夫 あー，各サンプルの点を頂点とするような sinc 関数を並べて，全部足し合わせるって感じかお．うーん．結構ややこしい仕組みでサンプル間を結ぶことになるんだお．
やらない夫 ややこしいのもそうだが，sinc 関数が t → ±∞ まで無限に続くものだというのが実用上は大きな困難だ．元の信号を復元するときに，あるサンプルの値の影響は無限時間先までえんえんと及ぼしてやる必要があるわけだ．だから実際には「理想的」じゃない何らかの低域通過フィルタで代用してやる必要がある．

10.5

エイリアシング

やる夫 ってことは，完全に復元できるってのは単に理論上の話ってことかお．じゃあサンプリング定理の条件を満たすか満たさないかは，実用上は，あまり重要じゃないってことかお?
やらない夫 そういうわけでもないぞ．後から復元する/しないに関わらず，サンプリング定理の条件を満たさずにサンプリングを行ったときに，どういう影響が出てくるかを考えておこう．
やる夫 条件を満たさないってのは，サンプリング周波数が元の信号の帯域の 2 倍に達しない場合だお．その場合は，サンプリング後の信号のスペクトルは，こんな風に X(Ω) のすそ同士が重なり合うことになるお．

Xd(ΩTs)Ω-3Ωs/2 -Ωs/2 Ωs/2 3Ωs/2
やらない夫 その図だとすそ同士をかさねて描いてあるが，実際には重なったところは足し算になるという点に注意して欲しい．その結果，元の信号の異なる周波数が混ざってしまって区別できなくなるわけだ．例えば元の信号の帯域が 100 Hz だったとしよう．この信号を 150 Hz でサンプリングしたとする．
やる夫 100 Hz の 2 倍に達していないから，サンプリング定理の条件は満たしていないお．
やらない夫 そのときどうなるかというと，75 Hz を境にして 75 ±α Hz の信号が互いと混ざってしまう．

80 Hz の成分は 70 Hz と混ざるし，90 Hz の成分は 60 Hz の成分と混ざり，見分けがつかなくなる
んだな．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章116

サンプリング定理

150 Hzf [Hz]
075

100

やる夫 丁度 75 Hz で折り返されたような感じだお．
やらない夫 そういうわけで，サンプリング定理の条件を満たさないような周波数でサンプリングすると，本来の信号とは違う周波数成分が現れてしまう．このことを折り返し雑音とか，エイリアシングとか呼んだりする．
やる夫 そっか，最終的に元の信号を復元しようがしまいが，サンプリング定理の条件が満たされていないと，サンプリングした時点で本来無かったはずの信号成分が現れてしまったりするんだお．確かにそれはまずいお．
折り返しってのは今の 75 Hz で折り返す意味の折り返しかお．
やらない夫 その通り．本当は 70 Hz の信号成分なんか無かったのに，80 Hz の成分が折り返されてきて70 Hz に見えたりするわけで，これを折り返し雑音と呼ぶ．エイリアシングってのは直訳するなら「別名づけ」ってところかな．80 Hz の信号成分が，70 Hz にも 80 Hz にも見えるわけで，そういうところから来た名前だろうな．
やる夫 サンプリングするときは，ちゃんと元の信号の帯域の 2 倍以上のサンプリング周波数を確保することが重要だってことがわかったお．
やらない夫 そうだな．で，重要な概念にはだいたい名前がついている．ただし，かなり紛らわしい 2 つの用語が混在しているので注意だ．


ナイキストレート (Nyquist rate) 信号の帯域 Ωc が与えられたとき，その信号の情報を失うことなくサンプリングできるサンプリング周波数 (サンプリングレート) の下限 2Ωcナイキスト周波数 (Nyquist frequency) サンプリング周波数 Ωs が与えられたとき，情報を失わずにサンプリングできるような信号が含む周波数成分の上限 Ωs /2

やる夫 えっ，な，何? ナイキストレートとナイキスト周波数で意味が違うのかお?
やらない夫 英語の標準的な教科書，例えば Oppenheim & Schafer (1998) とかだと明確に使い分けられているようだな．日本語の文献だとしばしば混乱がある．
レートも周波数も本質的には同じ概念を指す言葉だが，レートの方が使える文脈が限られているんだな．つまり「単位時間あたり何回サンプルできるか」という意味のサンプリング周波数の代わりに「サンプリングレート」という言葉を使うことはできるが，「信号が 100 Hz の周波数成分を含む」という代わりに「100 Hz のレート成分を含む」とはちょっと言い難い．ということを考えると，「ナイキス
トレート」という言葉は「サンプリングレートの下限」の方にしか使えなさそうってのはまあ納得のいくところだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章117

サンプリング定理

やる夫 でも，逆に「ナイキスト周波数」って言葉であればどっちの意味で使ってもそんなに違和感ないと思うお．
やらない夫 そうだな．そういう意味で微妙な用語だなとは思う．ともかく「ナイキスト何とか」と言われたら，(誤用の可能性も含めて) この 2 種類の概念を指し得るということ知っておくといい．実際にどっちの意味で使われているかは，ほとんどの場合は文脈から判断できる．

10.6

くし型関数で理解する 4 種類のフーリエ変換の関係

やらない夫 今回の話は，サンプリング定理自体が重要なのも確かだが，その導出の過程で出てきた考え方が重要だ．
やる夫 何かいっぱい出てきて大変だったお．
やらない夫 まず，連続信号をサンプリングするという操作を，くし型関数をかけることで表すという考え方だ．
やる夫 そこがちょっとまだピンと来てないお．くし型関数をかけるといろいろうまく行くのはわかったし，
離散時間フーリエ変換とかを導出するときにも同じような考え方をしたけど，やっぱりもっと普通に

x(t) のうち t = · · · , −Ts , 0, Ts , 2Ts , · · · のところの値を単純に抜き出してくる方がサンプリングらしい気がするお．
やらない夫 いや，別にそれがダメってわけじゃないんだぞ? サンプリング後の信号をどうやって操作する
かによって，便利な表現が変わるってことだ．その辺をクリアに理解するためには，連続時間信号と離散時間信号が別物だってことをはっきり意識しておくことが重要だ．
やる夫 えーっと，意識しているつもりではいるんだけど，どういうことかお?
やらない夫 連続時間信号 x(t) をサンプリングして xd [n] = x(t)|t=nTs を作る，っていうときの xd [n] は正真正銘の離散時間信号だ．このときはデルタ関数をかけたりしないし，かけることに意味が無い．デルタ関数は連続時間の関数だからな．
やる夫 それはわかるお．
やらない夫 ややこしいのは，連続時間信号をサンプリングして，でもそれを連続時間の関数として扱いた
いときだ．今回みたいに，連続時間のフーリエ変換で操作したいときなんかがその例だな．その場合，
単純に

xd1 (t) =x(t),t = · · · , −2Ts , −Ts , 0, Ts , , 2Ts · · ·0,otherwise(10.36)という風にするのが一概に間違いというわけじゃない．ただし，例えばこれをフーリエ変換しようと思うと，ゼロになってしまって困るというのは何度も見てきた通りだ．
やる夫 だからくし型関数をかけよう，って話だったお．
やらない夫 そうだな．そういうときは

xd2 (t) = x(t)δ(t − nTs )(10.37)nにするわけだった．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章118

サンプリング定理

やる夫 そこが気持ち悪いお．xd1 (t) と xd2 (t) は明らかに違う関数なんだお．どっちも x(t) をサンプリン
グしたものである xd [n] と同じもののはずなのに，どうして別の関数になるんだお?
やらない夫 その「同じもののはず」というのが幻想だ．離散時間信号は離散時間信号，連続時間信号は連続時間信号，全くの別物だ．同じものではあり得ない．
やる夫 えーっ，そうなんかお．え，あの，同じじゃないんだったら，一体何なんだお．
やらない夫 単に「そのように対応づけると約束する」ということだな．同一視するといってもいい．約束するだけだからどんな表現でもアリっちゃアリなんだが，何らかの意味で現実をうまく表しているものが便利なわけだ．
だから xd1 (t) にしろ xd2 (t) にしろ，t = nTs のところでのみ値を持ってほかは 0，という表現を共通して選んでいるわけだ．サンプリングという操作の表現としてはまあ自然なものだろう．
やる夫 まあ，そうだお．
やらない夫 値を持つところ，つまり t = nTs のところの瞬時の値自体を重視して，それが x(t) と一致す
るように取ったのが xd1 (t) の表現だ．ただしそうすると，積分が常にゼロになってしまう．代わりに，積分したものが xd [n] の総和と一致するように取ったのが xd2 (t) の表現だ．代償として，瞬時値
自体は x(t) と一致しない，というか，無限大なんていう厄介な代物になってしまう．
やる夫 それで，フーリエ変換を考えるときは xd2 (t) の方が都合がよいってわけかお．
やらない夫 ということだな．そしてこの「サンプリング = くし型関数をかける」を理解すると，今までやってきた 4 種類のフーリエ変換の関係の見通しがよくなる．
やる夫 どういうことだお?
やらない夫 普通のフーリエ変換から始めよう．時間領域でくし型関数をかけることでサンプリングする．

x(t) ∑n δ(t – nTs)t

これを周波数領域で見るとどうなる?
やる夫 えーと，積のフーリエ変換はフーリエ変換のたたみこみになる (p. 84) んだお．で，くし型関数のフーリエ変換はくし型関数なので，周波数領域ではくし型関数をたたみこむことになるお．
やらない夫 くし型関数をたたみこむと，元のスペクトルを「くし歯」の間隔で並べて足し合わせることになるんだった．その結果，周期的なスペクトルが得られる．これが，離散時間フーリエ変換だ．

X(Ω) * ∑k δ(Ω – kΩs)x(t) ∑n δ(t – nTs)t

Ω

やる夫 お? おお．
やらない夫 時間領域の周期信号を考えよう．これは，1 周期 T0 の分だけからなる信号に，くし歯の間隔が T0 のくし型関数をたたみこんだものだと見ることができる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 10 章119

サンプリング定理

やる夫 すると，周波数領域ではくし型関数をかけることになるんだお．そうか，これがフーリエ級数展開
だお．なるほど，離散的なスペクトルになる理由がよくわかるお．

X(Ω) ∑k δ(Ω – kΩ0)x(t) ∗ ∑n δ(t – nT0)

Ωt

やらない夫 残る離散フーリエ変換も同様だ．離散時間フーリエ変換からスタートして，時間領域が周期的の場合を考える．1 周期分からなる信号にくし型関数をたたみこむことで表すことができる．すると
周波数領域ではくし型関数がかけられることになって離散的になる．
あるいは，フーリエ級数展開からスタートしてもいい．
やる夫 えーと，フーリエ級数展開を考えて，時間領域でくし型関数をかけてサンプリングするんだお．すると，周波数領域ではくし型関数がたたみこまれて，周期的なスペクトルが現れるお．
やらない夫 時間領域と周波数領域で，周期性と離散性は表裏の関係にあるとこれまで何度も話してきた．
その関係が，くし型関数を使って考えるとこんなにすっきり説明できるわけだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

120

第 11 章 スペクトル解析と窓関数
11.1

離散フーリエ変換によるスペクトル解析

やる夫 離散フーリエ変換のおかげで，時間領域から周波数領域への変換が有限の数列から有限の数列への変換として扱えるようになったわけだお．連続とか無限とかを扱わなくて済むので，実際の信号をコンピュータで解析できるわけだお．
やらない夫 そうだな．まあ解析といってもいろいろあるが，信号がどんな周波数成分を持っているか，同じことだが別の言い方をすると，どのようなスペクトルで構成されているかを調べることができるよ
うになるわけだ．スペクトル解析とか，周波数解析とか呼ぶ．解析の代わりに分析でもいいが，まあ
どれも同じようなことを指している．
やる夫 実際に計算するには高速フーリエ変換のアルゴリズムを使うのがいいんだお．単純に入力信号を高速フーリエ変換の処理にぶち込めばいいのかお?
やらない夫 うーん，実はそこはいろいろと厄介な問題をはらんでいる．どんな問題かを話す前に，典型的なスペクトル解析の流れを説明しておこうと思う．
まず，解析対象の信号が連続時間信号だった場合は，サンプリングして離散時間信号に変換する必要がある．もちろん最初から離散時間信号を扱う場合もあるだろうからそういうときはそのままでいいんだが，物理的な信号の多くは，例えば音声信号にしろ電気信号にしろ連続時間信号だからな．離散化が必要だ．
やる夫 まあそりゃそうだお．
やらない夫 次に，その離散時間信号を離散フーリエ変換にかけるわけだが，このとき信号の一部の区間を切り出して処理する．N 点離散フーリエ変換をする場合は，N 時刻分の信号を切り出すわけだ．

nN᫬้
やる夫 で，計算結果として N 点の周波数スペクトルが得られるわけだお．でも，切り出されなかった他の区間はどうするのかお?
やらない夫 普通は，一連のプロセスをえんえんと繰り返す．つまり，入力信号からまた新たに N 時刻分の区間を切り出してきてスペクトルを計算する．これを入力が続く限り繰り返すわけだ．結果として「周波数スペクトルのグラフが時間とともに変化する様子」みたいのが得られる．
やる夫 てことは，入力信号が N 時刻分たまるごとに離散フーリエ変換を走らせるってことかお．入力信
号を N 時刻ずつに区切るってことになるお．

第 11 章121

スペクトル解析と窓関数

n
N᫬้

N᫬้

やらない夫 そうとは限らないな．例えば，直前に処理した区間とオーバラップした区間を切り出してきて処理したってよいわけだ．

n
N᫬้
N᫬้
N᫬้ L
やる夫 なるほど，そうすれば，極端な話 1 時刻ごとにスペクトルを計算することもできるわけだお．
やらない夫 まあ実際にどうするかは，そんなに細かい時間間隔でスペクトルを計算する必要があるかとか，計算が間に合うかとか，そういう辺りを考慮して決めるわけだな．

11.2

アンチエイリアスフィルタ

やる夫 で，問題をはらんでるってのはどういうことだお?
やらない夫 ああ，まず一点目は最初のサンプリングのところだ．前回学んだ通り，サンプリング定理の条件(p. 105) を満たさないとまずいことになる．
やる夫 えーと，エイリアシングが起きて偽の周波数成分が出てきてしまうんだお．それを防ぐには，信号の帯域の 2 倍以上の周波数でサンプリングしなきゃならないお．
やらない夫 そうだったな．じゃあ，もしサンプリング周波数が固定されてしまっている場合はどうする?
やる夫 ええー，サンプリング周波数の半分の帯域までしか入力信号は持てないんだお．でも現実の音声信号とか電気信号とかがそうなっていることを保証するのは難しいと思うお．
やらない夫 なので，普通はサンプリングの前に低域通過フィルタを入れてやる必要がある．ここでナイキ
スト周波数以上の成分を除去してしまうんだな．
やる夫 んー，でもサンプリングする前にかけるフィルタってことは…ディジタル処理はできないんだお?
やらない夫 そうだな．ここはアナログのシステムで処理してやる必要がある．この役割のフィルタのことを，アンチエイリアスフィルタと呼ぶ．エイリアシングに抗するフィルタってことだな．元の信号がナイキスト周波数以下に収まっていると確信できる場合以外は，サンプリングの前にこれを置いてやらなくてはならない．
䜰䞁䝏䜶䜲䝸䜰䝇
䝣䜱䝹䝍䝃䞁䝥䝸䞁䜾

䝇䝨䜽䝖䝹ゎᯒ

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 11 章122

スペクトル解析と窓関数

やる夫 でも，まあ，要はローパスフィルタを置けばいいんだお．そんなに問題とも思わないお．
やらない夫 ああ，本当に厄介なのはサンプリング後の話だ．
やる夫 まだあるんかお．

11.3

有限区間の切り出しやらない夫 離散時間信号から N 時刻分を切り出してきて離散フーリエ変換にかけるわけだが，この切り出し方が問題だ．
まず復習だが，離散フーリエ変換ってのはどういう信号に適用できるんだった?
やる夫 えっと，まず当然離散時間信号だお．それから…，あ，そうか，周期的であることも前提だお．時
間領域で離散的で周期的だから，周波数領域も離散的で周期的になるんだったお．
やらない夫 そうだな．さて今何らかの入力信号から N 時刻分の区間を切り出してきた．これを離散フーリエ変換にかけるということは，どういう信号を扱っていることになる?
やる夫 その区間が，全体のうちの 1 周期分になるような信号だってことだお．だから，その区間の信号をそのままコピペして繰り返した信号を解析しているってことになるお．
やらない夫 その「コピペして繰り返す」ことを周期拡張するという．具体例を考えてみよう．極端に簡単な例として，単一周波数のサイン波を考える．本当は離散時間信号だが，面倒なので図は連続時間信号のようにかくことにしよう．まあ，サンプリング周期がが十分に短いと思ってくれ．
これを，こういう区間で切り出してくれば，何の問題もないわけだ．

n

やる夫 この区間を周期拡張しても元の信号と同じになるわけだお．
やらない夫 じゃあ，こういう区間だったらどうなるか．

n

やる夫 んー，この場合は周期拡張するとこんな風になるお．元の信号とはえらい違いだお．

n

やらない夫 そう，こんな風に，元の信号と切り出す区間の関係によっては，周期拡張したときにうまくつながらなくて，本来スペクトル解析したい信号とは別のものになってしまう．
やる夫 そっか．切り出す区間の長さ N は元の信号の周波数に合わせてうまく決めなくちゃならないんだお．
やらない夫 おいおい，そういうことじゃないぞ．
やる夫 えっ，違うのかお?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 11 章123

スペクトル解析と窓関数

やらない夫 よく考えてみろ．スペクトル解析をしたいときってのは，元の信号がどんな周波数かわからないから解析したいんだ．わからないのにうまく合わせようがないだろう．
やる夫 あ…そうか，その通りだお．ていうか，そもそも複数の周波数成分が含まれていたら，すべての周波数にうまく合わせるなんてこと自体が無理だお．
やらない夫 というわけで，こういう問題が起きないようなうまい N を選ぶなんてことは不可能だ．そのことは認めたうえで，周期拡張するときにつなぎ目がおかしくなるのを回避するための手段が必要になる．
やる夫 そんなことできるのかお．
やらない夫 完璧な方法とは言えないが，広く用いられているのが，窓関数を使って切り出しを行い，それから離散フーリエ変換につっこむという方法だ．
䜰䞁䝏䜶䜲䝸䜰䝇
䝣䜱䝹䝍

11.4

䝃䞁䝥䝸䞁䜾

❆㛵ᩘ䛷
ษ䜚ฟ䛧

㞳ᩓ
䝣䞊䝸䜶ኚ᥮

窓関数とその特性

やらない夫 まず，そもそも一定の長さの区間を切り出してくるっていう操作は，数式としてはこう書ける．

xw [n] = wr [n]x[n]where wr [n] =(11.1)
1, n = 0, 1, · · · , N − 1
0, otherwise(11.2)

wr[n]
x[n]

n

やる夫 n = 0, 1, · · · N − 1 の間だけ 1 であと全部 0 になるような矩形関数をかけるんだお．
やらない夫 これがどうしてまずいのかというと，n = 0 と n = N − 1 のところで wr [n] の値が 0 から 1，1
から 0 に急激に変化するからだ．だから x[n] を周期拡張したときにつながらなくなってしまう．じゃ
あどうするか．
やる夫 …なめらかに変化させる，ってことかお．
やらない夫 そういうことになるな．例えば⎧⎨ 0.54 − 0.46 cos 2πn ,wh [n] =N⎩ 0,

n = 0, 1, · · · , N − 1(11.3)

otherwise

なんていう形のものがよく使われる．

wh[n]
x[n]

n

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 11 章124

スペクトル解析と窓関数

やる夫 両端がなめらかに小さくなっているお．
やらない夫 こうやって信号の一部を切り出すためにかける関数のことを，一般に窓関数と呼ぶ．最初のwr [n] は矩形窓とか方形窓とか呼ばれる．対して wh [n] の方はハミング窓と呼ばれるものだ．スペク
トル解析をするときは，こんな風に両端がなめらかに絞られた窓関数を使って切り出すことで，周期拡張の際につながりがおかしくなることを避けるのが重要だ．
やる夫 うーん，でも，こんなのかけたら波形の形状が変わってしまうお．それは問題にならないのかお?
やらない夫 ああ，大問題だな．
やる夫 あっさり認めたお．
やらない夫 問題だが，矩形窓を使うよりはまだましということだな．もちろんハミング窓を使うのが常に最善というわけじゃなく，他にもいろんな窓関数が提案されている．結局どうやっても何らかの形で波形は歪んでしまって，元の信号のスペクトルとは大なり小なり異なる結果が得られてしまう．そのときどきの目的に応じて都合のよい窓関数を選ぶことが重要だ．
やる夫 んー，一般論過ぎてピンと来ないお．具体的にはどうすればいいのかお．
やらない夫 そうだな．元の信号のスペクトルが，窓関数をかけることでどんな風に変化するかを考えるといい．
まず矩形窓から考えるか．wr [n] の離散時間フーリエ変換 Wr (ω) はどんな形になる?
やる夫 えーと，Wr (ω) =∞

wr [n]e−jωn(11.4)

n=−∞

=

N
−1


e−jωn

(11.5)

1 − e−jωN
1 − e−jω(11.6)

n=0=になるお．でもこれじゃ形はわからないお…．
やらない夫 連続時間の矩形関数をフーリエ変換したとき (p. 38) のことを思い出すといいぞ．
やる夫 んー，あ，そうか，オイラーの公式で sin に持ち込むんだお．

e−jωN/2 ejωN/2 − e−jωN/2· jω/2e−jω/2e− e−jω/2
ωN
ω(N −1) sin
2= e−j 2sin ω2Wr (ω) =(11.7)(11.8)

ふーん，同じく矩形関数なのに，離散時間の場合は sinc 関数とは違うものになるんだお．
やらない夫 そうだな．振幅スペクトルの形状はこんな感じで sinc 関数に似てはいるんだが，ちょっと違う．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 11 章125

スペクトル解析と窓関数

1.0| Wr(ω) |maxω | Wr(ω) |
0.5

0.0
-π

0

π

ω [rad]sinc 関数は sin の振幅が原点から離れるに従って反比例で減っていくんだったが，これは 1/(sin ω/2)
で減っていくんだな．しかもちゃんと周期 2π で周期的になっているのに注意しよう．
やる夫 あ，そうか，離散時間フーリエ変換だから，スペクトルは周期 2π のはずなんだったお．辻褄が合ってるお．
やらない夫 時間領域で wr [n] をかけるということは，周波数領域では元のスペクトルに今の形の関数 Wr (ω)
をたたみこむことになるわけだ．イメージできるか?
やる夫 そろそろ慣れてきたお．元のスペクトルの各点から，その点の高さに合わせた Wr (ω) をぶら下げて，全部重ね合わせるんだお．
やらない夫 その結果どうなるかは，Wr (ω) の形状の各部ごとに考えることができる．まず真ん中の大きな山の部分だな．この部分をよくメインローブと呼ぶ．たたみこまれたときに，メインローブは近傍の値同士を互いと平均化する効果を持つのがイメージできるか?

やる夫 ある点に Wr (ω) をぶら下げたときに，メインローブの分だけその点の値が広がるんだお．全部の点についてそう作用するので，確かに近傍での平均化のように作用しそうだお．
やらない夫 なので，例えばスペクトルに非常に近接した 2 本のピークがあったとすると，メインローブの影響で両者がくっついてしまったりする．本当は 2 本のピークがあることを見逃してしまったりしがちなわけだ．
やる夫 なるほど，てことはメインローブはできるだけ細い方がいいんだお．
やらない夫 次にメインローブ以外の背の低い山の部分，これらはサイドローブと呼ばれる．サイドローブ
は，ある点の値の影響を，ずっと遠くまで引きずる効果を持つことになる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 11 章126

スペクトル解析と窓関数

やる夫 てことはどこかに大きなピークがあると，関係ないところまでちょっとずつ底上げされることにな
るお．
やらない夫 その結果，スペクトルの小さなピークが，無関係な大きなピークからの影響に埋もれてしまったりする恐れがある．だからサイドローブはできるだけ低いことが望ましい．
やる夫 結局，メインローブが限りなく細くて，サイドローブが限りなく存在しない，単位インパルスみた
いな形状のものをたたみこむのが一番ってことだお?
やらない夫 いや，そりゃそうなんだが，周波数領域で単位インパルスになるってことは時間領域では定数

1 だからな．窓をかけることにならんだろ．
やる夫 あ，そっか，ダメだお．
やらない夫 一定の長さの窓関数として機能するものを考えている限り，すべての要件を同時に満たすのは不可能で，トレードオフの関係にある．だから，目的に応じて選択する必要があるわけだな．
で，具体例としてさっきのハミング窓のスペクトルを見てみよう．
1.0| Wh(ω) |maxω | Wh(ω) |
0.5

0.0
-π

0

π

やる夫 メインローブはむしろやや太くなってるお．でもサイドローブはかなり小さくなってるお．
やらない夫 矩形窓は，実はメインローブの細さについてはかなりよい性能を持っている．ただしサイドロー
ブが高すぎてまずいわけだ．時間領域との対応で考えると，矩形窓は周期拡張の境目で信号が不連続になるのが問題だった．不連続な関数を作るためには，無限に高い周波数成分まで重ね合わせてやらなくてはならない．低周波数のサイン波では滑らかな信号にしかならないからな．つまり広い周波数に渡って偽の成分が発生してしまうことになる．まさにサイドローブの効果なわけだ．
やる夫 ハミング窓みたいに両端を絞ってやるとその効果は抑えられるけど，波形が歪んでスペクトルの形状が変わっちゃうわけだお．メインローブの太さとか，残ったサイドローブがその効果をもたらしていることになるお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 11 章127

スペクトル解析と窓関数

やらない夫 他の代表的な窓関数としては，ハニング窓，ブラックマン窓などがある．興味があれば調べてみるといい．
それから，ちょっと注意点だ．今回ハミング窓は周期 N の cos と矩形関数を組み合わせたような関数で表した．教科書によっては代わりに周期 N − 1 の cos を使っている場合もある．
やる夫 んーと，それは別の窓関数にならないかお．
やらない夫 もちろん厳密には別の関数だし，特性も全く同じじゃないが，まあ流儀の違い程度のものだと思ってもらうのがいいかな．いずれにせよ長さ N の区間の両端を絞るという目的は同じだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

128

第 12 章 ディジタルフィルタの基礎
12.1

周波数選択フィルタと線形時不変システム

やらない夫 前回は，入力信号にどんな周波数成分が含まれているかを分析する方法について考えた．今回はさらに一歩進めて，周波数成分を操作することを考えよう．
やる夫 音声の低音域をカットしたりとか，中音域を強調したりとか，そういうことだお．
やらない夫 そうだな．一般に，入力のうち欲しい成分だけを通過させて他を阻止する装置をフィルタと呼ぶ．特に注目するのは，周波数によって通過・阻止を決めるをもので，周波数選択フィルタなどと呼ぶ．例えば低域通過フィルタ，高域通過フィルタ，帯域通過フィルタ，帯域阻止フィルタなどに分類できる．よくアナログの電子回路として実現されたりしているわけだが，それをコンピュータで実装
してやろうってことだな．
やる夫 でもまあ，前回の方法で入力信号を周波数スペクトルに分解できるわけだお．分解してから周波数ごとに成分を増やしたり減らしたりして，それをまた時間領域に逆変換で戻してやればいいんだお?
やらない夫 うーん，気持ちはわかるが，それはあまりいいアイディアとは言えないな．
やる夫 えーっ，何でだお?
やらない夫 前回得られたスペクトルは，あくまで元の信号に窓関数をかけたもののスペクトルだってことだ．元の信号のスペクトルからは歪んでしまっている．窓関数の影響を考慮してゴニョゴニョすることも考えられないわけではないが，いかにも回りくどい．
やる夫 ぐぬぬ．
やらない夫 それよりも，元の信号を入力として，フィルタをかけた後の信号を出力とするような「システム」を考える方がずっと筋がいい．
そもそもアナログフィルタはどうやってできているのかを考えると，抵抗とかキャパシタとかを使った電子回路だったりするわけで，連続時間の線形時不変システムなわけだ．同じ役割をするものをコンピュータを使って作りたいわけだから，離散時間の線形時不変システムを考えようというのが自然な発想だ．
やる夫 んー，時間信号から時間信号への変換を直接考えるってことかお? 周波数によってフィルタをかけることを考えるのに，周波数領域で考えなくていいのかお?
やらない夫 いや，もちろん周波数領域で考えた上で，どのような変換をするか定めることになる．鍵になるのは線形時不変システムの周波数応答の考え方だ．
さて復習だ．周波数応答 (p. 90) ってどういうことだった?
やる夫 え，えーと，線形時不変システムにある周波数 ω の振動 ejωn を入力すると，式 (8.21) の通り，同
じ周波数の振動が H(ω) 倍にっなて出て来るんだお．

y[n] = H(ω)ejωn(8.21)

第 12 章129

ディジタルフィルタの基礎

つまり，一般の入力信号をスペクトルに分解して考えると，周波数 ω の成分は振幅が |H(ω)| 倍されて，位相が − H(ω) だけ遅れるんだったお．この H(ω) が周波数応答ってやつだお．
H(ω)exp(jωn)
exp(jωn)h[n]1|H(ω)|nn−∠H(ω)
やらない夫 そうだったな．つまりそのシステムを通すことで，各周波数の成分がそれぞれどれだけ変化するかを表すのが周波数応答だ．てことは，この周波数応答を自由に設計できるなら，周波数選択フィルタになるんじゃないか?
やる夫 ん? あ，そうか．通過させたい周波数は残して，阻止したい周波数の応答を 0 にしてやればいいん
だお．
やらない夫 というわけで，離散時間線形時不変システムの周波数応答を考えることで，周波数選択フィル
タを考えることができそうだ．これ以降，ディジタルフィルタといったらそういうものを考えることとする．
論点としては，そうやって好き勝手に与えた周波数応答は本当に実現可能なのか，実現できるとした
らどうやって作ればいいのか，実現できないなら次善策はあるのか，とかを考えなくてはならないわ
けだな．

12.2

インパルス応答のたたみこみによるディジタルフィルタ

やらない夫 まずは，システムの所望の周波数応答 H(ω) が与えられたときに，それが時間領域ではどういう操作に相当するかを考えよう．
やる夫 えーと，周波数応答ってのは，インパルス応答の離散時間フーリエ変換だったんだお．だから，与えられた周波数応答 H(ω) を離散時間フーリエ逆変換すれば，インパルス応答 h[n] が得られるお．

h[n] = DTFT−1 [H(ω)](12.1)

この h[n] をたたみこむのが，フィルタの仕事ってことになるお．
やらない夫 おお，冴えてるじゃないか．
やる夫 単にたたみこみをするだけでいいなら，実現可能とか不可能とかってのはどういうことなんだお?
やらない夫 そうだな．いくつかの観点がある．まずは因果性という概念だ．定義から話すと，すべてのn < 0 について h[n] = 0 であるようなインパルス応答を持つシステムを因果的であるという．
やる夫 えーと，どういうことかお．
やらない夫 インパルス応答 h[n] の意味をもう一度確認しておこうか．時刻 0 に単位インパルスが入力されたときに現れる出力がインパルス応答だった．

δ[n]
0

h[n]

h[n]

n

n

0
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 12 章130

ディジタルフィルタの基礎

じゃあ，n < 0 のときに h[n] の値が 0 じゃないってのはどういうことになる?
やる夫 んー，あ，入力がまだ来てないのに応答が現れることになるお．

δ[n]

h[n]

h[n]

n

0

n

0

やらない夫 そう，言い換えると，未来の入力を先取りして応答するシステムだということになる．そういうフィルタは，少なくともリアルタイムに動作するシステムとしては実現不可能だ．
やる夫 リアルタイムじゃない場合ってどういうことだお?
やらない夫 例えば，あらかじめ入力信号をすべて記録しておいて，後から処理するような場合だな．そういう場合も「仮の現在時刻」を進めながら入力信号を読み出して，フィルタ処理をしていくことはできるわけだ．その場合，仮の現在時刻よりも未来の入力信号も既に手に入っているので，使うことができる．
やる夫 そういう特殊な状況ではないリアルタイムなシステムとしては，因果的なフィルタしか実現できな
いってわけだお．
やらない夫 そういうことだな．だから我々は主として因果的なフィルタを考えていくことにする．因果的な場合，たたみこみで総和を取る際のインデックスは以下のように取ることもできることにも注意しておこう．

h[n] ∗ x[n] ==∞

h[m]x[n − m]

m=0
n


(12.2)

h[n − m]x[m](12.3)m=−∞

やる夫 えーと 1 行目は，m が負のときに h[m] が 0 になってその項は消えるから，m = 0 以降の総和でいいってことだお．2 行目は…どういうことかお?
やらない夫 基本的には同じことだ．n − m < 0 になる項が消えるわけなので，m > n は総和範囲から外していいってことだな．あるいは x[m] の方に着目して，m > n であるような x[m]，すなわち未来の入力は，出力に寄与しないと理解する方がわかりやすいかもしれない．
やる夫 あー，そっちの方がピンと来るお．ともかく，因果的なフィルタであれば実際に作ることができるってことでいいのかお．
やらない夫 ここでまた別の観点の登場だ．ちょっとゆっくり考えてみて欲しい．因果的な場合のみを考えることとして，式 (12.2) とか (12.3) とかのたたみこみの計算は，本当に常に実行可能か?
やる夫 ん? えーと，単に積の総和を計算するだけ…，あ，そっか，無限の総和をしなきゃいけないお．
やらない夫 そう，つまり，インパルス応答 h[n] が有限の長さの区間でのみ値を持っていてその他は 0，というような場合じゃないと，たたみこみの計算をそのまま実行するのは不可能ってことだな．
ディジタルフィルタを分類して考える上では，この観点も重要だ．重要なので例によって名前がついている．インパルス応答 (のうち 0 でない部分) の長さが有限のものを FIR (Finite Impulse Response)
フィルタと呼ぶ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 12 章131

ディジタルフィルタの基礎

δ[n]

h[n]

h[n]

n

n

0

0

᭷㝈㛗
インパルス応答が時刻 M まで続くとすると，出力は

h[n] ∗ x[n] =Mh[m]x[n − m]

(12.4)

m=0と有限の手順で計算できる．
一方，インパルス応答 (のうち 0 でない部分) が無限に続くものを IIR (Inﬁnite Impulse Response)
フィルタと呼ぶ．

δ[n]

h[n]

h[n]

n

0

L
n

0
↓㝈㛗

やる夫 FIR フィルタはそのまま計算できるけど，IIR フィルタは無理だってことだお．
やらない夫 ざっくり言うとそうなんだが，ちょっと不正確だ．もう少し慎重に考えると，いくら FIR でも長すぎたら現実的には計算が終わらないとか，もちろんそういう場合はある．そういう話は置いといて，FIR フィルタなら少なくとも原理上は有限の計算資源で直接計算可能ってことだな．
それから，IIR フィルタの計算が無理ってのは，あくまで「たたみこみを直接計算するのは無理」って意味なので要注意だ．計算のしかたを工夫すると，無理じゃなくなる場合がある．それを次に見て
いこう．

12.3

線形差分方程式によるディジタルフィルタ

やる夫 えー，無限長の h[n] のたたみこみが有限の手順で実行できるってことかお．そんなことどうやったらできるんだお?
やらない夫 そうだな，具体例を見ていくのがわかりやすいと思う．例えばαn , n ≥ 0h[n] =
0,otherwise(12.5)というインパルス応答のシステムを考えてみようか．
やる夫 α ってのは定数かお?
やらない夫 ああ，定数だ．とりあえずどんな数でもいいんだが 0 ではないとしておこう．因果的なシステ
ムになっていることも注意して欲しい．
やる夫 そっか，単に h[n] = αn って書いてしまうと因果的にならないんだお．場合分け面倒くさいお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 12 章132

ディジタルフィルタの基礎

やらない夫 ああ，確かに面倒なので，同じことをよくこういう風に書く．

h[n] = αn u0 [n](12.6)

ここで u0 [n] は単位ステップ関数と呼ばれるもので，
1, n ≥ 0
u0 [n] =0, otherwise(12.7)と定義しておくことにする．
やる夫 あー，制御工学の授業で連続時間の単位ステップなら出てきたのでよくわかるお．なるほど，場合分けで書くより，u0 [n] をかける方がいくぶん見やすいお．
やらない夫 この u0 [n] は今後も因果的なシステムを考えるときにちょくちょく使うので覚えておいてくれ．
まあ書き方はいずれにせよ，今重要なのは，このシステムは IIR であるということだ．
やる夫 α = 0 だから，時間 n を無限大まで進めても h[n] は 0 にはならないお．インパルス応答が無限に続くから確かに IIR だお．
やらない夫 このシステムに x[n] を入力したときの出力を y[n] としよう．y[n] はたたみこみを使ってこう
書けるが，
∞


y[n] ==

αm u0 [m]x[n − m]

(12.8)m=−∞∞m

α x[n − m]

(12.9)m=0

IIR なので無限和の計算が必要だ．現実には実行できない．
やる夫 そうだお．これをどうするんだお?
やらない夫 まず，m = 0 の項とそれ以外に分ける．
∞
y[n] =

αm x[n − m] + α0 x[n](12.10)m=1

それから l = m − 1 という変数変換をしてみよう．
∞
y[n] =
αl+1 x[n − (l + 1)] + x[n]

=α

l=0
∞


αl x[(n − 1) − l](12.11)+ x[n](12.12)l=0

さて，この中カッコ { } の中を式 (12.9) と見比べてみてくれ．何か気づかないか?
やる夫 んん? あ，∞ll=0 α x[(n − 1) − l] = y[n − 1] って書けるってことかお? つまり，

y[n] = αy[n − 1] + x[n](12.13)が成り立っていることになるお．
やらない夫 そう，この式を使えば y[n] の計算に無限和は必要ない，というか，定数倍 1 回と加算 1 回で済んでしまうな．入力信号 x[n] だけじゃなく，前の時刻の計算結果 y[n − 1] も計算に再利用してやることことでこれが可能になっている．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 12 章133

ディジタルフィルタの基礎

やる夫 えーと，つまり y の初期値が例えば y[0] = 0 とか決まっていたとして，そこから y[1] = αy[0]+ x[1]，y[2] = αy[1] + x[2]，… って順繰りに計算していくってことだお．漸化式みたいなもんだお．
やらない夫 今わかったことは，式 (12.9) みたいに無限に続くインパルス応答のたたみこみと等価なもの
を，過去の出力を再帰的に利用することで有限の手続きで計算できる場合があるってことだ．
やる夫 手品みたいだお．
やらない夫 この例では 1 時刻前の出力しか使わなかったし，入力信号も現時刻のものしか使わなかった．
これをもっと一般化したものを考えることができる．

y[n] =N

αk y[n − k] +

k=1

M


bk x[n − k](12.14)k=0

つまり y[n] を計算するために N 時刻前までの出力と， M 時刻前までの入力を遡って使うってことになる．もう少し対称性のある書き方をするなら，a0 = 1，ak = −αk (k ≥ 1) と置いてN
ak y[n − k] =

k=0

M


bk x[n − k](12.15)k=0

としてもよい．以降こっちの書き方をすることにしよう．
やる夫 この方程式を y[n] について解いたものを使って，順繰りに出力を計算していくことになるわけだお．
やらない夫 これが線形差分方程式によるディジタルフィルタの表現だ．M = N = 2 の場合だと，こんな図を使って表すことができる．三角は定数倍を，四角に z −1 と書いているものは 1 時刻の遅延を表
している．

b0
b1
x[n]

z –1

z –1

y[n]

b2

z –1

z –1

–a1
–a2
やる夫 z −1 って何だお? なんでそれが遅延の意味になるんだお．
やらない夫 確かにまだ意味がわからないだろうな．後で z 変換というものを学ぶと理解できるようになる．
今のところは単なる記号だと思ってくれればいい．
やる夫 気持ち悪いけど，そう思うことにしますお．とにかくこれでさっきの差分方程式が表されていることはわかるお．今後，ディジタルフィルタといえばこれのことを考えていくってことかお?
やらない夫 そうだな．有限長のたたみこみでは FIR フィルタしか実現できなかったのに対して，こうやって線形差分方程式を使うことにすると，より広い範囲の線形時不変システムを実現することができる．
やる夫 より広い…ってことは，有限長のたたみこみによる FIR フィルタもこの方程式の表現に含まれるっ
てことかお?
やらない夫 ああ，ak = 0 (k ≥ 1) とすると

y[n] =

Mbk x[n − k](12.16)k=0になるだろ．この場合を非再帰型という．ここで bk = h[k] とすれば，式 (12.4) そのものになる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 12 章134

ディジタルフィルタの基礎

やる夫 あ，なるほど．FIR フィルタならすべて表現可能になっているわけだお．
やらない夫 それらに加えて各 ak を 0 じゃなくすることで，つまり再帰型にすることで，IIR フィルタも表現可能としているわけだ．
ただし，それでもあらゆる線形時不変システムが表現可能になったわけじゃないことに注意して欲しい．線形時不変システム全体のうち，現実に計算しやすいものとして式 (12.15) のような線形差分方
程式で表されるもののみを考えようということだ．その範囲内で，所望のディジタルフィルタとして機能するものを模索していくことになる．
まとめよう．
• 周波数選択性を持つディジタルフィルタは，線形時不変システムによって実現することができる．そのフィルタ特性は，システムの周波数応答によって表される．
• ディジタルフィルタの作用とは，そのインパルス応答 (= 周波数応答の離散時間フーリエ逆変換) を入力にたたみこむことである．

• たたみこみを定義通りに直接計算するのは，FIR フィルタであれば可能だが，IIR フィル
タでは不可能である．
• 過去の出力を再帰的に利用することで， IIR フィルタの計算を有限の手順で行える場合がある．そのようなフィルタは，式 (12.15) のような線形差分方程式で一般に表現できる．以降は，そのように表現できる範囲のディジタルフィルタを議論していく．

• ディジタルフィルタがリアルタイムに動作するものとして実現可能であるためには，因果

的なインパルス応答を持つことが必要である．

やる夫 久々のまとめだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08



135

第 13 章 ラプラス変換
13.1

線形微分方程式

やらない夫 前回からの話の流れは，これから線形差分方程式で表されるディジタルフィルタを考えていこうということだったわけだ．
やる夫 そうだったお．
やらない夫 線形差分方程式を解析するためのツールとして z 変換というものがものがある．これについて学んでいこうと思う．
やる夫 これまでも何度か名前だけ出て来たお．いったい何者なんだお?
やらない夫 線形微分方程式を解析するためのツールとして，ラプラス変換が強力だというのは知っているだろう? z 変換は，大雑把にいうと，微分方程式じゃなくて差分方程式用のラプラス変換だ．言い換
えると，連続時間系で使われるラプラス変換に相当するものを離散時間系で考えたのが z 変換になる．
やる夫 ラプラス変換が微分方程式を解くのに便利だったり，制御工学でバリバリ使われてたりするのは知ってるお．使い方もまあまあ知ってるけど，あまり理解できていないお…．
やらない夫 じゃあ，まずはラプラス変換について軽く説明することにするか．
やる夫 お願いしますお．
やらない夫 ラプラス変換を使って解析する線形微分方程式として，こんなものを考えよう．
N
M


d k
d
ak ( ) y(t) =bk ( )k x(t)
dt
dt
k=0

(13.1)k=0

両辺を定数倍しても変わらないのでちょっと冗長だが，別に問題じゃないので気にしないことにする．
やる夫 前回の最後に出てきた線形差分方程式と似てるお．
やらない夫 その辺の対応関係を意識しながら話を聞いてもらえるといいかな．ともかく，こういう微分方
程式を解くにラプラス変換が有効だ．…が，その前に，微分方程式自体についての理解は大丈夫か?
やる夫 え，えーと，大丈夫かと改めて言われるとあまり自信ないお．でも全くわからないわけでもないつ
もりだお．
やらない夫 じゃあウォームアップも兼ねて，ものすごく基本的な微分方程式を普通に解いてみるか．

dy(t) = ay(t) + x(t)dt
初期条件は y(0) = 0 で，入力は x(t) = δ(t) としよう．
やる夫 デルタ関数かお．数学で微分方程式を習ったときには，あまり出て来なかった気がするお．

(13.2)

第 13 章136

ラプラス変換やらない夫 そうかも知れないな．でも今我々は線形時不変システムを考えようとしているわけだ．インパルス応答が重要(p. 85) なわけだから，入力として単位インパルスを考えるのは悪い例題ではないだろう．
やる夫 まあでも，このくらい簡単な微分方程式なら何とか解けそうだお．えーと，まずは斉次方程式，つまり x(t) = 0 の場合を考えるんだお．

dy(t) = ay(t)dt(13.3)

1dy(t) = adt
y(t)


1
dy(t) = adty(t)(13.4)(13.5)

log y(t) = at + c0
y(t) = eat+c0(13.6)
c0 at=e e(13.7)= Ceat(13.8)

ただし c0 は任意定数で，C = ec0 とする，っと．
やらない夫 よくできてるじゃないか．
やる夫 で，次に入力 x(t) がある場合を考えるんだお．…あれ? どうするんだったかお．
やらない夫 ほめた途端それかよ…．この場合の定石は定数変化法だな．斉次解 y(t) = Ceat の定数 C を
関数 C(t) で置き換えたものの中から，元の非斉次方程式を満たすものを見つけるんだった．
やる夫 あー，そうか．思い出したお．

y(t) = C(t)eat(13.9)ddy(t) = C(t)eat + aC(t)eat
dt
dt(13.10)と置いて，元の方程式に代入するお．

dC(t)eat + aC(t)eat − aC(t)eat = x(t)dt(13.11)

整理して C(t) について解くと

d
C(t)eat = x(t)dtdC(t) = x(t)e−atdt
C(t) =(13.12)(13.13)x(t)e−at dt(13.14)になるお．
やらない夫 不自然なくらいにすらすら出来てるじゃないか．
やる夫 章全体の長さの都合上，ここであまり尺を使いたくないという判断らしいお．で，今の問題は x(t) =δ(t) の場合だったお．
C(t) = δ(t)e−at dt(13.15)

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章137

ラプラス変換ってことだお．だから，c1 を任意定数として
 t
C(t) = c1 +δ(τ )e−aτ dτ−∞
c1 + 1, t > 0
=
c1 ,
t<0

(13.16)(13.17)とかになるんかお．t = 0 のときの値をどうしたらいいのかわからんお．
やらない夫 t = 0 の場合は未定義ということにしておこう．t = 0 にインパルスが立っている δ(τ )e−aτ を積分するんだから，そこを跨ぐ前は 0 で，跨ぎ終わったところで e−a0 = 1 になるってことだな．
場合分けが見苦しいので，この「デルタ関数の積分」に記号を与えて

1, t > 0
u0 (t) =0, t < 0(13.18)と書くことにしよう．連続時間の単位ステップ関数と呼ばれる．慣例上 u0 (0) = 1 としている本も多いが，さっき考えた通り，t = 0 の場合は未定義だと考えることにしよう．
やる夫 未定義なのが気持ち悪いけど，それ以外は離散時間の場合の u0 [n] と似たようなもんだからわかりやすいお．制御工学とかでもよく見たお．
やらない夫 これを使うと今の結果はC(t) = c1 + u0 (t)(13.19)と表せる．u0 (t) は δ(t) の積分なんだから，式 (13.16) から直接こう変形してもいいな．
やる夫 じゃあ，それを使っていよいよ仕上げだお．y(t) = C(t)eat に代入して

y(t) = (c1 + u0 (t))eat(13.20)

で，初期値 y(0) = 0 を満たすように c1 を定めればいいので…，あれ? u0 (0) が未定義だから，定まんないお．どうすりゃいいんだお?
やらない夫 ああ，そこはちょっと難しいところだな．こう考えて欲しい．y(t) の値は最初は 0 だったもの
が，入力 δ(t) によって駆動されて変化するわけだ．だから，t = 0 で変化し始める「直前」を初期値だと考える．つまり t = 0 に左から近づく極限 limt→0− y(t) を y(t) の初期値とする．
やる夫 ふーん，まあ，y(0) が未定義なら，そうするしかない気がするお．
やらない夫 というか，一般に初期値とは t = 0 への左極限であって，たいていの場合はそれが t = 0 の値と一致する，というのが本来の考え方だろうな．まあともかく，これで計算を進められるだろう?
やる夫 えーと，初期値はlim y(t) = lim (c1 + u0 (t))eatt→0−(13.21)

t→0−= c1 ea0(13.22)= c1(13.23)で，これが 0 にならないといけないので c1 = 0 だお．結局，解はy(t) = eat u0 (t)(13.24)になるお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章138

ラプラス変換やらない夫 そういうことになるな．式 (13.2) の微分方程式で初期値 y(t) = 0，入力 x(t) = δ(t) としたときの解が式 (13.24) になるわけだ．システムとして見ると，この微分方程式で表されるシステムのイ
ンパルス応答が式 (13.24) のような指数関数になるってことだな．
やる夫 インパルス応答を求めるのも一苦労だお．

13.2

ラプラス変換による微分方程式の解法やらない夫 さて，この同じ問題をラプラス変換で解いてみよう．まず確認だが，ラプラス変換ってどういうものだった?
やる夫 えーと，時間 t の関数 x(t) を ∞X(s) =
x(t)e−st dt(13.25)0として複素数 s の関数 X(s) に変換するんだったお．
やらない夫 そうだな．式 (13.25) の変換のことをラプラス変換と呼ぶ．同時に，X(s) のことも「x(t) のラプラス変換」と呼ぶ．この辺はフーリエ変換とかと同じだな．この関係をX(s) = L[x(t)](13.26)

L

x(t) −→ X(s)(13.27)などと表すのが一般的だ．
式 (13.2) の微分方程式を解く場合は，まず両辺をラプラス変換するんだったな．
dy(t) = L [ay(t) + δ(t)]L
dt(13.28)やる夫 真面目にやろうと思うと面倒だけど，実際にはこの積分を真面目に計算することってほとんどないんだお．だいたいはラプラス変換表を見ながら機械的に置き換えていくだけで済んじゃうお．
やらない夫 ああ，その通りだ．当面必要なものだけ抜粋した表を書いておこうか．
時間領域

s 領域

単位インパルス

δ(t)

指数関数

eat u0 (t)

線形性

af (t) + bg(t)
d
f (t)
dt
 ∞
h(t) ∗ x(t) =h(τ )x(t − τ )dτ1
1
s−a
aF (s) + bG(s)

微分
たたみこみ

sF (s) − f (0)H(s)X(s)0

やる夫 じゃあ置き換えていきますお．まず線形性から
dy(t) = aL [y(t)] + L [δ(t)]L
dt(13.29)微分と単位インパルスを置き換えて

sY (s) = aY (s) + 1(13.30)になるお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章139

ラプラス変換やらない夫 これで，y(t) に関する微分方程式を，Y (s) に関する代数方程式に置き換えられたわけだ．
やる夫 で，これを Y (s) について解いて，(s − a)Y (s) = 1(13.31)

1
Y (s) =s−a(13.32)

またラプラス変換表を見ながら，時間領域に逆変換してやればいいんだお．

y(t) = eat u0 (t)(13.33)

終わりだお．式 (13.24) とも一致してるお．
やらない夫 というわけで，微分方程式をまともに解く場合に比べて，ラプラス変換を使うとずっと簡単に解けるわけだ．
やる夫 比べものにならないお．ほとんどチートだお．でも，正直どうしてこんな風にうまくいくのか，さっぱり理解できてないお．結局，ラプラス変換って何なんだお?

13.3

ラプラス変換とは何なのかやらない夫 じゃあ基本的なところから説明していこう．話の出発点はフーリエ変換だ．
 ∞F [x(t)] =x(t)e−jΩt dt(13.34)−∞

やる夫 この変換で x(t) を周波数成分に分解できるわけだお．
やらない夫 ところが，フーリエ変換が収束しない関数ってのが結構多いんという問題があるんだな．既に話に出てきたものの中でも，定数関数とか，sin とか cos とかが収束しなかった．基本的に，時刻 tを正の無限大とか負の無限大にしたときに 0 に近づかないような関数は収束させようがない．
やる夫 収束しなくても，定数関数とか sin とか cos なんかは，デルタ関数を使えばフーリエ変換を考える
ことができたお．
やらない夫 まあそうなんだが，しかし，例えば実指数関数 eat なんかだと，時刻を正または負の無限大にしたときに 0 に近づかないどころか急激に増加していってしまうので，デルタ関数で表すことすらできないんだな．さっき見たとおり，eat なんてのはごく基本的な微分方程式の解として出てくるものなので，とても重要だ．これを考えることができないというのは，実用上ちょっと困る．
やる夫 あー，まあ確かにその通りだお．
やらない夫 この問題を何とかしようというのがラプラス変換の一つの目的だ．導入する対策は 2 つだ．まずは元の関数 x(t) に適当な実指数関数 e−ct をかけてやる．
やる夫 かけて何の意味があるんだお?
やらない夫 例えばさっきの x(t) = eat の場合を考えようか．a > 0 だったとする．この場合 t → ∞ でx(t) → ∞ で，フーリエ変換が収束しない．そこで代わりに x(t)e−ct = e(a−c)t を考える．
やる夫 かけてもやっぱり指数関数だお．
やらない夫 指数関数だが，今 c は自由に決められる定数だ．これを a − c < 0 になるように十分に大きく取ってやろう．そうすると，t → ∞ で x(t)e−ct → 0 にすることができる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章140

ラプラス変換e-ct

x(t) = eatx(t) e-ct = e(a – c)tt

0

やる夫 んー，そうだけど，そうすると逆に t → −∞ のときに発散しちゃうお．やっぱりフーリエ変換できないお．
やらない夫 いいところに気づいた．だから二つ目の対策が必要だ．どうするかというと，単位ステップ関
数 u0 (t) をかけておく．つまり x(t)u0 (t)e−ct のフーリエ変換を考えるということだ．

e-ct

x(t) = eat

u0(t)

-ct

x(t) u0(t) e = e(a – c)t u0(t)0t

やる夫 えーと，時刻が負のところをばっさり捨ててしまっているわけだお．確かにそうすれば発散するしないの問題は発生しないけど，元の x(t) の情報は一部失われているお．それでいいのかお?
やらない夫 それでいいかどうかは扱おうとしている問題によるな．微分方程式の初期値問題を考えている
限りは，初期時刻より前はどうでもいいわけで，「それでいい」と言ってしまってもよいだろう．
やる夫 なるほど，初期時刻以降だけを考えるような場合ならそれでよさそうだお．
やらない夫 これら 2 つの対策を x(t) に施してから，フーリエ変換するわけだ．
 ∞F [x(t)u0 (t)e−ct ] =x(t)u0 (t)e−ct e−jΩt dt
−∞
 ∞

=

x(t)e−(c+jΩ)t dt(13.35)(13.36)0

ここで，複素数 c + jΩ を新しい変数 s と書いたのが式 (13.25) のラプラス変換だ．
やる夫 ラプラス変換自体は，時間 t の関数から複素数 s の関数への変換なわけだけど，やってることをよくよく考えると周波数 Ω の関数への変換なんだお．
やらない夫 定数 c を固定して考えるとそうなるな．複素平面上の虚軸に平行な直線 Re{s} = c 上の複素数値関数に移されると考えることができる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章141

ラプラス変換

Im
Ω

0

t

c

Re

Re{s} = c
一般には c の選び方に自由度があるから，移される先の直線はある程度自由に選ぶことができる．

Im

Re

0

こうして可能な限り c を動かしてやった全体を考えた結果，X(s) = X(c + jΩ) が複素平面上で定義されるようになって，X(s) を複素数 s の関数と捉えられることになるわけだ．
変換された変数 s の側の領域を，フーリエ変換同様に周波数領域と呼ぶ場合もあるし，複素領域とかs 領域とか呼ぶ場合もある．ただし，c はラプラス変換が収束するようにとってやる必要があるので，
s が常に複素平面全体を動けるとは限らない点には注意が必要だ．
やる夫 c は，x(t)e−ct が t → ∞ で収束できるように十分大きくないといけなかったんだお．
やらない夫 そうだな．だから c は一般に，x(t) によって決まる定数より大きくなくてはならないわけだ．

s = c + jΩ で考えると，虚軸に平行なある直線より右側にいなくてはならないことになる．X(s) はその範囲でだけ収束するわけで，この範囲をラプラス変換の収束範囲と呼んだりする．

Im

0

c

Re

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章142

ラプラス変換やる夫 ラプラス変換表 (p. 138) にある δ(t) とか eat とか，実際にそうやって計算できるのかお．
やらない夫 やってみようか．デルタ関数は簡単だ．
 ∞L[δ(t)] =δ(t)e−st dt=e(13.37)0−s0(13.38)=1(13.39)やる夫 んー，積分範囲が 0 から ∞ だけど，デルタ関数のインパルスの部分を含むと考えていいのかお?
やらない夫 ああ，そう考えるのが標準的だ．0 から ∞ まで積分するというのは 0 を含むかどうか曖昧だが，積分される関数の時刻 0 での値が有限なら，別に含んでも含まなくても結果は変わらない．面積に影響しないからな．問題は今のように無限大が出てくる場合だが，含まないとするとインパルス応
答が常に 0 になってしまう．だから，積分範囲には 0 を含むと考えるのが合理的だ．このことを明確にしたいときは， ∞X(s) =
x(t)e−st dt(13.40)0−と表したりするな．
やる夫 0 よりちょっとだけマイナス側から積分するってことかお．まあ，そういう約束だと思うことにしますお．
やらない夫 じゃあ次は eat だ．計算してみてくれ．
やる夫 えーと，公式につっこむお．
 ∞L[eat ] =eat e−st dt0 ∞=e(a−s)t dt0∞
1 (a−s)t
=
e
a−s
0
1
=
lim e(a−s)t − 1
a − s t→∞(13.41)(13.42)(13.43)(13.44)

うーん，lim のところはどうすればいいんだお? a − s が正か負かによって発散したり収束したりするお．
やらない夫 おいおい，そこがさっきまでえんえんと説明してきたところだぞ．その部分が収束できるように，s = c + jΩ の c を十分に大きく取るって話だったはずだ．
やる夫 あー，そうか，つまり Re{a − s} < 0 になるように取ることで，

1(0 − 1)
a−s
1
=
s−a

L[eat ] =(13.45)(13.46)ってことだお．ラプラス変換表 (p. 138) の答えが出てきたお．
やらない夫 そうだな．この場合の収束範囲は Re{s} > Re{a} ということになる．こういう風に，積分を計算するときに収束させられるように自由にパラメータ c を取れるってのがミソなわけだな．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章143

ラプラス変換やる夫 しっくり来た気がするお．えーと，ラプラス変換はわかったけど，ラプラス逆変換の方はどうなるんだお?
やらない夫 やっぱりフーリエ逆変換から考えるのがいいだろうな．完全にラプラス変換になる切る前の，
まだフーリエ変換らしさが残っている式 (13.35) に基づいて考えると，ラプラス変換ってのはつまり，X(c + jΩ) = F [x(t)u0 (t)e−ct ](13.47)という計算をしているわけだな．これに対応するフーリエ逆変換を考えると，

x(t)u0 (t)e−ct = F −1 [X(c + jΩ)]
 ∞1X(c + jΩ)ejΩt dΩ
=
2π −∞(13.48)(13.49)になる．
やる夫 フーリエ逆変換の公式通りだお．
やらない夫 左辺の e−ct を右辺に移そう．
 ∞1x(t)u0 (t) =X(c + jΩ)ect ejΩt dΩ
2π −∞
 ∞
1
=
X(c + jΩ)e(c+jΩ)t dΩ
2π −∞(13.50)(13.51)

ここで右辺の積分変数 Ω を s に置換すればラプラス逆変換の公式が得られる．
やる夫 えーと，s = c + jΩ だから ds = jdΩ だお．置換すると

x(t)u0 (t) =12πj

 c+j∞

X(s)est ds(13.52)c−j∞になるお．何か積分範囲が気持ち悪いけどこれでいいのかお?
やらない夫 いいだろう．虚軸に平行な直線 Re{s} = c に沿って積分することになるな．
やる夫 んー，結局左辺の u0 (t) はついたままなのかお? x(t) = · · · ってするわけにはいかないのかお?
やらない夫 ああ，こうならざるを得ない．ラプラス変換する時点で u0 (t) をかけて時刻が負のところの情報は捨ててしまったわけだ．そこから s 領域に移って，また時間領域に戻ってきても，捨てた情報は取り戻せない．t < 0 の部分がすべて 0 になった関数に戻るだけだ．
やる夫 なるほど．まあ初期時刻より前のことは考えないわけだから，別にそれで問題ないっちゃないんだお．
やらない夫 さらに思い切って「初期時刻より前のことはハナから気にしない」という立場で，x(t)u0 (t) のことを x(t) と書いてしまっている本もあるので注意して欲しい．ラプラス変換表もそうで，例えば
L

L

1
1
eat u0 (t) −→ s−aの代わりに eat −→ s−aと書かれている場合がある．というかむしろその方が多い

かもな．読むときに頭の中で「t < 0 の範囲は捨て去られている」と補ってやることが重要だ．
1
やる夫 しかしちょっと不思議だお．例えば今の例だと s−aを式 (13.52) の右辺の通りに積分しただけで，

t = 0 で不連続な eat u0 (t) が出てくるってことかお?
やらない夫 ああ，出てくる．実際の計算は複素関数論の知識を使ってやることになる．深入りはしないが，

t = 0 を境界として場合分けして計算することになるはずだ．その結果 t < 0 の範囲では答えとして0 が出てくる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章144

ラプラス変換やる夫 ふーん，まあ，でもこの逆変換の公式を直接使うことはほとんどないんだお? だいたいラプラス変
換表を見てしまえば済んでしまうんだお?
やらない夫 実用上そういうケースが多いのは認めるが，最終手段としてちゃんと公式から直接計算できるように訓練しておくのは重要だと思うぞ．
それからもう一つ，後々のために，このラプラス逆変換の公式を直観的に理解しておいてもらいたいと思う．
やる夫 んー，どういうことだお?
やらない夫 フーリエ逆変換の公式は，時間関数 x(t) が角周波数 Ω の成分 ejΩt の重ね合わせで表されることを意味していただろ．
やる夫 そうだったお．幾何学的にとらえると (p. 102) ，{ejΩt }Ω∈R の各方向にベクトル x(t) を分解しているんだお．
やらない夫 同じように，ラプラス逆変換は，時間関数 x(t)u0 (t) をいろいろな角周波数 Ω の e(c+jΩ)t の重ね合わせで表しているというイメージを持っておいて欲しい．重ね合わせるときの係数がラプラス変
換 X(c + jΩ) = X(s) だ．
やる夫 んー，まあフーリエ逆変換とラプラス逆変換の式を見比べると，確かにそういう解釈はできそうだ
お．えーと，てことはこれも正規直交展開みたいなもんなのかお?
やらない夫 厳密に議論しようとすると，{e(c+jΩ)t }Ω∈R の各要素間で内積を考えるのが難しいので，あまりそういう考え方をすることはないようだな．だから {e(c+jΩ)t }Ω∈R で直接展開するのではなく，今やったようにいったんフーリエ変換を経由して定式化するのが普通のようだ．しかし，ちょっと厳密
性には目をつぶって，そういう見方もしておこう．
やる夫 んーと，フーリエ変換の場合，{ejΩt }Ω∈R ってのは角周波数の違う単振動の集合で，それらの重ね合わせで信号を表すってことでイメージできてたお．

+

+

=

+

+

L
でも，{e(c+jΩ)t }Ω∈R の場合，どういうイメージを持てばいいのかお?
やらない夫 e(c+jΩ)t = ect ejΩt になるだろ? だから，角周波数 Ω で振動しながら，その振幅が ect で変化していくような信号を分解要素と考えればいい．c はラプラス変換が収束するように十分に大きく取るんだったから，まあ c > 0 の適当な定数を想像してもらえればいいかな．
やる夫 えーと，てことは振幅が指数関数的に大きくなっていく振動ってことになるお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章145

ラプラス変換やらない夫 そうだな．振幅の変化のしかたは ect で共通で，ただし振動の角周波数 Ω が異なる無数の信号の重ねあわせで元の信号を表そうってことになるな．

+

+

=

+

+

L

やる夫 そんなややこしいものを重ね合わせて何が嬉しいんだお?
やらない夫 そもそもラプラス変換を何のために導入したんだったかというと，フーリエ変換が収束しない場合への対策だったわけだ．t → ∞ で 0 に近づかないような信号を，振幅一定の単振動の重ねあわせで表現しようと思うと，重ね合わせ係数として無限大が必要になってしまう，ってのがフーリエ変換が収束しない状況だ．
じゃあ，最初から t → ∞ で発散するような振動を重ね合わせの構成要素としておけば，重ね合わせ
係数を有限で抑えることができるようになるんじゃないか．これがラプラス変換の発想だな．
やる夫 ちょっと想像しにくいけど，言ってることはわかるお．
やらない夫 このような重ね合わせの考え方を使って，たたみこみと積の関係がラプラス変換でも成り立つ
ことを見ておこう．フーリエ変換でたたみこみと積の関係を導いたとき (p. 90) は，単振動 ejΩt を入力して応答を見たんだった．
やる夫 今の流れで考えると，ラプラス変換の場合はやっぱり est = e(c+jΩ)t を入れてみるのかお?
やらない夫 いい推測だ．インパルス応答 h(t) を持つ因果的なシステムへ x(t) = est を入力すると
 ∞y(t) =h(τ )x(t − τ )dτ(13.53)0 ∞h(τ )es(t−τ ) dτ
(13.54)
=
0
 ∞
= est
h(τ )e−sτ dτ(13.55)0= H(s)est(13.56)となる．つまり，振幅が変化しながら振動する est を入れると，同じ est が H(s) 倍されて出てくる
わけだ．
やる夫 えーと，だから，任意の入力 x(t) を分解して考えると，各 est の成分 X(s) が H(s) 倍されて出力されるってことだお．結局フーリエ変換と同じく，時間領域で h(t) をたたみこむと，周波数成分がH(s) 倍になるんだお．
やらない夫 まあフーリエ変換と同じ関係なので覚えるのは簡単だろう．H(s) は伝達関数と呼ばれるんだが，これについてはもう少し後で詳しく見ることにしよう．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章ラプラス変換146

13.4

なぜラプラス変換で微分方程式が解けるのかやる夫 ラプラス変換がどういうものかってことはわかってきたけど，それでも最初の疑問が消えないお．
どうして微分方程式があんなに簡単に解けるんだお?
やらない夫 ええと，微分方程式を s 領域に移すと代数方程式になるから簡単に解けて，それを逆変換すれば答えが求まる，っていうことはわかった上で聞いてるんだな?
やる夫 そうだお，それはわかってるお．聞きたいのは，どうしてそんな風にうまくいくのかってことだお．

e−ct をかけてフーリエ変換するだけで，なんでこんな手品みたいことが起きるんだお?
やらない夫 なかなか深い質問だな．一言では説明できないので，ゆっくり紐解いていこう．まず最初に注意しておいてもらいたいんだが，微分方程式が簡単に解けるのは別にラプラス変換の専売特許じゃない．フーリエ変換でも可能だ．つまり e−ct をかけていることは本質的にはあまり関係ない．
やる夫 あ，あれ，そうなのかお?
やらない夫 フーリエ変換で周波数領域に移すと微分方程式が代数方程式になって簡単に解ける，というのが本質であって，e−ct をかけているのは，少なくとも微分方程式を解くという作業に関しては，フーリエ変換が収束しない場合への対策でしかない．まずこれを説明しよう．
出発点は式 (13.1) の微分方程式だ．
N
M


d k
d
ak ( ) y(t) =bk ( )k
dt
dt
k=0

x(t)

(13.1)k=0

この y(t)，x(t) をフーリエ逆変換で置き換えてみよう．
やる夫 えーと，つまり周波数成分に分解してみるってことだお．y(t)，x(t) のフーリエ変換を Y (Ω)，X(Ω)
として，

1
2π

N

k=0

d
ak ( )kdt ∞Y (Ω)e

jΩt

−∞

1
dΩ =
2π

M

k=0

bk (

d k
)
dt

 ∞

X(Ω)ejΩt dΩ

(13.57)−∞になるお．
やらない夫 ここで微分を総和する演算と積分演算を交換しよう．総和は有限個なので問題なく交換できる．
微分と積分の交換は本当は慎重にやらないとまずいが，まあ気にしないことにしよう．
 ∞ 
 ∞ 
N
M
1
d k
1
d
ak ( ) Y (Ω)ejΩt dΩ =bk ( )k X(Ω)ejΩt dΩ
2π −∞
dt
2π −∞
dt
k=0

(13.58)k=0

総和の各項の微分は Y (Ω)ejΩt に適用されるわけだが，ここで Y (Ω) や X(Ω) は t を含まないことに注意して欲しい．つまり

(

d k
d
) Y (Ω)ejΩt = Y (Ω)( )k ejΩtdt
dt
= (jΩ)k Y (Ω)ejΩt(13.59)(13.60)と計算できる．元の方程式に代入すると
 ∞ 
 ∞ 
N
M
1
1
k
jΩt
ak (jΩ) Y (Ω) e dΩ =bk (jΩ)k
2π −∞
2π −∞
k=0


X(Ω) ejΩt dΩ

(13.61)k=0ってことになる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章147

ラプラス変換やる夫 あっ，微分がなくなったお．
やらない夫 この両辺をよく見てみると，大カッコ [ ] で囲まれた部分は Ω の関数であって，その逆フーリ
エ変換を計算していることになっている．
やる夫 あー，そうなってるお．つまり，両辺の大カッコの中の式の逆フーリエ変換同士が等しいってことだお．
やらない夫 逆フーリエ変換して等しくなるってことは，大カッコの中身同士も等しいってことだ．
N
M


k
ak (jΩ) Y (Ω) =bk (jΩ)k X(Ω)(13.62)k=0

k=0

これが，任意の Ω について成り立つということだな．
やる夫 お，おお?
やらない夫 もうこれはただの代数方程式なので，簡単に解くことができる．

Y (Ω) =

Mk
k=0 bk (jΩ)X(Ω)
Nkk=0 ak (jΩ)

(13.63)

右辺のフーリエ逆変換を計算すれば，それは左辺のフーリエ逆変換，すなわち y(t) と一致する．y(t)が得られたわけだ．
y(t) = F

−1



M
k
k=0 bk (jΩ)X(Ω)
Nkk=0 ak (jΩ)

(13.64)

やる夫 あ，いや，えーと，頭の整理に時間がかかりそうだお．
やらない夫 数式だけを追っているとわからなくなるかもな．幾何学的に考えてみようか．
何度か話した通り (p. 102) ，信号 x(t) をフーリエ変換するってのは， x(t) をベクトルとみなして周
波数 Ω ごとの基底ベクトル ejΩt の方向に成分分解することだった．

X(Ω1)ejΩ1t

x(t)

L
ejΩ1t
ejΩ2t
L

X(Ω2)ejΩ2t

やる夫 そうだったお．
1
やらない夫 分解された各成分は，ベクトル ejΩt が 2π
X(Ω) 倍されたものになる．説明上，このベクトル11
を「方向が ejΩt で，長さが 2π
X(Ω) 倍されたベクトル」と呼ぶことにしよう．ただし以降では， 2π倍は邪魔なので省略して考える．どうせ常に方程式の両辺につくから，無くても同じだ．
やる夫 普通の幾何学で，方向が e で長さが a 倍されたベクトル ae って言っているようなもんだお．
やらない夫 x(t) 自体を微分する代わりに，各成分を個別に微分してから重ね合わせることを考えよう．ejΩtは微分すると jΩejΩt になる．つまり，分解された各方向ベクトルは，微分しても方向は変わらず長さが jΩ 倍になるだけだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章148

ラプラス変換jΩ1X(Ω1)ejΩ1t

d/dt x(t)

L
ejΩ1t
ejΩ2t
L

jΩ2X(Ω2)ejΩ2t

やる夫 えーと? あ，そうか．今は t の関数をベクトルとみなしているので，jΩ は単なるスカラなんだお．
各方向のベクトルがそのまま伸縮することになるお．伸縮率は jΩ 倍だから，周波数 Ω によって変わるけど，ともかく方向は変わらないお．
やらない夫 ということを踏まえて元の微分方程式を考えよう．ベクトル x(t) や y(t) を適当な回数微分して，定数倍して，それらを足し合わせたもの同士が一致することを表しているわけだ．

x(t) や y(t) を各方向に分解してからこの一連の操作をすることを考えると，この操作によってやっぱり各成分の方向は変わらずに伸縮だけすることになる．操作後のベクトルが両辺で一致するということは，操作後の各方向の長さ同士も一致するということだ．これがあらゆる方向 ejΩt についていえる．その関係が代数方程式 (13.62) で表されている．
やる夫 つまり，微分方程式 (13.1) は「ベクトル同士が等しい」という関係であって，これを「ベクトルの成分同士が等しい」という関係として書き直したのが代数方程式 (13.62) だってことかお．
やらない夫 そういうことだ．その際，成分分解を考えるときの基底として，微分しても方向が変わらない
複素指数関数を採用したのがミソになっている．線形代数の言葉でいうと，微分に関する固有ベクト
ルを基底ベクトルにしたわけだな．固有値が jΩ になる．
やる夫 あ，いや，そんな急に線形代数の言葉でいわれても困るお．
やらない夫 まあ，固有ベクトル云々はちょっと頭の片隅に入れておいてくれるだけでいい．ともかくベク
トルの成分同士が等しいという関係から Ω についての代数的な恒等式が得られたわけだ．微分された信号を，微分演算を使わずに表示することができる．
やる夫 で，それを Y (Ω) について解いて，逆フーリエ変換するんだお．
やらない夫 そうだな．もうその意味も明白だろう．Y (Ω) について解いた方程式 (13.63) の両辺を互いに等しいベクトルの成分だと考える．右辺のような成分から構成されるベクトルを構築するわけと，それが y(t)，つまり微分方程式の解になる．
やる夫 結局，フーリエ変換だけで話が完結しちゃったお．ラプラス変換はどこに行ったのかお?
やらない夫 ラプラス変換でも話は全く同じだ．フーリエ変換が収束しなくてもラプラス変換なら収束する
場合があるので，そちらの方が使える範囲が広いわけだ．
同じ微分方程式を考えて，今度は x(t)，y(t) のラプラス変換を X(s)，Y (s) と書くことにしよう．x(t)，y(t) を逆ラプラス変換で置き換えて同様に考えていくと，jΩ のところが c + jΩ になるだけで後は全く同様の議論ができる．つまり，
N
M


k
ak (c + jΩ) Y (s) =bk (c + jΩ)k
k=0

X(s)

(13.65)k=0

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章149

ラプラス変換

すなわち
N


ak s

k

Y (s) =k=0

M
b k skX(s)(13.66)k=0という代数方程式が得られるってことだな．
やる夫 あー確かにこれは，元の微分方程式をラプラス変換表を見ながら書き換えたものになってるお．そうか，「時間領域で微分すること」が「s 領域で s をかけること」に対応するのは，est の肩の s が微分で前に来るからだったんだお．
やらない夫 幾何学的にもフーリエ変換の場合と同じように考えればよいだろう．フーリエ変換の場合は{ejΩt }Ω∈R の各方向に分解して考えたが，ラプラス変換の場合は {e(c+jΩ)t }Ω∈R の各方向に分解して考えるわけだな．

13.5

なぜ c + jΩ を s にするのか

やる夫 うーん，微分方程式が解ける理由はわかったけど，新たな謎が出てきたお．結局，ラプラス変換は
単にフーリエ変換の収束性の問題を緩和するだけのものだってことなんだお? だったら，どうしてわ
ざわざ s = c + jΩ なんて変数の置き換えをして話をややこしくするのかわからんお．
やらない夫 それにはちゃんと理由がある．その理由を理解すれば，ラプラス変換が「単にフーリエ変換の収束性の問題を緩和するだけ」のものではないこともわかってもらえるはずだ．
やる夫 あっ，そうなのかお．それは教えて欲しいお．
やらない夫 さっきは，s 領域に移してから代数的操作をして，それをまた時間領域に戻すことで微分方程式を解くことを考えた．だが，実は最後の「時間領域に戻す」ところをやらずに s 領域のままでも，
元の微分方程式について多くのことがわかる．
やる夫 えっと，どういうことかお．
やらない夫 制御工学とかでは実際によく出てくる話だ．式 (13.66) をもう少し s 領域のままで観察してみよう．

Y (s) =

Mk
k=0 bk sX(s)Nk
k=0 ak s(13.67)の分数の部分を H(s) と呼ぶことにする．つまりH(s) =

Mk
k=0 bk sNk
k=0 ak s(13.68)ってことだ．そうするとY (s) = H(s)X(s)(13.69)と書ける．
やる夫 出力 Y (s) は入力 X(s) の H(s) 倍だってことだお．
やらない夫 時間領域では y(t) は x(t) の何倍とか，そういう安直なことは全く言えないわけだが，s 領域
ではそのように見ることができるということだ．H(s) を，このシステムの伝達関数と呼ぶ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章150

ラプラス変換やる夫 ああ，制御工学で習ったお．
やらない夫 伝達関数が何者かをもう少し追究しよう．H(s) と X(s) の積が Y (s) になるわけだが，これは時間領域だとどういう関係を表している?
やる夫 えーと，たたみこみと積の関係 (p. 145) から

y(t) = h(t) ∗ x(t)(13.70)ってことだお．入力に h(t) をたたみこむと出力が計算できるってことなので，h(t) はこのシステムのインパルス応答だってことになるお．
やらない夫 その通り．つまり，伝達関数とはインパルス応答のラプラス変換であるということだ．これも制御工学で習ったはずの重要な事項だ．
やる夫 んー，あー，確かにそうだった気がするお．
やらない夫 別の見方として，x(t) = δ(t) を入力に取ったとしよう．s 領域では Y (s) = H(s) · 1 = H(s)だ．単位インパルス δ(t) を入力したときの出力が h(t) そのものだってことがわかるだろう．
やる夫 あ，そっちの方がわかりやすいお．
やらない夫 具体例でもう少し考えてみよう．

ÿ(t) + 3ẏ(t) + 2y(t) = x(t)(13.71)dという微分方程式を考えよう． dt
をいちいち書くのが面倒なので，慣例通り y(t) の時間微分，2 階

時間微分…を ẏ(t)，ÿ(t) …と書くことにしよう．初期値は y(0) = ẏ(0) = 0 とする．ラプラス変換して Y (s) について解いてみてくれ．
やる夫 簡単だお．時間微分を s 倍で置き換えて

s2 Y (s) + 3sY (s) + 2Y (s) = X(s)(13.72)2(s + 3s + 2)Y (s) = X(s)Y (s) =

(13.73)1X(s)s2 + 3s + 2(13.74)になるお．
1
やらない夫 そうだな． s2 +3s+2の部分が伝達関数だ．これをラプラス逆変換すると，インパルス応答が得られる．
やる夫 えーと，じゃあラプラス変換表 (p. 138) を見て…，って，こんなの表にないお．
やらない夫 まあよくあることだな．どうするんだった?
やる夫 そっか，部分分数展開するんだったお．

H(s) =

1s2 + 3s + 2

1(s + 2)(s + 1)
11=−s+1 s+2=(13.75)(13.76)(13.77)

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章151

ラプラス変換L

1
こうすれば，変換表 (p. 138) の eat u0 (t) −→ s−a
を使って

L−1




1
1
−
= (e−t − e−2t )u0 (t)s+1 s+2(13.78)って逆変換できるお．これがインパルス応答だお．
やらない夫 そうだな．2 つの実指数関数を足し合わせた応答になるわけだ．
さて，今，ラプラス逆変換で時間領域に戻してもらったわけだが，戻さなくても，部分分数展開できた時点でインパルス応答の挙動はもうわかったようなものだろう?
1
やる夫 まあ，そうだお． s−aが指数関数になるってわかってるわけだから，後は実際に書き下すかどうかだけの問題だお．
1
やらない夫 さらに遡って，部分分数展開する前の時点，つまり (s+2)(s+1)
まで計算した時点だとどうだ

ろう．
やる夫 えーっと…，部分的にはわかるお．少なくとも e−2t と e−t の線形結合になることだけはわかりそうだお．
やらない夫 ああ，今の場合，「分母 = 0」とした方程式の解の s = −2, −1 から，e−2t と e−t が出てくることがわかるわけだな．それがわかるだけで，いろいろと重要な情報がつかめる．つまり，インパルス
応答は時間とともに発散せず，振動的な挙動もしないってことだ．
同じように，「分母 = 0」の解として例えば s = 3 が出て来たとすると，インパルス応答は e3t を含むので発散すると判断できるだろう．
複素数解が出て来たらどうなる?
やる夫 えーと，例えば s = −1 + 2j が解だとしたら e(−1+2j)t = e−t ej2t がインパルス応答に含まれるので，角周波数 2 [rad/s] で振動しながら減衰していく成分が含まれるってことだお．…んー，複素指数関数だから，螺旋を描きながら振動するわけだお．そんな物理現象なんてあるかお?
やらない夫 それは問題ない．元の微分方程式が実際の物理現象を表しているものなら，係数は実数になるだろう．伝達関数の分母多項式も実係数になる．とういことは，複素数解は必ず共役なものとペアで出てくるわけだ．今の場合なら，e(−1+2j)t と一緒に e(−1−2j)t も現れるので，虚数部は互いにキャンセルされて，ちゃんと実数値の，振動しながら減衰する応答が出てくる．
やる夫 なるほど，安心したお．
やらない夫 まあともかくこれで，時間領域に戻さなくてもいろいろな情報が把握できることがわかっただ
ろう．
やる夫 実際にラプラス逆変換までしなくても，「分母 = 0」の解が重要な情報を握っているってことだお．
やらない夫 重要なので，やっぱり名前がついている．伝達関数の分母 = 0 という方程式は特性方程式と呼
ばれて，その解を，そのシステムの極，あるいは伝達関数の極という．伝達関数が無限大に発散する点だな．

s = a1 が極のとき，インパルス応答が ea1 t という要素を含むことになる．正確には，分母 = 0 が重解を持つときはちょっと話が違うのだがその場合も大勢は変わらないので (p. 213) 置いておこう．a1の実部の正負によって発散/収束が決まるし，虚部によって振動の周波数が決まってくる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章152

ラプラス変換やる夫 ああー，そういえば制御工学で，すべての極の実部が負だったら安定，とか習ったけど，そういうことなのかお．すべての極の実部が負だったら，確かにインパルス応答に含まれる指数関数はすべて
時間とともに収束するようになるお．よく意味もわからず丸暗記してたお…．
やらない夫 だから，複素平面で極がどこに配置されているかという情報はとても重要だ．それがシステムの挙動を如実に表しているわけだ．
やる夫 んー，あれ? でもちょっとおかしくないかお?
やらない夫 何がだ?
1
やる夫 例えばさっきの h(t) = (e−t − e−2t )u0 (t) だお．ラプラス変換して H(s) = (s+2)(s+1)になるわけだ

けど，その収束範囲は，えーと，Re{s} > −1 になると思うお．そうじゃないとラプラス変換の積分が収束しないお．
やらない夫 そうだな．式 (13.41) を計算した辺りで考えた通りだ．
やる夫 つまり H(s) は Re{s} > −1 の範囲でしか意味がないはずで，それなのに極が s = −2 とか s = −1
とかにあるから云々って議論するのっておかしくないかお?

Im

-2 -1

Re

やらない夫 お前たまに鋭い質問するよな．その指摘はもっともだが，結論から言うと気にする必要はない．
∞H(s) = 0 h(t)e−st dt という積分は，確かに収束範囲内でしか存在しない．しかし，収束範囲内で存1
在する H(s) の具体的な数式表現，例えば H(s) = (s+2)(s+1)という式がいったん得られてしまえば，その定義域を複素平面全体に拡張して考えることは可能だ．極の配置を考えるときには，この拡張された H(s) を考えている．
やる夫 んー，そんな勝手に拡張しちゃっていいのかお?
L

1
やらない夫 例えば eat u0 (t) −→ s−aという関係を考えよう．ラプラス変換の公式の積分を計算した結果と1
1
して s−aが得られるのは，Re{s} > a の範囲だけだ．しかし， s−aの a と，eat の a が対応しているという事実は，収束範囲とは何の関係もない．
やる夫 そっか，…てことは，ラプラス変換の計算をするときは収束範囲を気にする必要があるけど，いったん変換しちゃったらもう気にしなくていいのかお?
やらない夫 そうとも限らないな．例えばラプラス逆変換するときは積分経路を収束範囲内に取らないとい1
けない．そうじゃなくてさっきの場合は， s−aという「式」から a がわかることだけが重要であって，

s = a において実際にラプラス変換を評価しているわけではない．そこが大きな違いだな．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章153

ラプラス変換やる夫 うーん，なかなかややこしいお．
やらない夫 いろいろ気にし始めるとその辺は難しいんだが，ともかく，ラプラス変換後の s の式の形だけから，システムの時間領域の挙動が把握できるということを理解して欲しい．そしてそれは，Ω じゃなくて s = c + jΩ という新しい変数で書き換えたからこそ可能になったことだ．
やる夫 あー，確かに，c + jΩ のままで「分母 = 0」を Ω について解いても，わけわからんまま終わりそうだお．
やらない夫 ラプラス変換を部分分数展開することの意味を，もうちょっとだけ一般化した土俵で考えておこう．微分方程式から求めた伝達関数の一般形
Mkk=0 bk sNk
k=0 ak s

H(s) =(13.68)のうち，N > M で，分母 = 0 が重解を持たない場合を考えよう．これらの条件があると，部分分数
展開が簡単にできて話がしやすい．この条件を満たさない場合については，付録 (p. 213) で扱うことにする．
やる夫 えーと，分母 = 0 の解を λi (i = 1, · · · , N ) と書くと，適当な定数 wi (i = 1, · · · , N ) を使ってH(s) =Niwis − λi(13.79)って展開できるお．重解がある場合はもうちょっと面倒だった気がするけど，この場合は簡単だお．
やらない夫 つまり，H(s) という伝達関数を Hi (s) = 1/(s − λi ) という N 個の伝達関数に並列分解することになる．同じ入力 X(s) をこれらのサブシステムに入れて，各出力 Yi (s) に重み wi をかけて足し合わせたものが出力 Y (s) だ．

H1(s)
X(s)

H2(s)

Y1(s)
Y2(s)

w2

Y(s)

L

L
HN(s)

w1

YN(s)

wN

やる夫 まあ見たまんまだお．
やらない夫 各サブシステムの入出力関係を式で表すと

Yi (s) =1X(s)s − λi(13.80)すなわち

sYi (s) = λi Yi (s) + X(s)(13.81)となる．これを時間領域で表すとどうなる?
やる夫 えーと，dyi (t) = λi yi (t) + x(t)dt(13.82)になるお．んー，最初にやった例題の微分方程式 (13.2) の形だお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章154

ラプラス変換やらない夫 そう，考え得る限り最も基本的な微分方程式で表されるシステムだな．既に見た通り，そのイ
ンパルス応答は eλi t u0 (t) になる．λi の値によって，時間とともに発散したり，減衰したり，振動しながら発散あるいは減衰したりする．そういう「基本的な要素」へシステムを分解するのがラプラス変換の重要な目的だ．
フーリエ変換の場合，どんな信号でも定常的な振動に無理やり分解してしまうので，そういう減衰とか発散のような過渡的な挙動が抽出できないんだな．ラプラス変換ならそれができる．
やる夫 そっか，で，そういう分解を部分分数展開で行えたり，各基本要素の挙動を「分母 = 0」の解として得たりできるように，変数 s が導入されているってことだお．
…あれー，でも別に s = c + jΩ って定義しなくても，フーリエ変換のまま考えて s = jΩ という変数を導入したとしても，同じことはできるんじゃないかお?
やらない夫 ま，そうだな．フーリエ変換が収束する/しないを気にしないとするなら，形式的にはその通りだ．
やる夫 形式的にはってどういうことだお?
やらない夫 フーリエ変換のまま s = jΩ と置いても確かに計算上は同じ結果が出てくるが，解として純虚数以外のもの，例えば s = −3 とか s = 2 + j とかが出てきた場合の解釈ができない．
結局本質的な役割を果たしたのは，実数 Ω として，あるいは純虚数 jΩ として定義されていた周波数という概念を，複素数 s に拡張したことだといえるだろうな．
やる夫 ラプラス変換のおかげで伝達関数を基本要素に分解できるという話は何となくわかった気がするお．
でも，それはシステムのインパルス応答をラプラス変換する場合だけの話だお? 入力とか出力とかの信号をラプラス変換する場合は今の考え方は使えないのかお?
やらない夫 いや，全く同じように考えることができる．信号 x(t) というのは，インパルス応答が x(t) であるようなシステムに単位インパルス δ(t) を入力したものと考えればいい．そのシステムを分解して各サブシステムの応答を見ることが，信号 x(t) の分解に相当する．
以前も強調した (p. 89) 通り，こういう風に「信号」と「システム」を同一視できるところが，線形時不変システムの著しい特徴だ．

13.6

周波数応答と伝達関数やらない夫 伝達関数の話が出てきたついでに，周波数応答と伝達関数の関係の話をしておこう．
やる夫 えっと，インパルス応答のラプラス変換が伝達関数で，インパルス応答のフーリエ変換が周波数応答だったお．
やらない夫 ああ，そこまで気が回ればもうほとんど答えにたどり着いている．ラプラス変換で s = c + jΩと定めたわけだが，このうち特に c = 0 である場合がフーリエ変換だ．つまり，ラプラス変換をして得られた複素関数の値を虚軸に沿って拾っていくと，フーリエ変換が得られるということだな．

Im
X(jΩ)

t

Ω

0
Re
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章155

ラプラス変換

ただし，ラプラス変換は積分範囲を 0 から ∞ に取っているので，変換される時間信号が t < 0 で 0であるようなものでないと一致しないけどな．
やる夫 ということは，そういう場合はラプラス変換後の式に s = jΩ を代入すればフーリエ変換になるっ
てことかお．
やらない夫 そういうことだ．離散時間フーリエ変換の話をしたとき，一番最後に，f (t) のフーリエ変換を

F (jΩ) と書く場合がある (p. 66) と言ったのを覚えているか? これがその理由だ．
やる夫 あー，そんなこと言ってたお．F (s) の s に jΩ を代入してフーリエ変換を求めたって意味だったわ
けだお．んー，何もそんなややこしい書き方せずに，F (Ω) って書いとけばいいんじゃないかお? 文
字を書く手間も減るお．
やらない夫 厳密なことを言うと，ちょっとまずいんだ．f (t) のラプラス変換が F (s) です．同じ f (t) のフーリエ変換が F (Ω) です，と言ってしまったとき，実は前者と後者の F (·) は違う関数を表しているだろう．だから一連の議論でこれらを混用するのは，ある種の記号の濫用になっている．かといって FFourier (Ω) とか FLaplace (s) とか書かなきゃいけないのも勘弁して欲しいところだ．それと比べると，フーリエ変換を F (jΩ) と書くってのは，まあよい落としどころとは言えると思う．
やる夫 でも，今までずっと F (Ω) って書いてきたお．
やらない夫 ああ，まあ，議論の中でフーリエ変換が単独で出てくる場合はそれで問題ないし，そうでない場合も誤解の恐れがない限りは，記号の濫用をしてしまうことも割と多い．我々も臨機応変にやっていこう．
やる夫 まあ，いいお．せっかくだから角周波数 Ω1 のコサイン関数 cos(Ω1 t) の周波数応答でも求めてみるお．

ejΩ1 t + e−jΩ1 t]
2
1
1= L[ejΩ1 t ] + L[e−jΩ1 t ]
2
2
1
1
1
1
= ·
+ ·
2 s − jΩ1
2 s + jΩ1

L[cos(Ω1 t)] = L[

(13.83)(13.84)(13.85)で，s に jΩ を代入するお．

1
1
1
1
·
+ ·
2 jΩ − jΩ1
2 jΩ + jΩ1


1
1
1
=
+
2j Ω − Ω1Ω + Ω1F [cos(Ω1 t)] =(13.86)(13.87)になるお…．あれー，角周波数 Ω1 の cos だから Ω1 の周波数成分だけ出てくるかと思ったら，なん
かその周りにも周波数成分がしみ出している感じだお．これ何だお…?

-Ω1

Ω1

Ω

やらない夫 ラプラス変換の積分範囲が 0 から ∞ だってことを忘れてないか?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章156

ラプラス変換やる夫 あー，そうか，t < 0 の部分は捨てられるんだお．だから純粋に cos 関数のスペクトルが得られる
わけじゃないんだお．
やらない夫 その辺はちょっと注意しないといけないところだな．あと，ラプラス変換は収束するけど，フーリエ変換は収束しないような信号もたくさんあるわけで，単純に s = jΩ を代入してよいかはよく考えないといけない．
やる夫 あー，そういう問題もあるのかお．
やらない夫 具体的には s = jΩ に対応する部分，つまり s 領域の虚軸が収束範囲に含まれている場合でな
いとまずい．まあそういう意味では，今やった cos 関数は虚軸上の s = ±jΩ1 で発散しているので，ちょっとグレーゾーンというか，本当はまずい．

13.7

初期値が 0 でない場合

やる夫 うーん．
やらない夫 なんだ，何か納得いかないか．
やる夫 いや，さっきのラプラス変換表 (p. 138) をもう一回見てるんだお．だいたい今までの説明で理解できたけど，1ヶ所だけよくわからないのが，微分のルールだお．

dLf (t) −→ sF (s) − f (0)dt(13.88)てな風に，sF (s) から初期値 f (0) を引くことになってるお．
やらない夫 そうだな．まあ，今までは初期値が 0 の場合ばかりやってきたので，あまり気にしてなかった
けどな．
やる夫 どうして初期値を引かなきゃいけないか，よくわからないお．だって，微分をラプラス変換すると

s 倍になるのは，元の信号を F (s)est の重ね合わせで表して考えると，各成分ごとの微分が sF (s)estになるからだったお．初期値があるか無いかに関わらず s 倍するだけでいいんじゃないかお?
やらない夫 その主張は，さっき cos の周波数応答を計算したときと同じ点を見逃しているぞ．
やる夫 えっ? あ，えーと，積分範囲が 0 からだってことかお?
やらない夫 ああ．t = 0 で初期値 f (0) = 0 を持つ信号 f (t) をラプラス変換するときのことを考えてみよう．f (t) を t = 0 のところで無理やり値を 0 に落としからラプラス変換をして，F (s) を得ることに
なる．

f(t)
t

0
× u0(t)f(t) u0(t)
0

t

F(s)

やる夫 u0 (t) をかけるんだから，そうなるお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章157

ラプラス変換d
やらない夫 このぶった切られた f (t) の微分，すなわち dt{f (t)u0 (t)} をラプラス変換すると，確かに sF (s)になる．
やる夫 えーと，ラプラス変換自体に u0 (t) をかける操作は含まれてるけど，2 回かけても支障ないので OKだお．
やらない夫 つまりこの場合の sF (s) には，u0 (t) によって t = 0 で不連続になったことに起因する成分が含まれてしまっている．その成分ってのは，時間領域では f (0)δ(t) だ．
やる夫 んー，なんでデルタ関数なのかお?
やらない夫 単位ステップ関数 u0 (t) は δ(t) の積分として導入した (p. 137) んだから，逆に u0 (t) を微分したら δ(t) になるだろう．高さ 1 の段差のステップ関数の微分が δ(t) なんだから，高さ f (0) の段差だと δ(t) の f (0) 倍になる．

f(t)
t

0
× u0(t)f(t) u0(t)
0

t

F(s)

t

s F(s)

d/dt [ f(t) u0(t) ]d/dt
0
やる夫 あー，そう言われてみればそうなりそうだお．

d
やらない夫 一方， dt
f (t) のラプラス変換というのがどういうものかというと，t = 0 でぶった切る前に微分して，それからラプラス変換したものだ．だから，今見たようなデルタ関数の成分は現れない．それに相当する分を sF (s) から差し引いてやる必要がある．

f(t)
t

0
d/dt

d/dt f(t)t0

× u0(t)[ d/dt f(t) ] u0(t)ts F(s) – f(0)

0
L

L

d
やる夫 あー，そうか．f (0)δ(t) −→ f (0) だから，それを sF (s) から差し引いて， dt
f (t) −→ sF (s) − f (0)になるんだお．辻褄が合ったお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章158

ラプラス変換やらない夫 疑問は解けたようだが，せっかくなので初期値が 0 じゃない場合のシステムの挙動について話しておこうか．
やる夫 またヤブヘビをつついた気がするお．
やらない夫 まあ簡単な例だけだ．最初の例

dy(t) = ay(t) + x(t)dt(13.2)

で，初期値 y(0) が 0 じゃないとしよう．この場合の解をラプラス変換で求めてみてくれ．
やる夫 えーと，今の公式を使うお．

sY (s) − y(0) = aY (s) + X(s)(13.89)(s − a)Y (s) = X(s) + y(0)(13.90)Y (s) =y(0)1
X(s) +s−as−a(13.91)が y(t) のラプラス変換だお．これを逆変換するには，えーと，あ，たたみこみと積の関係が使えるから，変換表の範囲で全部できるお．

%&y(t) = eat u0 (t) ∗ x(t) + y(0)eat u0 (t)(13.92)

こうなるかお?
やらない夫 いいと思うぞ．さて，この解をどう解釈する?
やる夫 んーと，1 つめの項は，インパルス応答 eat u0 (t) を入力 x(t) にたたみこんだものだお．線形時不変システムの出力としてはお馴染みだお．2 つめの項は，えー，何だこれ．初期値に比例したインパルス応答が出てきちゃうってことだお．
やらない夫 そういうことになるな．第 1 項は初期値が 0 だった場合の応答で，零状態応答と呼ぶ．初期値を無視して純粋に入力に応じて現れる成分だ．これに対して第 2 項は入力がなかった場合の応答で，零入力応答と呼ばれる．システムの実際の出力は，これらの和になる．
やる夫 いやいや，ちょっと待ってほしいお．線形時不変システムの出力は，インパルス応答と入力のたたみこみ，つまりこの第 1 項で表されるって話だったお．第 2 項の零入力応答なんてどこから現れたんだお?
やらない夫 もっともな疑問だ．実は，線形時不変システムの意味を少し広げて考えなくてはいけない．これまで，線形システムってのは，和を入力すると出力も和になって，定数倍を入力すると出力も定数倍されるものだと考えていた．
やる夫 そうだったお．
やらない夫 この定義に従うと，初期値がある場合は線形システムとは呼べなくなってしまう．零入力応答ってのは入力に関係ないわけで，入力を 2 倍しても 3 倍しても変化しないからな．
やる夫 あー，そりゃそうだお．すると，厳密には初期値が 0 のシステムしか線形システムとしては扱えな
いことになるお．
やらない夫 だが，それじゃ不便だし，実際，微分方程式でシステムを表せば初期値を考慮することは可能なわけだ．だから，線形システムの定義を少し緩めて「零入力応答と零状態応答のそれぞれが線形性を満たせば OK」と考えることが多い．そう考えた上で，式 (13.1) で表されるシステムが初期値を持っている場合でも，広い意味で線形時不変システムと呼ぶことにする．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 13 章159

ラプラス変換やる夫 んーと，すると，インパルス応答のたたみこみで表せるのは，本来の狭い意味での線形時不変シス
テムだけの話であって，線形微分方程式で表されるシステムすべてをたたみこみでは表せないってことになるかお?
やらない夫 そうだな．そもそも，y(t) = h(t) ∗ x(t) という表現は，h(t) と x(t) が与えられれば y(t) が完
全に決まってしまうようになっているわけで，y の初期値なんかが影響する余地がないからな．そんなわけで，たたみこみ表現で表せるシステムの集合と，微分方程式表現で表せるシステムの集合は決してイコールなわけじゃないことには注意しておこう．
というわけで，まとめるか．


• 連続時間 t ∈ [0, ∞) で定義された関数 x(t) (のうち実用上重要なものの多くに対して，式(13.25) で計算される X(s) を x(t) のラプラス変換と呼ぶ (あるいはこの計算をすること自体をラプラス変換と呼ぶ)．

• s = c + jΩ であり，Ω は角周波数，c は適当な定数である．c を十分大きく取ることで，フーリエ変換より多くの関数でラプラス変換を収束させられる．
• 時間領域での微分は，s 領域での s 倍に対応する．
• X(s) から式 (13.52) によって元の x(t) が復元できる．この計算をラプラス逆変換と呼ぶ．
ただし，t < 0 の範囲は 0 になる．

• 実用上は，式 (13.25) や 式 (13.52) で直接計算せずに，ラプラス変換表を用いて変換・逆変換を求められることが多い．
• 式 (13.1) のような線形微分方程式の両辺をラプラス変換すると，代数方程式に変換できる．
これを適当に式変形し，再度両辺をラプラス逆変換することで，微分方程式の解が容易に計算できる．

• あるいは，逆変換せずに s 領域のまま解析することでも，多くの情報を得ることができる．
– 入力と出力のラプラス変換の比 Y (s)/X(s) を伝達関数と呼ぶ．伝達関数はインパル
ス応答のラプラス変換である．

– 伝達関数を部分分数展開することで，インパルス応答を発散・減衰・振動などの基本
要素に分解できる．

– 伝達関数の分母 = 0 とした方程式 (特性方程式) の解の複素平面上での位置が，それらの基本要素の挙動に対応している．
– 伝達関数で s = jΩ と置き換えると周波数応答が得られる．

やる夫 …ちょっと今回は話が長過ぎないかお? 「軽く説明する」とか言ってたの誰だお．
やらない夫 すまん，いろいろ止まらなくなった．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08



160

第 14 章 z 変換
14.1

z 変換の導入やらない夫 さて，ラプラス変換を理解したところで本題の z 変換に進もう．
やる夫 長い道のりだったお．
やらない夫 ラプラス変換ってのは，フーリエ変換する際に元の関数に e−ct をかけておいて，収束しやす
くしてやろうというものだった．同じようなことを離散時間システムについて考えてやろうというのが z 変換だ．
やる夫 てことは，フーリエ変換の代わりに離散時間フーリエ変換 (p. 61) から出発すればよさそうだお．
やらない夫 そうなるな．離散時間信号 x[n] に e−cn をかけたものを離散時間フーリエ変換しよう．ただしラプラス変換と同様に単位ステップ関数もかけておこう．総和範囲を 0 〜 ∞ にすることに相当する．
∞( '
DTFT x[n]u0 [n]e−cn =x[n]e−cn e−jωn

=

n=0
∞


x[n]e−(c+jω)n(14.1)(14.2)n=0

ここで ec+jω を新しい変数 z と置いたものが z 変換だ．

X(z) =∞
x[n]z −n(14.3)

n=0

やる夫 あっさり出てきたお．

やらない夫 全く同じことを，ラプラス変換を出発点として導いてもいい．連続時間信号 x(t) にくし型関数をかけてサンプリン(p. 104) したものをラプラス変換してみよう．

 
∞
∞
∞


L x(t)
δ(t − n) =x(t)δ(t − n)e−st dt
0

n=−∞

=

∞


(14.4)

n=−∞x(n)e−sn(14.5)

n=0

やる夫 んー? 1 行目から 2 行目にいくときに，総和の範囲がどうして n = 0 以降だけになったんだお?
やらない夫 ああ，それは積分範囲が t = 0 以降に限定されていたからだな．デルタ関数のインパルスは

n = −∞, · · · , ∞ まで存在していたが，n が負の範囲は積分範囲に含まれていないので，無かったのと同じことになっている．
やる夫 あー，そうか，ていうか，そもそも n = 0 以降にだけインパルスが立っているようなくし型関数をかけると考えてもいいんだお．結局同じことになるお．

第 14 章z 変換

161

やらない夫 そんなこんなで，式 (14.5) で z = es と置いたものが z 変換の定義になる．ラプラス変換の sってのは c + jω だったので，さっきの定義と一致していることがわかる．
やる夫 んー，s = c + jΩ じゃなかったかお? どうして小文字の ω になるのかお?
やらない夫 その辺の議論は，離散時間フーリエ変換を導入したときと同じだな．今はサンプリングしたときのサンプリング周期を単位時間として考えている．単位時間が「1 秒」じゃなく「1 サンプル時刻」になっているから，正規化角周波数で考える．
やる夫 ああ，そうだったお．
やらない夫 ともかく以上のように定義されるのが z 変換だ．

Z [x[n]] = X(z)(14.6)

Zx[n] −→ X(z)(14.7)などと書くことにしよう．
ちょっといくつか簡単なものの計算をしてみるか．

· · · , x[−1] = 0,

(14.8)

x[0] = 1,x[1] = 3,x[2] = −2,x[3] = −1,
x[4] = 0, · · ·を z 変換するとどうなる?
やる夫 えーと，公式通り計算してX(z) =∞
x[n]z −n(14.9)

n=0= 1 + 3z −1 − 2z −2 − z −3

(14.10)でいいのかお?
やらない夫 いいだろう．じゃあ次の例だ．α を定数として

x[n] = αn(14.11)だとどうだ?
やる夫 んーと，X(z) ==∞
αn z −n(14.12)(αz −1 )n(14.13)

n=0
∞

n=0

=

1
1 − αz −1(14.14)ってことかお．ただし |αz −1 | < 1 じゃないと収束しないお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

162

やらない夫 ああ，ラプラス変換と同じく，z 変換にも収束範囲がある．この場合の収束範囲は |z| > |α|，つまり原点を中心とする半径 |α| の円の外側になる．
Im|z|>|α|Re|α|3 つめ，最後の例だ．
x[n] = δ[n](14.15)だとどうだろう．
やる夫 単位インパルスかお．えーとX(z) =∞


δ[n]z −n(14.16)n=0= z −0(14.17)=1(14.18)

でいいのかお? まあ，ラプラス変換とかフーリエ変換と対応する結果なので，違和感はないお．
やらない夫 そうだな．連続時間の単位インパルス (= デルタ関数) はフーリエ変換しても，ラプラス変換
しても 1 になる．離散時間の単位インパルスは，離散時間フーリエ変換しても z 変換してもやっぱり 1 になる．覚えておく価値がある事実だ．
やる夫 ふーん，まあ z 変換がどんな計算をするものかは何となくわかったお．でも，定義するときにどうして z = ec+jω なんて置き換えをしないといけないのかわからんお．ω のままじゃダメなのかお?
やらない夫 ああ，ちょっとそこは順を追って説明していこうと思う．が，その前に s と z の対応関係について見ておこう．どっちも複素数だってのはいいよな．s = c + jω で実数 c だけが変化すると，対応する z はどう動く?
やる夫 えーと，z = ec+jω = ec ejω で c だけ動くんだから，z は偏角が変わらず絶対値だけが変わるお．
やらない夫 そうだな．原点を通る半直線上を動くことになるわけだ．c → −∞ で原点にえんえんと近づき，c → ∞ で無限遠に飛んでいくことになる．
Im
s㡿ᇦ

z㡿ᇦ

Im
c→∞

jω

s = c + jω(ω: const)
Rec → −∞

ωz = ec ejω
(ω: const)
Re

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

163

じゃあ ω だけが変化するとどうだ?
やる夫 もう簡単だお．z = ec ejω なんだから，原点を中心とした半径 ec の円周上を回ることになるお．
やらない夫 ω = 0 のときが実軸上の Re{z} = ec のところに対応することになる．ω が増えるとともに円周上を反時計回りに回って，ω = 2π で 1 周するわけだ．c が大きくなれば円の半径も大きくなる．

s㡿ᇦ

Im

z㡿ᇦ

Im
z = ec ejω
(c: const)s = c + jω
(c: const)
Re

ec

Re

このうち特に c = 0 のとき，つまり s 領域の虚軸に対応するのは，z 領域の単位円になる．e0 = 1 だ
からな．

s㡿ᇦ

Im

z㡿ᇦ

Im

s = jω

z = ejωRe1(= e0)

Re

やる夫 結局，s 領域で実軸に平行な直線群は z 領域では放射状に伸びる直線群に対応して，s 領域で虚軸に平行な直線群は z 領域の同心円群に対応することになるお．

s㡿ᇦ

Im

z㡿ᇦ

Im

Re

Re

やらない夫 そうなるな．ラプラス変換では，虚軸に平行な直線を境にして右側か左側かってのがよく重要な分かれ目になった．z 領域ではこれが，原点を中心とする円を境にして外側か内側かに対応することになる．例えばラプラス変換の収束範囲ってどんな領域だった?
やる夫 虚軸に平行なある直線の右側が収束範囲になるんだお．その範囲なら c が十分に大きくて e−ct が強く減衰するって話だったお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

164

やらない夫 それに対応して，z 変換の場合は，原点を中心とするある円の外側が収束範囲になる．
Im
Im
s㡿ᇦ
z㡿ᇦ

Re

Re

こんな風に，s と z の対応関係を把握しておくことは重要だ．

14.2

逆 z 変換やる夫 で，逆 z 変換はどうなるのかお? ラプラス逆変換とか離散時間フーリエ逆変換の公式で適当に変数を置き換えるだけでいいのかお?
やらない夫 基本的にはそういうことだが，今話したような z 領域と s 領域の対応関係をイメージしながら考えることが重要だ．

z 変換を導入したときの元々の関係は('X(z) = DTFT x[n]u0 [n]e−cn(14.19)だった．これの逆を考えることから始めよう．
やる夫 えーと逆ってことは

x[n]u0 [n]e−cn = DTFT−1 [X(z)](14.20)ってことかお．
やらない夫 離散時間フーリエ逆変換の公式に入れると，
 π
1
x[n]u0 [n]e−cn =X(z)ejωn dω
2π −π(14.21)になる．e−cn を右辺に移すと
 π1
x[n]u0 [n] =X(z)e(c+jω)n dω2π −π(14.22)になるな．ここで z = ec+jω の関係を使って，積分変数を ω から z に置換しよう．
やる夫 ええと，dz/dω = jec+jω だから，1x[n]u0 [n] =X(z)e(c+jω)n e−(c+jω) dz
2πj Γ

1
=
X(z)e(c+jω)(n−1) dz
2πj Γ

1
=
X(z)z n−1dz
2πj Γ(14.23)(14.24)(14.25)って書けるお．積分経路はとりあえず Γ って書いといたけど，えーと，これはどうなるかお…．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

165

やらない夫 z = ec+jω で ω を −π から π まで動かすことを考えればいい．
やる夫 あ，そうか，だから半径 ec の円周上をちょうど 1 周する積分経路になるお．…ああ，ラプラス逆変換で Re{s} = c の直線を積分経路に取ったことに対応してるわけだお．

s㡿ᇦ

Im

z㡿ᇦ

Im

jπ
ω=π
c

Re
ω = -π

ec

Re

-jπ

やらない夫 ちょっとした相違点として，ラプラス変換のときの積分経路は Ω を −∞ から ∞ まで動かしたが，z 変換の場合の ω は −π 〜 π でいいってことに注意しておこう．離散時間フーリエ逆変換を導入したときに，積分範囲を −π 〜 π に限定したのと同じ理屈だ．
というわけで得られた式 (14.25) が逆 z 変換の公式だ．x[n] じゃなくて x[n]u0 [n] にしか戻らないというのもラプラス逆変換と同じだな．
やる夫 ラプラス逆変換に負けず劣らず，実際に計算するのは面倒くさそうな複素積分だお．
やらない夫 まあ否定はしないがな．ただし，何となく類推できるんじゃないかと思うが，ラプラス逆変換と同様，逆 z 変換もこの公式を使わなくて済む場合が多いんだ．
やる夫 やっぱり z 変換表なんてのを使うことになるのかお?
やらない夫 そういうことだ．その具体的な方法はまた後でやることにして，今は，逆 z 変換によって離散時間信号が「成分の重ね合わせ」の形式で表現されていることに注意しておこう．
やる夫 えーと，どういうことだお? 何が重ね合わされてるんかお．
やらない夫 完全に z で表した逆 z 変換の公式よりも，ω が残っている式 (14.22) の方がイメージしやすい
かもな．この式なら，e(c+jω)n の重ね合わせになっていることが見て取れるだろう．その際の重ね合わせの係数が X(z) = X(ec+jω ) になる．
やる夫 あー，なるほど，こっちならわかるお．
やらない夫 ざっと振り返ると (p. 144) ，フーリエ逆変換ってのは ejΩt の重ね合わせで，ラプラス逆変換ってのは e(c+jΩ)t の重ね合わせで元の連続時間信号を表そうというものだと解釈できた．それと同じ話で，離散時間フーリエ逆変換ってのは ejωn の重ね合わせで，逆 z 変換ってのは e(c+jω)n の重ね合わせで元の離散時間信号を表そうとしていることになる．

14.3

線形差分方程式と z 変換

やらない夫 さて，いま何をしたかったのかというと，線形差分方程式で表されるディジタルフィルタを解析したい(p. 128) んだった．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

166

やる夫 ああ，忘れかけてたお．
Nak y[n − k] =

k=0

M


bk x[n − k](12.15)k=0

みたいな形の差分方程式の話だったお．そこからいったん微分方程式に話が移って，ようやく戻ってきたんだお．
やらない夫 微分方程式をラプラス変換で等価な代数方程式に転換できたのと同じようなことを，差分方程式に対しては z 変換でやることができる．その話をしよう．
やる夫 やっぱり微分方程式のときと同じような考え方をするんかお?
やらない夫 そうだな．微分方程式のときは，信号を成分分解して考えることで，微分演算 d/dt を s 倍にすげ替えることができたんだった．
やる夫 でも差分方程式には微分演算なんか出てこないお．
やらない夫 その代わりに鍵になるのが，1 時刻分の遅延だ．D という演算子で書くことにしよう．

Dy[n] = y[n − 1]

(14.26)

これを使ってさっきの差分方程式を書き直すとN

ak Dk y[n] =

k=0

M


bk Dk x[n](14.27)k=0になる．
やる夫 えーと，k 時刻遅らせるのは D を k 回作用させることだから Dk って書いてるわけだお．なるほど，微分方程式の d/dt が D に置き換わったような表現になるんだお．
やらない夫 じゃあ，微分方程式のときと同じように x や y を成分分解して考えよう．離散時間フーリエ逆変換で置き換えて，総和と積分を入れ替えると

 π
 π
N
M
1 
1 
k
jωn
k
ak D
Y (ω)e dω =bk DX(ω)ejωn dω
2π
2π
−π
−π
k=0
k=0
 π 
 π 
N
M
1
1
ak Dk Y (ω)ejωn dω =bk Dk X(ω)ejωn dω
2π −π
2π −π
k=0

(14.28)(14.29)k=0

やる夫 微分方程式のときは，d/dt を指数関数 ejΩt に作用させて jΩ が出てきたんだお．
やらない夫 代わりに今回は，遅延演算子 D を指数関数 ejωn に作用させることを考える．

Dejωn = ejω(n−1)=e(14.30)−jω jωne(14.31)

やる夫 あっ，やっぱり指数関数 ejωn のまま，e−jω 倍になるだけだお．
やらない夫 そこがミソだ．成分分解された各ベクトルの方向が変わらないことに相当していたわけだな．
遅延演算の場合も同じことが言える．
 π 
 π 
N
M
1
1
−jω k
jωn
−jω k
ak (e
) Y (ω) e dω =bk (e) X(ω) ejωn dω
2π −π
2π −π
k=0

(14.32)k=0

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

167

やる夫 ここまで来るともう続きがわかるお．大カッコ [ ] の中身の離散時間フーリエ逆変換同士が等しい
ので，大カッコの中身同士も等しいんだお．
Nak (e−jω )k Y (ω) =

k=0

M


bk (e−jω )k X(ω)(14.33)k=0

やらない夫 離散時間フーリエ逆変換で考える代わりに逆 z 変換で考えても同様だ．ejωn の代わりに e(c+jω)nの重ね合わせで表すわけだ．

De(c+jω)n = e(c+jω)(n−1)=e(14.34)−(c+jω) (c+jω)ne(14.35)という風に 1 時刻の遅延は e−(c+jω) 倍に化けるので，全く同じように議論して
N


ak (e

−(c+jω) k) Y (z) =

k=0

M


bk (e−(c+jω) )k X(z)(14.36)k=0が得られる．z = es = ec+jω と書くことに決めていたので，結局N


ak z −k Y (z) =

k=0

M


bk z −k X(z)(14.37)k=0と書かれることになる．これが，元の差分方程式を z 変換して得られる代数方程式だ．
やる夫 微分が s になったのと同じく，1 時刻の遅延が e−(c+jω) = e−s = z −1 になるってことだお．
やらない夫 そうだな．ブロック図で遅延素子を「z −1 」と表示した (p. 133) 理由がこれだ．

x[n]

z –1

x[n – 1]

やる夫 後は，Y (z) について解いたY (z) =

M−k
k=0 bk zX(z)N−k
k=0 ak z(14.38)を逆変換で時間領域に戻せば，差分方程式の解 y[n] が得られるってわけだお．微分方程式のときと話の筋は同じだお．
やらない夫H(z) =

M−k
k=0 bk zN−k
k=0 ak z(14.39)と定義すれば，Y (z) は X(z) の H(z) 倍という関係が成り立つわけだな．ラプラス変換の場合と同じように H(z) を伝達関数と呼ぶ．これがインパルス応答の z 変換になっていることは，もうわかるだろう?
やる夫 えーと，単位インパルス δ[n] の z 変換は 1 だったから，δ[n] を入力したときの出力の z 変換はY (z) = H(z) · 1 になるんだお．要するにインパルス応答の z 変換が H(z) だってことだお．
やらない夫 そうだな．時間領域の y[n] = h[n] ∗ x[n] が z 領域で Y (z) = H(z)X(z) に対応することになる．
たたみこみと積の関係が z 変換でも成り立つということだな．もちろんラプラス変換のとき (p. 145)と同様に，インパルス応答 h[n] のシステムに x[n] = e(c+jω)n = z n を入力して，その出力が H(z)z nになることから理解するのでもいい．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

168

やる夫 その考え方にもだいぶ慣れてきたお．
やらない夫 伝達関数から周波数応答を計算する方法も，ラプラス変換のとき (p. 154) と同じように考えるとわかる．X(s) に s = jΩ を代入して連続時間システムの周波数応答が得られたのと同様に，X(z) に

z = ejω を代入したものが離散時間フーリエ変換に一致するわけだ．離散時間フーリエ変換を X(ejω )と書く場合がある (p. 66) のは，そういう由来だ．
やる夫 z 変換で得られた関数の単位円上の値を拾っていくと離散時間フーリエ変換になるってことだお．
単位円上を 1 周すると元に戻るわけで，離散時間信号のスペクトルが周期 2π で周期的なのとも整合
してるお．

14.4

逆 z 変換の実際やらない夫 というわけで，z 変換で得られた代数方程式を Y (z) について解いてから逆 z 変換すれば，差分方程式の解 y[n] が得られるわけだ．
やる夫 でも逆 z 変換の公式を使うのは面倒だお．
やらない夫 なので，普通は何らかの式変形をした上で，z 変換表を見ながら置き換えていくのが常套手段だ．ラプラス変換のときと同じように，当面必要なものだけ抜粋しておこうか．

単位インパルス

時間領域

z 領域

δ[n]

1
1
1 − αz −1
aF (z) + bG(z)

n

指数関数

α u0 (t)線形性

af [n] + bg[n]

時間遅延

f [n − 1]∞h[n] ∗ x[n] =h[m]x[n − m]

たたみこみz −1 F (z)H(z)X(z)m=0

やる夫 あー，ほとんど既に出てきたやつだお．
やらない夫 線形性は特には説明してないが，まあ定義から自明だろう．他はすべて説明済みだな．
じゃあ，これらを使って，具体例を逆 z 変換してみるか．

H(z) =

1 −1
2z
3 −1
1 − 2 z + 12 z −2

(14.40)

やる夫 っていきなり変換表にない式だお．
やらない夫 ああ，ラプラス変換と同様に，こういう場合にまず最初に考えるのは部分分数展開だ．ただし，ちょっと注意が必要なのは，z −1 の式として見てやらなくてはならないってことだ．
やる夫 えっ，どういうことだお?
1
やらない夫 ラプラス変換の場合，部分分数展開で s−aの形を作るのが基本だ．それが時間領域では eat u0 (t)1に対応するんだったな．z 変換の場合は，時間領域で αn u0 [n] に対応するもの，つまり 1−αz
−1 を作るのが基本になる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

169

やる夫 ふーん，じゃあやってみるお．とりあえず分母を z −1 の式だと思って因数分解するお．

H(z) =1 −1
2z(1 − z −1 )(1 − 12 z −1 )(14.41)1
1−
1 − z −1
1 − 12 z −1

(14.42)

で，えーと，

H(z) =と展開できるお．z 変換表 (p. 168) を見て時間領域に移すと

1
Z −1 [H(z)] = 1n u0 [n] − ( )n u0 [n]2
1 n= (1 − ( ) )u0 [n]2(14.43)(14.44)になるお．なるほど，z −1 の式と見なして部分分数展開ってのはこういうことかお．
やらない夫 そういうことだな．やってみると，ラプラス変換のときと似たような計算だってのがわかっただろう．
やる夫 だいたいこんな感じで逆変換できるのかお?
やらない夫 実は必ずしもそうとは限らない．例えば今最初に分母を因数分解したが，そこで重解が出て来る場合は部分分数展開がもう少しややこしい．具体的には (1−αz1 −1 )k みたいな形の項が出て来る．そういう項をどう扱えばいいかについては，付録 (p. 225) に回そう．

14.5

なぜ es を z にするのか

やる夫 うーん，z 変換がどんなものかってのはだいたいわかった気がするお．でも，どうして z = es = ec+jω
って置くのかがまだピンと来ないお．ラプラス変換のときは，微分して前に出てくる c + jΩ を s にしたんだお．だったら，e−(c+jω) = e−s を z にする方が素直じゃないかお?
やらない夫 その辺を理解するために，もう一度ラプラス変換のときにどう考えたかを振り返ろう．あのときは，システムを ẏi = λi yi + x という基本的な要素に並列分解することを考えたんだった．
1
やる夫 s 領域では，伝達関数を s−λの和に部分分数展開することに相当してたんだお．
i)
やらない夫 そのとき伝達関数の分母は i (s − λi ) の形になるわけで，結局，分母 = 0 を解くことで λi の値がわかる．
やる夫 λi の値が，インパルス応答の挙動，つまり，発散するのか減衰するのかとか振動性とかいったことを把握するために重要だったんだお．
やらない夫 さて，同様のことを z 変換の場合について考えたいんだが，何か思い当たることはないか?
やる夫 思い当たりまくりだお．ついさっき部分分数展開とかやったばっかりだお．
やらない夫 そう，その辺が鍵になる．ラプラス変換のときと同じように話を簡単にするため，z −1 の有理多項式で表される H(z) のうち，分母の次数が分子より高くて，分母 = 0 が重解を持たない場合に話を限定して考えよう．それ以外の場合は付録 (p. 223) で扱うことにする．
そう限定すると，必ずH(z) =Nwi
1−αi z −1i=1(14.45)と展開できるわけだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章z 変換

170

やる夫 z 変換表にあるやつだお．時間領域では αni u0 [n] の足し合わせで書けることになるお．
やらない夫 そうだったな．システムを Hi (z) = 1−α1i z−1 へ並列分解して考えることに相当する．これはYi (z) = αi z −1 Yi (z) + X(z)(14.46)

つまり時間領域でいうと

yi [n] = αi yi [n − 1] + x[n](14.47)というサブシステムに分解していることになるな．
各サブシステムの時間領域の挙動は αi の値で決まる．例えば |αi | > 1 だったら発散するし，|αi | < 1
なら減衰していく．複素数なら振動するって具合だ．
やる夫 そっか，ラプラス変換のときに 分母 = 0 の解として eλi t の λi が得られたように，αi が簡単に得られると便利なんだお．
やらない夫 で，実際の z 変換はどうなってる?
やる夫 えーと，部分分数展開する前はH(z) = )NA(z)i=1 (1 − αi z(14.48)−1 )みたいな形になってるはずだお．だから，あー，確かに 分母 = 0 の解として αi (i = 1, · · · , N ) が出てくるお!
やらない夫 あるいは分子・分母を z n 倍してz n A(z)H(z) = )Ni=1 (z − αi )(14.49)って書く方がわかりやすいかも知れない．まあどっちにしろ同じことだ．
やる夫 なるほど，つまりこうやって αi が得られるように z が定められてるって考えればいいわけだお．
やらない夫 ラプラス変換のときと同じく，分母 = 0 になるような点は極と呼ばれる．制御工学からの類推で容易に想像できるように，ディジタルフィルタの特性を考えていく際に，極がどこにあるかはとても重要になる．そういう分析がしやすいように変数 z が導入されているってことだな．
というわけで今回のまとめだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 14 章

z 変換

171




• 離散時間 n = 0, 1, 2, · · · で定義された関数 x[n] (のうち実用上重要なものの多くに対して，
式 (14.3) で計算される X(z) を x[n] の z 変換と呼ぶ (あるいはこの計算をすること自体を z 変換と呼ぶ)．

• z = es = z c+jω であり，ω は正規化角周波数，c は適当な定数である．c を十分大きく取ることで，離散時間フーリエ変換より多くの関数で z 変換を収束させられる．

• 時間領域での 1 時刻遅延は，z 領域での z −1 倍に対応する．
• X(z) から式 (14.25) によって元の x[n] が復元できる．この計算を逆 z 変換と呼ぶ．ただし，n < 0 の範囲は 0 になる．
• 実用上は，式 (14.3) や 式 (14.25) で直接計算せずに，z 変換表を用いて変換・逆変換を求められることが多い．

• 式 (12.15) のような線形差分方程式の両辺を z 変換すると，代数方程式に変換できる．これを適当に式変形し，再度両辺を z 逆変換することで，差分方程式の解が容易に計算できる．
• あるいは，逆変換せずに z 領域のまま解析することでも，多くの情報を得ることができる．
– 入力と出力の z 変換の比 Y (z)/X(z) を伝達関数と呼ぶ．伝達関数はインパルス応答の z 変換である．

– 伝達関数を部分分数展開することで，インパルス応答を発散・減衰・振動などの基本
要素に分解できる．

– 伝達関数の分母 = 0 とした方程式 (特性方程式) の解の複素平面上での位置が，それらの基本要素の挙動に対応している．
– 伝達関数で z = ejω と置き換えると周波数応答が得られる．

やる夫 ほとんど前回のコピペじゃないかお．
やらない夫 見比べながら理解しておくといい．いろいろ捗るぞ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08



172

第 15 章 ディジタルフィルタの解析
15.1

ディジタルフィルタの周波数特性

やらない夫 さて，z 変換を使って実際にディジタルフィルタの特性を解析していこうと思う．
やる夫 んー，特性っていっても抽象的すぎてピンと来ないお．
やらない夫 一口に特性といってもいろいろあるが，前々々回 (p. 128) 話した通り，ここで我々が考えたいのは周波数応答だ．つまり，ディジタルフィルタという離散時間線形時不変システムを通すことで，各周波数の成分がそれぞれどれだけ変化するかが知りたいんだった．フィルタの分野では，周波数応答という用語の代わりに周波数特性と呼ぶことも多い．
やる夫 まあ要するに今までやってきた周波数応答の計算ができればいいんだお? z 変換してから z = ejω
って置き換えればいいんだったお．
やらない夫 とりあえずはそういうことだな．ただし，いろいろ注意しなくちゃいけないことがあったり，
あるいは，周波数特性の計算を省略してもいい場合があったりする．まあその辺は追々話すことにして，具体的な計算を見ていこうか．
まず，インパルス応答が
1
5 , n = 0, 1, 2, 3, 4h[n] =
0, otherwise(15.1)であるようなシステムを考えてみよう．伝達関数はどうなる?
やる夫 えーと，z 変換の公式に入れるお．

H(z) =

4

1

z −k

(15.2)

1 1 − z −5
5 1 − z −1

(15.3)

k=0=5

でいいかお．
やらない夫 いいだろう．そのまま先に進んでもいいんだが，練習のために，差分方程式を経由する方法でも伝達関数を求めておこう．システム h[n] の入出力関係を差分方程式で表すとどうなる?
やる夫 んー，入力 x[n] に h[n] をたたみこんで出力 y[n] を得るんだお．だから

y[n] =

=

∞

k=0
4

k=0

になるお．

h[k]x[n − k](15.4)

1x[n − k]5

(15.5)

第 15 章173

ディジタルフィルタの解析

やらない夫 そうだな．これは FIR フィルタだから，線形差分方程式の一般式 (12.15) で a1 , a2 , · · · , aN = 0の場合になっていることに注意しておこう．さて，この両辺を z 変換して，伝達関数を求めてみてくれ．
やる夫 1 時刻遅延が z −1 倍になるんだから

Y (z) =

4

1
k=0

5

z −k X(z)(15.6)になるお．伝達関数は H(z) = Y (z)/X(z) だから

H(z) =

4

1
k=0

5

z −k

(15.7)になるお．結局さっきと同じだお．
やらない夫 もちろん同じになってくれないと困るんだけどな．どっちでやっても計算の構造上全く同じことになっているのをよく確認しておいて欲しい．
さて，伝達関数が求まったから次は周波数応答を求めよう．
やる夫 z = ejω を代入するんだお．

H(ejω ) =1 1 − e−j5ω
5 1 − e−jω

(15.8)

で，えーと，これ前に計算したことある気がするお．
やらない夫 そうだな，つまりは矩形波の離散時間フーリエ変換を計算しているわけなので，窓関数の話のときに計算した通りだ．
やる夫 ああ，そうだったお．式 (11.8) で N = 5 にしたものを 1/5 倍すればいいので，

H(ejω ) =1 −j2ω sin 5ω
2e5
sin ω2(15.9)になるお．
やらない夫 振幅特性の形状はこうなるな．大雑把に見ると高周波になるほど振幅が小さくなるように作用する．ただし，ω = ±2π/5, ±4π/5 で完全に 0 になるのが特徴的だ．
䢳
䢲䢰䢻
䢲䢰䢺
䢲䢰䢹
䢲䢰䢸

|H(ω)| 䢲䢰䢷
䢲䢰䢶
䢲䢰䢵
䢲䢰䢴
䢲䢰䢳
䢲

-π -4π/5

-2π/5

0
ω

2π/5

4π/5 πやる夫 つまり，x[n] = cos 2π
5 n とかを入力すると出力は 0 になるってことになるお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章174

ディジタルフィルタの解析

やらない夫 実際に入出力関係をいくつか見てみよう．いずれも，青色○印でプロットされているのが入力

x[n] で，赤色×印が出力 y[n] だ．
πx[n] = cos 10
n の場合:
䢳
䢲䢰䢺
䢲䢰䢸
䢲䢰䢶

x[n]
y[n]

䢲䢰䢴
䢲
䢯䢲䢰䢴
䢯䢲䢰䢶
䢯䢲䢰䢸
䢯䢲䢰䢺
䢯䢳
䢲

䢳䢲

䢴䢲

䢵䢲

䢶䢲

䢷䢲

䢸䢲

䢶䢲

䢷䢲

䢸䢲

䢶䢲

䢷䢲

䢸䢲

n
x[n] = cos π5 n の場合:
䢳
䢲䢰䢺
䢲䢰䢸
䢲䢰䢶

x[n]
y[n]

䢲䢰䢴
䢲
䢯䢲䢰䢴
䢯䢲䢰䢶
䢯䢲䢰䢸
䢯䢲䢰䢺
䢯䢳
䢲

䢳䢲

䢴䢲

䢵䢲

n
x[n] = cos 2π
5 n の場合:
䢳
䢲䢰䢺
䢲䢰䢸
䢲䢰䢶

x[n]
y[n]

䢲䢰䢴
䢲
䢯䢲䢰䢴
䢯䢲䢰䢶
䢯䢲䢰䢸
䢯䢲䢰䢺
䢯䢳
䢲

䢳䢲

䢴䢲

䢵䢲

n
x[n] = cos 3π
5 n の場合:

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章175

ディジタルフィルタの解析

䢳
䢲䢰䢺
䢲䢰䢸
䢲䢰䢶

x[n]
y[n]

䢲䢰䢴
䢲
䢯䢲䢰䢴
䢯䢲䢰䢶
䢯䢲䢰䢸
䢯䢲䢰䢺
䢯䢳
䢲

䢳䢲

䢴䢲

䢵䢲

䢶䢲

䢷䢲

䢸䢲

n
やる夫 なるほど，確かに振幅特性の通りに出力の振幅が変わってるお．
やらない夫 じゃあ別の例だ．

y[n] = 0.9y[n − 1] − 0.81y[n − 2] + x[n] + x[n − 2]

(15.10)

同じようにやってみようか．
やる夫 まずは z 変換してみるお．

Y (z) = 0.9z −1 Y (z) − 0.81z −2Y (z) + X(z) + z −2 X(z)(15.11)−2

Y (z) =1+zX(z)1 − 0.9z −1 + 0.81z −2(15.12)で，z = ejω を代入すれば周波数特性がわかるお．

H(ejω ) ==Y (ejω )X(ejω )

(15.13)

1 + e−j2ω
1 − 0.9e−jω + 0.81e−j2ω

(15.14)…えー，こんなのどんな形のグラフになるのかわからんお．
やらない夫 ちょっと難しいだろうな．計算機を使ってプロットすると，振幅特性はこうなる．
䢹䢸䢷

|H(ω)|

䢶

䢵

䢴

䢳

䢲

-π

-π/2 -π/30ω

π/3 π/2

π

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章176

ディジタルフィルタの解析

こっちもいくつか入出力関係を見ておこうか．
πx[n] = cos 10
n の場合:
䢸

䢶

x[n]
y[n]

䢴

䢲

䢯䢴

䢯䢶

䢯䢸
䢲

䢳䢲

䢴䢲

䢵䢲

䢶䢲

䢷䢲

䢸䢲

䢶䢲

䢷䢲

䢸䢲

䢶䢲

䢷䢲

䢸䢲

n
x[n] = cos π3 n の場合:
䢸

䢶

x[n]
y[n]

䢴

䢲

䢯䢴

䢯䢶

䢯䢸
䢲

䢳䢲

䢴䢲

䢵䢲

n
x[n] = cos π2 n の場合:
䢸

䢶

x[n]
y[n]

䢴

䢲

䢯䢴

䢯䢶

䢯䢸
䢲

䢳䢲

䢴䢲

䢵䢲

n
x[n] = cos 3π
5 n の場合:

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章177

ディジタルフィルタの解析

䢸

䢶

x[n]
y[n]

䢴

䢲

䢯䢴

䢯䢶

䢯䢸
䢲

䢳䢲

䢴䢲

䢵䢲

䢶䢲

䢷䢲

䢸䢲

n
やる夫 うーん，こういうややこしい式の場合の特性は，手計算じゃ把握しようがないのかお?
やらない夫 いや，そうとも限らない．周波数特性 H(ejω ) を真面目に計算しなくても，特性のおおまかな形状は目星がつく場合がある．どうするかというと，極と零点の配置を考える．

15.2

極と零点

やらない夫 ラプラス変換の場合と同じで，極ってのは伝達関数が無限大に発散するところで，零点ってのは伝達関数が 0 になるところだ．複素平面でのこれらの配置を考えることで，フィルタの特性についていろいろと知ることができる．
具体例で進めよう．最初の例に戻って極と零点を計算してみるか．

H(z) =

1 1 − z −5
5 1 − z −1

(15.15)

やる夫 えーと，ラプラス変換のときと同じように考えればいいんだお? だったら，分子 = 0 という方程式の解が零点で，分母 = 0 の解が極になるお．だから…
やらない夫 ちょっと待った．そのまま進むと見落としが発生するぞ．
やる夫 えっ? どういうことだお?
やらない夫 z = 0 のときに分子も分母も無限大になるだろ．ということは，分子 = 0 の解だけが零点とは限らないし，分母 = 0 の解だけが極とは限らなくなってしまう．今の場合は分子の方が z −1 の次数が高いから，z = 0 で伝達関数は無限大に発散するはずだ．でも z = 0 は 分母 = 0 の解ではない．
やる夫 あー，じゃあ，どうすればいいのかお…
やらない夫 分子・分母に z を適当な回数かけて，z の有理式にしてやってから考えるといい．
やる夫 んーと，今の場合は z 5 をかけるとH(z) =

1 z5 − 1
5 z 4 (z − 1)

(15.16)になるお．なるほど，これならさっきみたいなことはややこしいことは起きないお．
やらない夫 この辺はちょっと注意しないといけないところだな．部分分数展開のときとかは z −1 の有理式として見て式変形したんだった．でも極や零点を考えるときは z の有理式として見ないといけない．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章178

ディジタルフィルタの解析

やる夫 じゃあ，まあこれで計算してみるお．まず，分母 = 0 の解は z = 0 (4 重解) と z = 1 だお．これらが極ってことになるお．
それから 分子 = 0 の解は，えーと，z を極座標で表して z = rejθ (r ≥ 0, −π ≤ θ < π) とすると

r5 ej5θ = 1 · ej2πn (n : 整数)(15.17)なので r = 1，θ = 2πn/5 ってことになるお．だから，

z = 0, ±ej2π/5 , ±ej4π/5(15.18)が零点だお．
やらない夫 複素平面上に極と零点を表示するときは，慣例として極を×印，零点を○印で表すことが多い．
原点の極は 4 重解だということを明示するために 4 と付記しておこう．

Im
j

1

䢶

Re

やる夫 あれ? z = 1 のところはどうなったんだお? 極にも零点にもなっているはずだお．
やらない夫 1 重解の極と零点が同じ場所にあるので，これらは分子・分母で約分されてしまって，極としても零点としてもはたらかない．なので図からも省略してしまっている．実際にシステムの入出力関係に影響を与えるのは，そのほかの極と零点の配置だ．
やる夫 で，その極と零点の配置から何がわかるんだお?
やらない夫 伝達関数と周波数特性の関係をもう一度思い出してみると，単位円 z = ejω 上の伝達関数の値を拾っていったものが周波数特性だった．今の極零配置の図で単位円上を見ていくと，ω = 0, ±2π/5, ±4π/5で振幅が 0 になることがわかる．
やる夫 あー，そうか，真面目に計算した振幅特性と一致しているお．…でも，真面目に計算するのとそん
なに手間は変わってない気がするお．
やらない夫 じゃあ，2 つ目の例だとどうだ?
やる夫 ええと，2 つ目はH(z) =

1 + z −2
1 − 0.9z −1 + 0.81z −2(15.19)だったお．分子・分母を z 2 倍してH(z) =

z2 + 1z 2 − 0.9z 1 + 0.81

(15.20)
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章179

ディジタルフィルタの解析になるお．だから，極は 分母 = 0 の解で√
31),z = 0.9( ± j2
2(15.21)

零点は 分子 = 0 の解で

z = ±j(15.22)

になるお．

Im
j

1

Re

やらない夫 この極零配置を見ながら周波数特性を考えてみよう．まず ω = ±π/2 で振幅が 0 になるのはいいだろう．
やる夫 さっきの振幅特性のグラフでも確かにそうなってるお．
やらない夫 次に極の方だが，単位円上にはないがかなり近いところにある．だから，無限大に発散はしな
いが，ω = ±π/3 で強いピークが出そうだと想像できる．実際に振幅特性のグラフはそうなっている
わけだ．
やる夫 んー，振幅特性のグラフを先に見てるからそれで合ってるってわかるけど，「強いピークが出そう」
なんて，そんな曖昧なことでいいのかお?
やらない夫 真面目に考えるならこうなる．極と零点を使って伝達関数を表すとH(z) =(z − j)(z + j)√√(z − 0.9( 12 + j 23 ))(z − 0.9( 12 − j 23 ))(15.23)になるな．その絶対値は|H(z)| =|z − j| |z + j|√√|z − 0.9( 12 + j 23 )| |z − 0.9( 21 − j 23 )|(15.24)と表せる．
やる夫 えーと，で，振幅特性は，この |H(z)| の単位円上の値を拾っていったものになるんだお．
やらない夫 そこまでわかればほとんど答えにたどりついたようなもんだ．|H(z)| は，|z − j| と |z + j| を√√かけたものを |z − 0.9( 12 + j 23 )| と |z − 0.9( 21 − j 23 )| で割ることで計算できる．これらのうち，例
えば |z − j| ってのは複素平面での z と j の間の距離だ．z を単位円上で動かしながらこの長さを考えていくことになる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章180

ディジタルフィルタの解析

Im| z – 0.9(1 + j䌮)
3 /2|
|z–j|

z = ejω

ω

Re

|z+j|

| z – 0.9(1 – j䌮)
3 /2|

√

やる夫 あー，なるほど，だから例えば ω = π/3 のときには分母の |z − 0.9( 12 + j 23 )| が小さな値になって，それで伝達関数にピークが現れるんだお．
やらない夫 こんな風に，極や零点のそれぞれの影響を分解して考えてやることができる．もちろん正確なグラフを描こうと思うとちょっと無理があるけどな．
やる夫 でも，大まかな傾向をつかむには役に立ちそうだお．
やらない夫 今は振幅特性のみを考えたが，位相特性も同じように把握することができる．H(z) の偏角が
√
√
3
3
1
1
 H(z) =  (z − j) +  (z + j) −  (|z − 0.9( + j)) −  (z − 0.9( − j))(15.25)2222になるのはわかるか?


やる夫 えーと，例えば z − j は |z − j|e (z−j) って表せるお．絶対値の |z − j| の部分は位相には関係ないから無視すると， H(z) は

H(z) = e (z−j) e (z+j)


√



√

2 ))
e (z−0.9( 2 +j 2 )) e (z−0.9( 2 −j
√





1

3



1

1

3

(15.26)3=  e (z−j)+ (z+j)− (z−0.9( 2 +j 2 ))−√(z−0.9( 12 −j 23 ))

√
√
3
3
1
1
)) −  (z − 0.9( − j))=  (z − j) +  (z + j) −  (z − 0.9( + j2
2
2
2(15.27)(15.28)に確かになるお．
やらない夫  (z − j) ってのは，複素平面で j から z まで引いた線が水平方向となす角度だ．そういう角度を，分子のものについては足し合わせて，分母のものについては引くことで  H(z) は計算される．

z を単位円上で動かしながらそういう量を考えていくことで，位相特性が得られることになる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章181

ディジタルフィルタの解析

Im∠ (z – j)∠ (z – 0.9(1 + j䌮)
3 / 2)z = ejωω

Re∠(z – 0.9(1 – j䌮)
3 / 2)∠(z + j)

15.3

安定性

やらない夫 ちょっとまた別の例を考えてみよう．

y[n] = 1.2y[n − 1] + x[n](15.29)

こんな差分方程式で表されるフィルタの特性はどうなるか．
やる夫 同じように考えればいいんだお?

Y (z) = 1.2z −1 Y (z) + X(z)1
Y (z) =X(z)1 − 1.2z −1(15.30)(15.31)1jω
だから伝達関数が H(z) = 1−1.2z
を代入して−1 になるお．周波数特性は z = eH(ejω ) =1
1 − 1.2e−jω(15.32)になるわけだお．
うーん，グラフ描くの面倒くさそうだから，計算機でプロットしてもらっていいかお?
やらない夫 いまの式の絶対値 |H(ejω )| をプロットするとこうなるな．
䢸䢷䢶

|H(ω)| 䢵
䢴

䢳

䢲

-π

0
ω

π

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章182

ディジタルフィルタの解析

やる夫 なるほど，直流成分は 5 倍くらいに増幅されて，周波数が増えると急激に増幅率が落ちていって，

ω = π 付近では 0.5 倍くらいに落ち着くって感じだお．
やらない夫 じゃあ実際にいくつか入出力関係を見てみるか．
πx[n] = cos 10
n の場合:
䢵䢲

䢴䢷

䢴䢲

x[n]
y[n]

䢳䢷

䢳䢲

䢷

䢲
䢲

䢳䢲

䢴䢲

䢵䢲

䢶䢲

䢷䢲

䢸䢲

䢶䢲

䢷䢲

䢸䢲

n
x[n] = cos π3 n の場合:
䢵䢲

䢴䢷

䢴䢲

x[n]
y[n]

䢳䢷

䢳䢲

䢷

䢲
䢲

䢳䢲

䢴䢲

䢵䢲

n
やる夫 えっ，こりゃ一体何なんだお…．盛大に発散してるお．
やらない夫 さっきの差分方程式をよく見てみると，y を計算するのに前の時刻の y の値を 1.2 倍している
わけだ．そんなことを毎時刻やってれば，そりゃ発散するだろ，常識的に考えて…．
やる夫 うーん，でも，ちゃんと z 変換で求めた H(z) に z = ejω を代入して周波数特性を計算したはずだ
お．その計算によると振幅は 0.5 倍からせいぜい 5 倍くらいの間になるはずで，こんな風に発散する
なんて聞いてないお．
やらない夫 そこに落とし穴がある．H(z) に z = ejω を代入して周波数特性を求めることができるのは，
1H(z) が単位円 z = ejω 上で収束するときだけだ．今は H(z) = 1−1.2z−1 だったわけだが，これは z変換表によると，時間領域の h[n] = 1.2n u0 [n] に対応するんだった．一方で，h[n] の z 変換である

Z[h[n]] =∞

1.2n z −n(15.33)n=0
1
が 1−1.2z−1 に収束するのは |z| > 1.2 のときだけだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章183

ディジタルフィルタの解析

やる夫 あー，単位円は |z| = 1 だから，収束範囲には入ってないお．
やらない夫 そういう場合は H(z) に z = ejω を代入して考えることに意味がない．というか，h[n] の離散
時間フーリエ変換がそもそも収束しないわけで，周波数特性を考えること自体が不可能だ．
やる夫 意味のない計算をしていたってことだお…．
やらない夫 そうならないように常に気をつけておく必要があるわけだな．
やる夫 でもどうやって気をつければいいんだお? 何かうまく判断する方法はないのかお?
やらない夫 ああ，実はある．今みたいに出力が発散してしまうような場合，そのフィルタは不安定であるという．不安定なフィルタを避けなければいけない．言い換えれば，フィルタの安定条件がわかれば，それが「うまく判断する方法」だ．
やる夫 なるほど，じゃあ，それを教えて欲しいお．
やらない夫 まあ慌てるな．順番に話していこう．まずは安定性の定義からだ．
やる夫 制御工学でも安定性って概念は出てきたお．それとは違うのかお?
やらない夫 本質的にはほぼ同じことなんだが，違う定義をしてやらなくてはならない．何故かというと，制御ってのは基本的には何らかの量を目標値に近づけようとするものだ．だから目標値からの偏差が時間とともに 0 に十分近づくことを安定性の定義とすればいい．もちろん「十分近づく」の意味がいろいろとありえるのでややこしいんだが，大筋としてはそういうことだ．
やる夫 あー，そうか，信号処理の場合は目標値ってのがないから同じようには考えられないお．
やらない夫 だから，信号処理の場合はこんな風に安定性を定義することが多い．任意の有界な入力，つまり|x[n]| < ∞ に対して，出力も有界であるならば，つまり |y[n]| < ∞ ならば，そのシステムは安定であると定義する．特に区別する場合は，これを有界入力有界出力安定性，略して BIBO (Bounded-Input

Bounded-Output) 安定性と呼ぶ．
やる夫 何か急に難しくなったお．
やらない夫 いや，言葉がイカツいだけで，大して難しい話じゃないぞ．つまり，無限大に発散しない入力を入れている限りは，出力も発散しないようにしろってことだ．
やる夫 ああ，まあ，そう言われればわかるお．でも，発散しないあらゆる入力についてテストするなんて
現実的には無理だお．
やらない夫 ああ，そりゃそうだが，その点は心配無用だ．実際にあらゆる入力をテストしなくても，インパルス応答が以下の条件を満たせば安定になることを証明できる．
∞
|h[n]| < ∞(15.34)n=−∞実はこれは必要十分条件になっている．つまり，安定ならば必ずこの条件が成り立つことも示せる．
やる夫 えーと，インパルス応答の絶対和が発散しないのが条件だってことだお．
やらない夫 まず必要性はほとんど明らかだろう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章184

ディジタルフィルタの解析

やる夫 まあ，絶対和が発散するようなものたたみこんだら出力は簡単に発散しちゃうと思うお．具体的には，えーと，y[n] =k h[k]x[n − k] なわけだから，例えば x[−k] = sgn h[k] になるように入力を選

ぶと

y[0] =

h[k]x[0 − k](15.35)h[k] sgn h[k](15.36)|h[k]|(15.37)

k

=


k

=


k

となって出力が発散するお．だからk |h[k]| が発散しないことは BIBO 安定のために必要だお．

やらない夫 十分性も同じようにたたみこみの計算から示せる．入力が有界ということは何か有限な値 x̄ があって |x[n]| < x̄ だってことだ．このとき出力の絶対値は|y[n]| = |

h[k]x[n − k]|(15.38)|h[k]| |x[n − k]|(15.39)

k

≤


k

≤ x̄



|h[k]|(15.40)k<∞(15.41)になるので有界だ．
やる夫

k |h[k]| が発散しなければ，BIBO 安定のためには十分だってことだお．

やらない夫 このことから容易にわかる事実は，FIR フィルタは常に BIBO 安定だということだ．
やる夫 んー，ああ，インパルス応答が有限の長さしか続かないんだから，まあ確かに絶対和は発散しない
お．ということは，IIR フィルタだけ注意すればいいんだお．
やらない夫 それからもう一つ．因果的なシステムを考えている場合は，BIBO 安定性を極の配置から判定することができる．
やる夫 ん? どうやって判定するんだお?
やらない夫 すべての極が単位円の内側にあることが，BIBO 安定であることの必要十分条件だ．
今までの具体例を見てみると，最初にやった 2 つの例は極がすべて単位円内だ．実際フィルタとして正しく動作していた．
しかしついさっきの例は極が z = 1.2 にあるので単位円外だ．つまりこのシステムは BIBO 安定ではない．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章185

ディジタルフィルタの解析

Im
j

1

Re

やる夫 あー，だから出力が発散してしまったんだお．なるほどこれなら簡単だけど，どうしてこんな単純な方法で判断できるんだお?
やらない夫 完全な証明というわけではないが，直観的に説明しておこうか．伝達関数の極ってのがいったい何だったかというと，インパルス応答を

h[n] = (w1 αn1 + w2 αn2 + · · · + wn αnN )u0 [n](15.42)てな具合に指数関数に分解したときの α1 , · · · , αN の値，これらが極だ．
やる夫 そうだったお (p. 169) ．ただし何か，重解がないこととか分子と分母の次数がどうのこうのとかい
ろいろ条件があった気がするお．
やらない夫 ああ，完全な証明じゃないといったのはその辺の事情だが，話の大勢に影響がないのでこのケースで続けよう．それらの条件が満たされない場合については別途議論する (p. 223) が，結論は変わらない．
で，それらの条件が満たされる場合については，既にほとんど結論にたどり着いている．極がすべて単位円内にあるってことは，今の分解されたインパルス応答についてはどういうことになる?
やる夫 |αi | < 1 なんだから，どの指数関数も時間とともに減衰していって収束するお．
やらない夫 その場合，絶対和∞nn=0 |αi | は，公比の絶対値が 1 未満の等比数列の和なので，有限の値に落ち着く．インパルス応答はこれらの指数関数を高々 N 個足し合わせたものなので，やっぱり絶対
和は有限で押さえられる．
やる夫 逆に，極が 1 個でも単位円外にあったら，その分の指数関数は発散するので，インパルス応答の絶対和は収束しようがないお．
やらない夫 というわけで，極がすべて単位円内にあることが安定性の条件になっていることが，大雑把ではあるけど理解してもらえたんじゃないかと思う．
やる夫 …んー，何か制御工学で習った話と似ているお．制御でも，連続時間システムのインパルス応答を
ラプラス変換して，その極の配置から安定性を判断できたんだったお．えーと，すべての極の実部が負であることが安定条件だったお．
やらない夫 いいところに気づいた．z = es であることを思い出すと，その辺はさらに明確になるぞ．
やる夫 そうだったお．z = es で，s 領域の左半平面は z 領域の単位円内に移されるんだったお．さっきの話とぴったり符合しているお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章186

ディジタルフィルタの解析

s㡿ᇦ

z㡿ᇦ

Im

Im
j

Re

1

Re

やらない夫 結局，制御工学で考えた安定性も，これまで説明してきた BIBO 安定性も，本質的なところは同じだってことだ．

15.4

線形位相特性やる夫 ディジタルフィルタの周波数特性っていいながら，ここまでは振幅特性ばっかり見てきた気がする
お．位相の方は気にしなくていいのかお?
やらない夫 もちろん大いに気にする必要あるぞ．そもそも位相特性ってどういう意味だった?
やる夫 ある周波数の単振動を入力したとき，その位相がどのくらいずれて出てくるかを表すものだったお(p. 90) ．
やらない夫 そうだな．位相を時間に換算して，入力信号と出力信号の間にどれだけ時間のずれがあるかを表していると考えてもいい．特に因果的 (p. 129) なシステムの場合は，システムを通過することによる周波数成分ごとの時間遅れだと考えることができる．因果的な場合，出力が入力より進んでいることはあり得ないからな．
やる夫 ていうか，遅れなんてないに越したことはないわけだお．遅れ時間が 0，つまり位相特性は常に 0になるようにしよう，ってことじゃダメなのかお?
やらない夫 そういう特性のことを零位相特性という．ある意味理想の特性なわけだが，実現には大きな制約がある．まずそのことを見ていこう．
インパルス応答が h[n] であるシステムを考えよう．インパルス応答を離散時間フーリエ変換したものが周波数特性 H(ω) だ．このシステムが零位相特性を持つとはどういうことだろう?
やる夫 すべての ω について  H(ω) が 0 だってことだお．だから，H(ω) は実数値の関数だってことになるお．
やらない夫 よし，じゃあ次の質問だ．H(ω) が実数値であるためには，h[n] はどういう関数じゃないとい
けないだろうか?
やる夫 え? 何かつかみどころのない質問だお．
やらない夫 わかりにくければ，時間領域と周波数領域を逆にして類推してみるといい．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章187

ディジタルフィルタの解析

やる夫 えー，どういうことだお．逆にするってことは，時間領域で実数値の信号は周波数領域でどうなるかってことかお? …あー，複素指数関数型のフーリエ級数の話のときにそんなことを考えた (p. 28)
気がするお．実数値関数 f (t) をフーリエ級数展開すると，正の周波数と負の周波数成分どうしで虚数部分を打ち消しあわないといけないから，振幅は偶関数で，位相は奇関数じゃないといけなかった
んだお．
やらない夫 その話を，時間-周波数をそっくりひっくり返して考えるといい．
やる夫 ということは，零位相特性を持つということは，インパルス応答 h[n] の振幅が偶関数で，位相が奇関数だってことになるかお．…って，h[n] の振幅と位相って何だお?
やらない夫 いや，別に，一般には時間信号だって複素数値を取っていいんだから，振幅と位相があっても構わないだろ．まあ多くの応用では実数値の時間信号を考えることが多いわけで，その場合に限定して考えると，零位相特性を持つための条件は h[n] が偶関数であることだということになる．

h[n]
n
0
やる夫 なるほど，インパルス応答が時刻 0 を境に左右対称じゃなきゃいけないわけだお．…ん，つまり

n < 0 のでも値を持つようなインパルス応答じゃないとダメだってことかお．
やらない夫 そういうことだ．つまり，因果的なシステムは零位相特性を持つことができない．厳密にいうと例外があって，h[n] = δ[n] の場合，あるいはその定数倍の場合だけは因果的でありながら偶関数にすることができる．まあ何もしないかせいぜい定数倍するだけのフィルタなので，零位相特性なのは当たり前だな．
やる夫 そんなフィルタ面白くも何ともないお．
やらない夫 だから，実質的には，零位相特性を持つ因果的なフィルタは作ることができないと考えてしまっていい．
やる夫 なるほど，そりゃ残念だお．
やらない夫 というわけで何か別のものを考えなければいけないわけだ．多くの場合に次善の策であると考えられているのは，すべての周波数成分が等しい時間遅れを持つような位相特性だ．
やる夫 遅れを 0 にするのはあきらめるわけだお．で，各周波数成分の時間遅れが等しいと何が嬉しいのかお?
やらない夫 波形が歪むのを避けることができる．例えば低域通過フィルタを作ったとしよう．そのフィル
タを十分に通過できるような，低周波成分のみからなる信号を入力したとしよう．当然，入力信号にできるだけ近い信号が出力されて欲しいわけだ．
やる夫 そりゃそうだお．低周波の信号はそのまま通してくれなきゃ低域通過フィルタの名がすたるお．
やらない夫 ところが，そのフィルタを通すことで各周波数がバラバラに遅れてしまうと，出力の波形はバラバラに遅れたものの重ね合わせだから，元の波形とは違った歪んだものになってしまう．
やる夫 あー，そっか，時間遅れが一定であれば，どの周波数も同じだけずれてから重ね合わされるので，波形は，遅れはするけど少なくとも歪みはしないんだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章188

ディジタルフィルタの解析

やらない夫 零位相特性を持つようなインパルス応答 hz [n] を nd だけシフトして hz [n−nd ] にすれば，n < 0
で値を持たなくなって因果的になるとしよう．あらゆる周波数成分に一定の遅れ nd を持たせるってことだ．

h[n – nd]n0nd

周波数領域では，時間シフトの公式 (7.3) から，零位相の周波数特性 Hz (ω) に e−jωnd をかけてH(ω) = e−jωnd Hz (ω) という周波数特性を持つことになる．このような特性のことを，線形位相特性と呼ぶ．
やる夫 んー，何が線形なんだお?
やらない夫 周波数特性の偏角  H(ω) =  {e−jωnd Hz (ω)} = −nd ω のことだな．周波数 ω の成分が，位相としてどれだけずれて出てくるかを表している．これが ω に対して線形に変化するということだ．

∠ H(ω)ω−ππ∠H(ω) = – nd ω
やる夫 なるほど，位相特性をグラフに描くと傾き −nd の直線だってことだお．この傾きが，時間領域での遅れ時間を表すんだお．
やらない夫 ちょうど時間領域に言及したところで，線形位相特性の場合のインパルス応答の形状について
もう少し考えておこう．どういう形状になるかというと，さっき見たとおり零位相特性を持つようなインパルス応答を時間シフトするんだった．
やる夫 零位相特性の場合インパルス応答は偶関数で，それを時間シフトして因果的なインパルス応答にしてやるんだったお．
やらない夫 このことからわかるのは，線形位相特性を持つということは，インパルス応答が必ず左右対称な形状をしているということだ．
やる夫 まあそりゃそうだお．対称の軸が原点じゃなくなるだけで，対称な形状はそのままだお．
やらない夫 そしてそこからわかる重要な帰結は，因果的な IIR フィルタは線形位相特性を持ち得ないということだ．
やる夫 えーと，あー，そうか，因果的な IIR フィルタのインパルス応答は時刻 0 より前では値が 0 で，でも時刻が無限大に進んでもえんえんと値が残るんだお．そんなもん左右対称になりようがないお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章ディジタルフィルタの解析

15.5

群遅延

189

やる夫 線形位相特性を持たせることができないってことは，IIR フィルタって使い物にならないのかお?
やらない夫 そんなことはないぞ．全周波数で完全に線形位相でなくても，必要な帯域でだけ近似的に線形位相と見なせれば十分な場合もあったりする．例えば周波数選択フィルタの場合，信号を通過させる帯域だけ考えれば十分なわけだ．
やる夫 ああ，確かに阻止される帯域の出力信号は，波形が歪んでようが大して問題じゃないお．
やらない夫 さらに，応用によっては，個々の周波数成分の遅延はそれほど重要じゃなく，むしろ群遅延と呼ばれるものの方が重要な場合がある．
やる夫 ん? どういうことだお?
やらない夫 具体例で考えよう．前に，振幅変調 (p. 81) という概念について説明したと思う．
やる夫 覚えてるお．時間シフトの公式を，時間と周波数を逆にして考えたものだったお．
やらない夫 時間信号 x[n] に ejωc n をかけると，周波数領域では X(ω) から X(ω − ωc ) に周波数シフトするんだった．

x[n]nx[n] ejωcnnX(ω)

X(ω − ωc)ω0

ωc

やる夫 例えば音声信号 x[n] を周波数 ωc の搬送波に乗せて通信する場合なんかを表しているんだったお．
やらない夫 変調された後の信号 x[n]ejωc n には，周波数 ωc やその近くの周波数成分が含まれている．この信号を何らかのフィルタに通すとそれらの周波数成分がそれぞれ遅れて出てくることになるが，その遅延にはあまり興味はない．
やる夫 ん? そうなのかお?
やらない夫 いま送ろうとしている音声信号は，変調信号の振幅の変化として表現されているわけだ．その振幅変化の波形，つまり包絡線がどのくらい遅れるかの方がずっと重要だ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章190

ディジタルフィルタの解析H(ω)ໟ⤡⥺Ἴᙧ䛾㐜䜜
ໟ⤡⥺
n

n

n=0

n=0

やる夫 あー，まあ確かにそうかも知れないお．こういう場合に搬送波の位相がどのくらい遅れているかは割とどうでもよさそうだお．
やらない夫 こういう状況は，通信のために変調している場合だけに限らない．例えば 440 Hz の音叉をポーンと鳴らしたときの音声信号を考えよう．このときの信号は， 440 Hz のサイン波の振幅，つまり音量が，音叉を叩いた瞬間に急激に立ち上がって，その後ゆっくりと減衰していくような波形になるだ
ろう．

n

やる夫 あー，そうか，音叉の音量変化の波形が x[n] で，440 Hz のサイン波が搬送波だとすれば同じ話になるお．この場合も，フィルタを通したときに重要なのは包絡線の遅れの方で， 440 Hz の振動の位
相のずれの方じゃないお．
やらない夫 群遅延ってのは，こういう場合に包絡線の波形がどのくらい遅れるかを表す量だ．結論から言ってしまうと，群遅延は位相特性曲線の傾きで表される．正確にいうと傾きにマイナスをつけたもの，
つまり群遅延 τgd は

τgd (ω) = −d H(ω)dω(15.43)と表すことができる．
ついでに，これまで考えてきた，各周波数成分がそれぞれどのくらい遅れるかという意味での遅れ時間

τpd (ω) = −



H(ω)
ω

(15.44)のことを位相遅延と呼んだりする．線形位相の場合は，群遅延も位相遅延も等しい定数だ．一般にはいずれも ω の関数になる．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章191

ディジタルフィルタの解析∠ H(ω)

ω

ωc
π

−π
H(ωc)

ഴ䛝: -τpd(ωc)ഴ䛝: -τgd(ωc)

やる夫 あれ? ω によって変わるんなら，包絡線波形の遅れ時間ってのはどの ω のときの値を考えればいいんだお?
やらない夫 ああ，それは，搬送波周波数 ωc のときの値を使うことになる．
やる夫 ふーん，そういうもんなのかお．ていうか何故そうなるのかがわからないから，理解のしようがな
いお．直観的にでいいから説明してくれお．
やらない夫 …うーん，これに関しては直観的に説明する方がむしろ難しいな．ちゃんと数式を展開する方が説明しやすい．
やる夫 (あー，またヤブヘビをつついた気がするお)やらない夫 周波数 ωc の搬送波が時間信号 x[n] で振幅変調されているとしよう．さっきから話している通り，そのスペクトルは X(ω − ωc ) だ．
やる夫 X(ω) が ωc だけ周波数シフトされたんだお．
やらない夫 この信号をあるフィルタ H(ω) に通す．位相特性にだけ注目したいので，振幅特性は常に 1 だとしよう．位相特性は，搬送波周波数 ωc のときに  H(ωc ) = −φc で，その周囲の X(ω − ωc ) の成分が存在する範囲では傾き −τc で一定と見なせるとしよう．
∠ H(ω)ωcω–φc∠ H(ω) = – τc ω
やる夫 えーと，ωc の近辺では線形位相と見なせるってことかお?
やらない夫 いや，そうとは限らない．位相特性の ωc の近辺の直線部分を延長したときに原点を通るなら
ば，確かにその通りだ．ただし今はこの範囲で「傾きが」一定だといっているだけなので，延長線が原点を通る保証は全くない．
やる夫 そっか，なので，この範囲の位相遅延は必ずしも一定というわけではないんだお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章192

ディジタルフィルタの解析

やらない夫 そういうことだ．それにも関わらず，包絡線の波形は歪まずに τc 遅れるだけになることをこれから示そう．
まず，いま着目している ωc の近くの範囲で，このフィルタの周波数特性はH(ω) = e−j(φc +(ω−ωc )τc )(15.45)と表せる．
やる夫 いきなり何かややこしいお．えーと，振幅特性が常に 1 ってのは満たしてるお．ω = ωc のときの位相はというと H(ωc ) = e−jφc になっているのでこれも大丈夫だお．で，−(φc + (ω − ωc )τc ) を ωで微分したら −τc になるので，この近辺で傾きが −τc だってのも OK だお．合ってそうだお．
やらない夫 変調信号 x[n]ejωc n をこのフィルタに通す．その出力 y[n] を周波数領域で見ると，

Y (ω) = H(ω)X(ω − ωc )(15.46)= e−j(φc +(ω−ωc )τc ) X(ω − ωc )=e−jφc −j(ω−ωc )τce(15.47)X(ω − ωc )(15.48)になる．
やる夫 うー，面倒くさそうな式だお．
やらない夫 一つずつ見ていけばそうでもないぞ．まず最初の e−jφc は ω を含んでない，ただの定数倍だ．
残りの部分は複雑そうに見えるが，

e−jωτc X(ω)(15.49)を ωc だけ周波数シフトしたものだと考えればいい．
やる夫 ふーん，そう思ってみるとそんなに複雑でもなかったお．
やらない夫 さて，これを時間領域で見てみよう．定数倍の e−jφc はそのままだ．ωc だけ周波数シフトした分は，時間領域では ejωc n をかけることに対応する．そして，e−jωτc X(ω) は時間シフトの公式か
ら x[n − τc ] になる．これらをまとめると

y[n] = e−jφc ejωc n x[n − τc ](15.50)という信号がフィルタから出てくることになる．
やる夫 あー，x[n] が τc だけ遅れてるお．
やらない夫 そこが核心だ．包絡線波形 x[n] を τc 遅らせたものを搬送波 e−jφc ejωc n = ej(ωc n)−φc に乗せたものが出力されるということだ．搬送波の位相が φc だけずれているが，そっちには興味はない．包
絡線波形が群遅延 τc = τgd (ωc ) の分だけ遅れることが確認できたわけだ．
やる夫 …あれ? ちょっと待って欲しいお．x[n] って離散時間信号なんだお? τc が整数じゃないときは，

x[n − τc ] ってどうなるんだお?
やらない夫 鋭いな．その通り，x[n − τc ] という表記は τc が整数のときしか意味を持たない．が，一般に群遅延は実数なので困ったことになる．
詳しい説明は省くが，こんな風に理解して欲しい．離散時間信号 x[n] を，サンプリング定理のときに出てきた理想的低域通過フィルタに通して，いったん連続時間信号 x̃(t) を作る．次に，これを τcだけ遅らせた x̃(t − τc ) を作る．最後にこれをサンプリングし直す．このようにして得られる離散時
間信号のことを x[n − τc ] という記法で表すと約束することにしよう．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 15 章193

ディジタルフィルタの解析

やる夫 んー，つまり x[n] を，何か背後にある連続時間信号をサンプリングしたものだと考えて，遅延させる必要があるときはその連続時間信号の方を遅延させるって話になるお．天下りの説明だからちゃんとは理解できないけど，辻褄は合ってそうな気がするお．
やらない夫 ちゃんと理解したかったら，今のような手順で遅延させた信号のスペクトルと，元の信号のスペクトルに e−jωτc をかけたものとが一致することを計算で確かめてみるといい．
さて，また長くなりそうなので，この辺で切り上げてまとめよう．
• ディジタルフィルタの周波数選択特性は，周波数特性 (= 周波数応答) のうち特に振幅特性(= 振幅応答) を調べることで把握できる．
– 周波数 ω の単振動は，振幅が |H(ω)| 倍されて出力される．
• 位相特性 (= 位相応答) を調べることで，入力信号がどのくらい遅れて出てくるかを把握できる．

– − H(ω)/ω を位相遅延といい，周波数 ω の単振動がどのくらい遅れて出力されるかを表す．

– −d H(ω)/dω を群遅延といい，周波数 ω の搬送波を振幅変調した際の包絡線波形がどのくらい遅れて出力されるかを表す．
– 位相遅延 = 群遅延 = 一定 であるような特性を線形位相特性と呼ぶ．線形位相特性を持つにはインパルス応答が左右対称な形状をしていなくてはならず，したがって因果的な IIR フィルタは線形位相特性を持ち得ない．

• 伝達関数の極と零点の配置を考えることで，フィルタの大まかな特性を把握できる．
– z 領域の単位円の近くに零点があれば，振幅特性はその偏角の周波数の付近で小さくなる．特に単位円上に零点があるなら，その周波数で振幅特性が 0 になる．

– z 領域の単位円の近くに極があれば，振幅特性はその偏角の周波数の付近で大きくなる．

• 入力が有界である限り出力も有界でことが保証されるフィルタは BIBO 安定であるという．
– FIR フィルタは常に安定である．
– 因果的なフィルタが BIBO 安定であるための必要十分条件は，すべての極が単位円の内側にあることである．

– 不安定なフィルタの伝達関数 H(z) に z = ejω を代入して形式的に H(ejω ) を求めても，周波数応答にはならない．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08



194

第 16 章 ディジタルフィルタの設計
16.1

フィルタの仕様と設計方針

やらない夫 ディジタルフィルタについていろいろと考えてきたわけだが，要するに，フィルタの伝達関数が与えられれば周波数特性とか安定性とかいった特性を知ることができるってことだった．
で，いよいよその逆の話だ．望ましい周波数特性が与えられたときに，そのような特性を実現するフィルタはどうやって作ればいいかという問題を考える．フィルタの設計問題ってやつだな．
やる夫 んー，そんな改まって考えなきゃいけない話かお? 周波数特性 H(ω) が与えられてるんだから，離散時間逆フーリエ変換すればインパルス応答 h[n] がわかるお．で，それをたたみこむ y[n] = h[n] ∗ x[n]ってフィルタを作ればそれで終わりだお．簡単な話だお?
やらない夫 そう思うなら実際に具体例を計算してみようか．最も基本的なものってことで，理想的低域通過フィルタ

G−ωc ,ωc (ω) =

1, |ω| ≤ ωc

(16.1)

0, otherwise

を考えよう．周波数 ωc 以下の低域は完全に通すが，それより上の周波数は完全に遮断する．周波数特性が常に実数値を取っているので零位相特性になっている．
| G-ω ,ω (ω) |
c c

ω
−π

−ωc

ωc

π

ωc のことを遮断周波数とか，カットオフ周波数とか呼んだりする．ディジタルフィルタを考えているので，角周波数としては −π 〜 π の範囲しか考えないことに注意しておこう．遮断周波数は ωc < πの値のみ取れるってことだな．
やる夫 離散時間逆フーリエ変換してみるお．
 π
1−1DTFT [G−ωc ,ωc (ω)] =G−ωc ,ωc (ω)ejωn dω
2π −π
 ωc
1
=
ejωn dω2π −ωc(16.2)(16.3)(16.4)ってなるから，あ，なんだ，計算上は式 (3.31) で計算した逆フーリエ変換と一緒だお．あのときの aが ωc になって，t は n になるだけだから結局

DTFT−1 [G−ωc ,ωc (ω)] =になるお．

1sin ωc nπn(16.5)

第 16 章195

ディジタルフィルタの設計

やらない夫 sinc 関数を離散化したものだな．グラフはこんな形だった．本当は離散的に描かないといけな
いが，面倒なので連続的に描いている．以下同様だ．

sin ωcn / πnn

さて考えてほしいんだが，これをどうやって実際にたたみこむ?
やる夫 どうやってって，そんなもん公式通りたたみこめばいいんだお．
1sin ωc n ∗ x[n]y[n] =
πn


∞

1
=
sin ωc m x[n − m]πmm=−∞(16.6)(16.7)…あ，そうか，無限に総和とらなきゃならないお．
やらない夫 その通り．だから有限の時間では計算できない．ついでに言っておくと，sinc 関数は時刻が負のときも値を持っている．つまりこのフィルタは 因果的 (p. 129) ではない．
やる夫 あー，てことは，仮に無限の計算能力を持っていたとしても，リアルタイムに動作するフィルタとしては動かせないんだお．ていうか，よく考えるとそもそも零位相特性の因果的フィルタは作れないんだったから当たり前だお．
やらない夫 といった辺りが最初の疑問に対する答えだ．周波数特性を単純に離散時間逆フーリエ変換しても，物理的に実行可能なフィルタが得られるとは限らないし，まあ普通はそううまくいかない．
やる夫 じゃあどうすればいいんだお?
やらない夫 それが今回の話題なわけだが，具体的な方法は，それこそ数え切れないほど提案されている．
そのうち本当に基本的なものだけを簡単に説明していこうと思う．
やる夫 やらない夫の言う「簡単に」は信用できないお．
やらない夫 …ああ，確かにそうかも知れん．
やる夫 否定して欲しかったお．
やらない夫 基本的なものといっても，いくつかの方針に分かれる．最初の，そしておそらく最大の分かれ目は，FIR にするか IIR にするかだ．
やる夫 えーと，インパルス応答が有限で終わるか，無限に続くかだったお．
やらない夫 さっきの理想的低域通過フィルタの例でいくと，本来は無限に続くインパルス応答を何とか誤魔化して有限で打ち切ると FIR フィルタになる．結果として得られるフィルタ特性は，もちろん本
来欲しかったものとは多かれ少なかれ異なったものになる．
やる夫 同じ打ち切るんでも，できるなら長く取る方が本来の特性には近づけられそうだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章196

ディジタルフィルタの設計

やらない夫 基本的にはその通りだ．FIR フィルタってのは時間領域の差分方程式で

y[n] =

Mh[m]x[n − m],(12.4)

m=0

あるいは伝達関数で表すなら

H(z) =

Mh[n]z −n(16.8)

n=0と書けたわけだが，この定数 M をフィルタの次数という．次数が大きいほど打ち切りの影響は小さくできる．しかしその分，過去の入力値 x[n − m] をたくさん記憶しておかないといけなくなるし，もちろん計算量も増える．それに，初期状態から始めてフィルタが定常的な状態になるまでに長い時間がかかるようになる．
やる夫 ていうことは，できるだけ次数は小さく取りたいわけだお．でもそうすると特性が要求仕様からずれてってしまうお．
やらない夫 なので，特性をどのくらいまでなら妥協できるかを明確にしておくことが重要だ．妥協できる範囲でできるだけ小さな次数を選ぶ．
やる夫 インパルス応答を有限で打ち切るから妥協が必要なんだお? じゃあ，IIR フィルタならインパルス応答を打ち切らなくていいんじゃないかお?
やらない夫 打ち切る必要はないが，だからといって所望のインパルス応答を必ず表現できるわけじゃない．

IIR フィルタは差分方程式でN


ak y[n − k] =

k=0

M


bk x[n − k](12.15)k=0

あるいは伝達関数で表してH(z) =

M−k
k=0 bk zN−k
k=0 ak z(16.9)と書けるわけだが，N や M が有限じゃないとやっぱり実行できない．
やる夫 あー，IIR フィルタのインパルス応答が無限に続くからといって，無限に続くどんなインパルス応答でも実現できるというわけじゃないんだお．
やらない夫 次数が小さいとやっぱり表現できるインパルス応答の自由度が小さいので，仕様として与えられた特性そのものを実現するのは難しくなる．その辺の事情は FIR フィルタと同じだ．
やる夫 やっぱり妥協が必要だってことだお．でも，具体的にどんな点を妥協をすればいいんだお?
やらない夫 そうだな，ざっくり言うと 2 点ある．1 つめは遮断特性だ．理想的なフィルタ特性では，遮断周波数の前後で「完全に通過」「完全に阻止」としたいわけだが，後で見るように実際には「通過域」
から「阻止域」まで徐々に振幅特性が落ちていく区間が発生してしまう．フィルタの次数が小さいと，この区間を小さくするのが難しい．遮断特性を急峻にしにくいという言い方をする．
| H(ω) |

ω
−π

−ωc

ωc

π

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章197

ディジタルフィルタの設計

やる夫 ふーん，つまり遮断特性が鈍るのをどのくらいまで許容できるかってのが第 1 の妥協点になるわけだお．
やらない夫 2 つめはリップル特性と呼ばれるものだ．理想的には，通過域では振幅を完全に 1 に，阻止域では完全に 0 にしたい．しかし実際には，これも後で実例を見るが，振幅が波打ってしまったりする．
この振幅の波のことをリップルと呼んでいる．あるいは，リップルの振幅の大きさのことをリップルと呼ぶ場合もある．

| H(ω) |

ω
−π

−ωc

ωc

π

やる夫 リップルも小さい方が嬉しいけど，どのくらいまで発生してもいいかってのが妥協点になるわけだお．
やらない夫 フィルタの仕様に関する用語をまとめておこう．低域通過フィルタの場合だけ説明するが，ほかのフィルタでも同じように使う．

| H(ω) |㏻㐣ᇦ䝸䝑䝥䝹
1
1/䌮2

㐽᩿࿘Ἴᩘ
−π

㏻㐣ᇦ

㜼Ṇᇦ
䝸䝑䝥䝹
㜼Ṇᇦ

π

ω

㑄⛣ᇦ
通過域と阻止域それぞれで許容できるリップルの大きさを，それぞれ許容通過域リップル，許容阻止域リップルと呼ぶ．で，今まで通過域とか阻止域とかをちゃんと定義せずに使ってきたが，振幅の変動が許容通過域リップル内に収まっている帯域が通過域だ．同じように，許容阻止域リップル内に収まっている帯域を阻止域と呼ぶことにする．残った部分が遷移域ということになる．
やる夫 遷移域で徐々に振幅が落ちていくと，遮断周波数って曖昧にならないかお?
やらない夫 曖昧だと困るので，普通は「振幅の 2 乗が半分になる周波数」と定めることが多い．
「振幅が√1/ 2 倍になる周波数」と言い換えてもいい．
やる夫 つまり，こういう遮断特性とかリップル特性とかをどのくらい妥協できるかを考えて，その範囲でできるだけ次数の小さいフィルタを作ろうってことだお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章198

ディジタルフィルタの設計

やらない夫 そういうことになるな．もちろん，FIR なのか IIR なのかとか，どういう設計法を使うのかとかによってそれらの特性への影響も変わってくるので，それぞれのケースでよく考える必要がある．
やる夫 んー，そういえば，FIR にするか IIR にするかが大きな分かれ目だっていう話の途中だったお．いまだにその決め手がわからないままだお．
やらない夫 後で実例を見たときに確認して欲しいんだが，大雑把に言うと，同じ次数なら IIR フィルタの方が FIR フィルタよりも急峻な遮断特性を得やすい．なので，その点では IIR フィルタの方が有利だ．
やる夫 じゃあ FIR フィルタなんて必要ないのかお?
やらない夫 そんなことないぞ．前回の話を思い出して欲しいんだが，IIR フィルタには線形位相特性を持たせることが絶対にできない．だから，線形位相特性が必要なときは FIR フィルタを選ばざるを得ない．
やる夫 あー，そうか，波形が歪まないことが重要な場合は FIR フィルタを使うことになるわけだお．
やらない夫 そのほかにも，FIR フィルタが常に安定だという点が設計上の利便性につながる場合があった
りとか，数値計算上の誤算の影響も FIR の方が受けにくかったりとか，いろいろな事情が FIR フィ
ルタを選ぶ理由になる．まあその辺の詳しい話は教科書で勉強してもらうとして，以降では FIR フィルタ，IIR フィルタのごく基本的な設計法を紹介しようと思う．

16.2

FIR フィルタの窓関数設計

やらない夫 じゃあまず FIR フィルタからだ．要求仕様として与えられた周波数特性 Hd (ω) を離散時間逆フーリエ変換したときに，仮に有限長のインパルス応答が得られて，しかもその長さが十分に短いな
ら，そのままたたみこめば FIR フィルタの出来上がりだ．しかし一般にそうはならないというのはさっきの例で見た通りだ．
やる夫 そうだったお．理想的低域通過フィルタはインパルス応答が sinc 関数で無限に続いたお．

| Hd(ω) |

ω
−π

−ωc

ωc

π

IDTFT
hd[n]

n

やらない夫 例としてはちょうど良いので，その理想的低域通過フィルタの場合で考えていこう．ともかく
インパルス応答を何とか有限長で打ち切ってやらなくてはならないわけだ．さてどうするかだが，まずは安直に時刻 |n| ≤ L の範囲だけ残して，それ以外はばっさり捨ててみよう．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章199

ディジタルフィルタの設計

h[n]

n
L

–L

やる夫 本当に安直だお．ていうかそれじゃそもそも因果的なフィルタにすらできてないお．
やらない夫 因果性のことはしばらく置いておこう．ともかくこれで，有限長のインパルス応答が作れて，非因果的ではあるが FIR フィルタとして実行できる．それから，このインパルス応答は偶関数なので，零位相特性になっていることにも注意しておこう．
やる夫 ああ，|n| ≤ L ってなふうに原点を中心とした区間を切り出したのはそれが理由かお．
やらない夫 さて，こんな風に安直に作った FIR フィルタは，実はある意味で最適なものだってことを示す
ことができる．
やる夫 最適? ある意味で? 何のことだお?
やらない夫 理想的な周波数応答 Hd (ω) と，実現できる周波数応答 H(ω) の平均 2 乗誤差 π
J=|Hd (ω) − H(ω)|2 dω(16.10)−πを考えよう．H(ω) をいろいろと変化させたときに J が最小になるもの，これが最適な H(ω) だ．
やる夫 えー，H(ω) = Hd (ω) で最小値 J = 0 になるんじゃないかお?
やらない夫 いやいや，そういうことじゃなくて，あくまでインパルス応答が |n| > L で 0 になるようなもののみを考えて，そのうちで J が最小になるってことだ．
DTFTh[n] −→ H(ω) where h[n] = 0 (|n| > L)(16.11)を満たす H(ω)，あるいは h[n] の範囲で考えるってことだな．
やる夫 あー，そういうことかお．
やらない夫 理想的な周波数応答を離散時間逆フーリエ変換したものを hd [n] と書くことにしよう．
DTFT

hd [n] −→ Hd (ω)(16.12)

すると，
DTFT

hd [n] − h[n] −→ Hd (ω) − H(ω)(16.13)の関係があるのはわかるか?
やる夫 えーと，離散時間フーリエ変換の線形性から明らかだお．
やらない夫 ここでパーセバルの等式 (9.3) から
∞

n=−∞

|hd [n] − h[n]|2 =

1
2π

 π
−π

|Hd (ω) − H(ω)|2 dω(16.14)

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章200

ディジタルフィルタの設計であることを使うと，

J = 2π∞|hd [n] − h[n]|2

n=−∞

= 2π



|hd [n] − h[n]|2 + 2π

|n|≤L

= 2π



(16.15)|hd [n] − h[n]|2(16.16)|hd [n]|2(16.17)|n|>L|hd [n] − h[n]|2 + 2π

|n|≤L



|n|>L

と書ける．
やる夫 えーと，パーセバルの等式で周波数特性の平均 2 乗誤差をインパルス応答の平均 2 乗誤差に置き換
えてるんだお．で，えーと，あ，総和の範囲を |n| ≤ L とそれ以外に分けたんだお．
やらない夫 |n| > L についての総和の部分は定数なので，|n| ≤ L についての総和の部分が最小になるときに J が最小ってことになるな．
やる夫 あー，だから，|n| ≤ L の範囲で h[n] = hd [n] とすると J が最小になるわけだお．
やらない夫 それってのはつまり，さっき安直に作ったインパルス応答と同じものだ．|n| > L の範囲で 0になるようなインパルス応答を持つあらゆるフィルタの中で，与えられた周波数特性の仕様からの平均 2 乗誤差を最小にするものが，この安直な手順で得られることになる．
やる夫 あ，そういえばそうだお．じゃあこれで FIR フィルタの設計は終わりかお?
やらない夫 いや，非因果的なままでいいのであればこれでいいんだが，因果的なフィルタが欲しい場合はまだ続きがある．
やる夫 そっか，まだ因果的になってなかったお．
やらない夫 でも後はもう簡単だ．L 時刻だけ時間シフトしてやればいい．前回やったように，これで振幅特性は変わらず，線形位相特性を持つフィルタが作れる．インパルス応答が n = 0, · · · 2L の間続くので，2L 次の FIR フィルタだ．

h[n – L]n0

2L

やる夫 なるほど，それなら因果的になるお．
やらない夫 というわけで，ようやく実際にリアルタイムに走らせることができる FIR フィルタが設計できたわけだ．元の Hd (ω) として他の形状のものを与えても，それが零位相であれば，今のやり方で線形位相特性を持つフィルタを設計できる．
やる夫 実際，インパルス応答を途中で打ち切った影響ってどんなもんなのかお?
やらない夫 具体例を見てみようか．遮断周波数 ωc = 0.4π の低域通過フィルタを，次数 M = 2L を変えながら設計してみた例だ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章201

ディジタルフィルタの設計| H(ω) |

䢳

M=2
M=4

䢲䢰䢺

M=8
M = 16

䢲䢰䢸

M = 32
M = 64

䢲䢰䢶

䢲䢰䢴

䢲
䢯䣲䣫

䢲

-π

䣲䣫

π

0
ω [rad]やる夫 なるほど，次数が小さいと遮断特性が鈍ってるお．あと，リップルが結構大きいんだお．
やらない夫 そうだな．リップルが大きくて，しかも次数を大きくしても消える気配がない．
やる夫 ちょっと気持ち悪いお．
やらない夫 少しその原因を考えておこう．|n| > L の部分を単純に打ち切るっていうことは，インパルス
応答に矩形窓をかけているということだ．
やる夫 ああ，周波数分析 (p. 120) のときに考えた話だお．
やらない夫 あのときと同じように，時間領域で矩形窓をかけることの意味を周波数領域で考えてみよう．
ω
やる夫 えーと，式 (11.8) で計算したように，長さ N の矩形窓の振幅スペクトルは sin ωN
2 / sin 2 になる

んだったお．sinc 関数っぽい形状だったお．

1.0| Wr(ω) |maxω | Wr(ω) |
0.5

0.0
-π

0

π

ω [rad]
やらない夫 時間領域で矩形窓を乗算するんだから，周波数領域ではそのスペクトルをたたみこむことになるわけだ．メインローブの影響で，近い周波数どうしが平滑化される効果が出てくる．そのせいで遮断周波数前後の振幅が平滑化されるので，遷移域がなだらかになってしまう．次数が大きいほうがメ
インローブが細くなるので，遷移域はより急峻になる．これが遮断特性に対する説明だ．
やる夫 なるほど，同じように考えて，サイドローブが影響した結果がリップルなんだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章202

ディジタルフィルタの設計

やらない夫 その通りだ．で，矩形窓のスペクトルはサイドローブが大きくて，しかも窓長を大きくしても消えてくれるわけじゃない．リップルがどんどん細かくはなるが，特に遮断周波数の前後ではリップルの高さがいつまでたっても消えてくれない．このことをギブスの現象と呼んだりする．数学の授業
でフーリエ級数を習ったときに聞いたかもしれない．
やる夫 …聞いたかもしれないけど，聞いてないかもしれないお．
やらない夫 まあともかく，矩形窓で打ち切っている以上，次数をどんなに増やしてもリップルの発生からは逃れられないということだ．じゃあ，リップルの発生を避けたい場合にはどうしたらいいだろう?
やる夫 話が見えてきたお．周波数分析のときと同じように，別の窓関数を使うのかお?
やらない夫 そういうことになるな．ハミング窓を使った設計例はこうなる．

| H(ω) |

䢳

M=2
M=4

䢲䢰䢺

M=8
M = 16

䢲䢰䢸

M = 32
M = 64

䢲䢰䢶

䢲䢰䢴

䢲
䢯䣲䣫

䢲

-π

䣲䣫

π

0
ω [rad]やる夫 あー，リップルがほとんど目立たないお．
やらない夫 その代わり，遮断特性は矩形窓の場合よりも鈍っていることにも注意して欲しい．矩形窓と比べて，ハミング窓はサイドローブが小さい代わりにメインローブは太くなるんだった．リップルを抑えるために遮断特性を犠牲にしていると考えるといいかな．
やる夫 結局，目的に応じて使い分ける必要があるわけだお．
やらない夫 このような設計方法を総称して，FIR フィルタの窓関数設計と呼ぶ．所望の遮断特性やリップ
ル特性が得られるようにいろいろと試行錯誤しないといけないのが厄介なところだが，FIR フィルタの設計は他の方法でもだいたい試行錯誤が必要だ．

16.3

IIR フィルタの間接設計

やる夫 じゃあ，IIR フィルタの方はどうするのかお?
やらない夫 FIR の場合のようにインパルス応答を定めてたたみこめばいいってわけにはいかない．インパ
ルス応答が無限に続くわけだからな．あくまで，差分方程式を定めてやる必要がある．言い換えると伝達関数を z の有理多項式で表してやる必要があるってことだ．
やる夫 なんか難しそうだお．
やらない夫 これまたたくさんの方法があるわけだが，一番基本的なものとして挙げられるのは，アナログ
フィルタから変換することでディジタルフィルタを作る方法だろう．間接設計と呼ばれる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章203

ディジタルフィルタの設計

やる夫 いったんアナログフィルタの設計を経由するから間接ってことかお．
やらない夫 そうだな．アナログフィルタに関しては，古くから電気回路の分野で詳細に検討されている．
こういう特性のフィルタが作りたければこうやって作る，みたいな話がかなり確立されているわけだ．
その結果を利用してディジタルフィルタを作ってやろうということだな．
やる夫 アナログフィルタってどんなものなのかお?
やらない夫 代表的なものとして，バタワースフィルタを挙げておこう．遮断周波数 Ωc の N 次バタワース
低域通過フィルタは，伝達関数がHbw (s) = )N −1

1(16.18)k=0 (s − sk )where sk = Ωc ej { 2 +π(2k+1)π2N} (k = 0, · · · , N − 1)

(16.19)と書ける．その振幅特性は|Hbw (jΩ)| = *
1+

1
Ω
Ωc

(16.20)2Nになることが知られている．
やる夫 こりゃまた盛大な天下り式だお．なんだかさっぱりわからんお．
やらない夫 アナログフィルタが本題ではないからな．もし興味があるなら付録 (p. 228) を参照して欲しい．伝達関数の式の解釈をざっとだけ説明しておくと，s 領域の原点を中心とした半径 Ωc の円周上の左半分を N 等分して，その各区間の真ん中に極を配置する．これが N 次バタワースフィルタの極
配置だ．極が左半面にしかないので，安定であることに注意しておこう．

N=3

Im

N=4

Im
jΩc

jΩc

Ωc

Re

Ωc

Re

やる夫 ん? あー，そうか，複素平面に円が描かれるとつい z 領域かと思ってしまうけど，アナログフィル
タだから z 変換じゃなくてラプラス変換で表されているんだお．だから左半平面に極があれば安定なんだお．
やらない夫 振幅特性はグラフで見ておこう．FIR の例と同じく Ωc = 0.4π としたものだ．その辺りが遮断周波数になっていて，次数が増えるごとに遮断特性が急峻になっていくのがわかってもらえればいい．あと，振動的なリップルが全くないという点がバタワースフィルタの特徴的なところだ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章204

ディジタルフィルタの設計| H(Ω) |

䢳

N=2
N=4

䢲䢰䢺

N=8
N = 16
N = 32

䢲䢰䢸

䢲䢰䢶

䢲䢰䢴

䢲
䢯䣲䣫

-π

䢲

䣲䣫

π

0
Ω [rad/s]

やる夫 でも結局天下りなのでよくわからないのは変わらんお．
やらない夫 まあそうなんだが，重要なのはこういう振幅特性を持つ低域通過フィルタの伝達関数が，s の有理式として表せているということだ．
バタワースフィルタのほかにも，チェビシェフフィルタとか楕円フィルタとかいろいろなものがあって，それぞれ異なる特徴の特性を持っていて，それぞれ s の式で表すことができる．そういう s の式
を，z の式にうまいこと変換しようという話の流れになる．一般に，変換の元となるアナログフィル
タのことをプロトタイプフィルタとか呼んだりする．プロトタイプってのは「原型」ってことだな．
やる夫 要求仕様に合わせてよさげなフィルタのよさげな次数を選べばいいわけだお．
やらない夫 そうなんだが，FIR フィルタのときとはちょっと違う点がある．プロトタイプフィルタとして使うようなアナログフィルタは，要求仕様から必要な次数を決めるときに，数式一発で求められるものが多い．具体例は付録 (p. 228) で見てもらうことにしよう．まあコンピュータが発達していなかった時代から使われてきたものなので，そうじゃないと使い物にならなかったんだろうな．基本的に試
行錯誤が必要な FIR フィルタ設計とはその点で大きく違うってことを知っておいて欲しい．

16.3.1

インパルス不変変換

やる夫 で，その s から z への変換ってのはどうやるんだお?
やらない夫 一番基本的なのは，プロトタイプフィルタのインパルス応答をサンプリングして離散時間化するという考え方だ．
やる夫 サンプリングすれば，離散時間のインパルス応答が得られて，それをたたみこめばディジタルフィ
ルタになるってことかお? でも，IIR フィルタなんだからインパルス応答は無限に続くんだお．有限の手順でサンプリングできないお．
やらない夫 そう，だから，インパルス応答を実際に数値的にサンプリングするってのは不可能だ．そうじゃなくて，インパルス応答をサンプリングした場合に得られるであろう離散時間の伝達関数 H(z) を，プロトタイプフィルタの伝達関数から，数式の変換で求めてやることを考える．
やる夫 えーと，何が何だかわかりませんお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章205

ディジタルフィルタの設計

やらない夫 バタワースフィルタをプロトタイプにする場合を考えよう．プロトタイプフィルタの伝達関数(16.19) を部分分数展開すると，Hbw (s) =

N
−1

k=0

wk
s − sk

(16.21)な形に書ける．だからインパルス応答は，ラプラス変換表 (p. 138) から

hbw (t) = u0 (t)N−1

wk esk t(16.22)k=0と書けることになる．
やる夫 指数関数の和になるんだお．ラプラス変換の話のときに聞いたことだお．
やらない夫 このそれぞれの指数関数を，サンプリング周期 1 でサンプリングして離散化することを考える．
つまり，h[n] = u0 [n]N−1

wk esk n(16.23)wk (esk )n(16.24)k=0= u0 [n]

N
−1

k=0

というインパルス応答を考えることになる．これを z 変換するとどうなる?
やる夫 えーと，これなら z 変換表 (p. 168) を見ればいいんだお．

H(z) =

N
−1

k=0

wk
1 − esk z −1

(16.25)になるお．
やらない夫 これでインパルス応答をサンプリングできたわけだが，結果的には，プロトタイプフィルタの伝達関数を部分分数展開した式 (16.22) に1
1−→s − sk1 − esk z −1

(16.26)という置き換えを機械的に施しただけだ．
やる夫 あー，確かにそうだお．
やらない夫 つまり，実際に時間領域でサンプリングしなくても，部分分数展開された伝達関数に式 (16.26)の変換をするだけで，ディジタルフィルタ H(z) が得られる．インパルス不変変換と呼ばれる方法だ．
やる夫 なるほど．今はバタワースフィルタをプロトタイプにして低域通過フィルタを設計したけど，この手順さえ覚えておけば，あとは要求仕様に合わせてその都度よさげなプロトタイプフィルタを選んで来れば，いつでもディジタルフィルタが作れるってわけだお．
やらない夫 …うーん，常にそう言い切れないのが残念なところだ．
やる夫 えっ，何かまずいのかお?
やらない夫 ちょっと注意しなくてはならない点がある．インパルス不変変換は，インパルス応答をサンプ
リングして離散時間化するものだ．なので，サンプリング特有の問題が発生し得る．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章206

ディジタルフィルタの設計

やる夫 えー，サンプリング特有の問題って何だお．
やらない夫 サンプリング定理の話をしたときのことを思い出してくれ．サンプリングする際に注意しなくちゃいけないことがなかったか?
やる夫 注意? えーと，サンプリングの話のときだから…，ナイキスト何とかを超えるとエイリアシングがどうのこうのってやつかお?
やらない夫 どうのこうのってのはどうかと思うが，ポイントはそこだ．サンプリングされる連続時間信号がナイキスト周波数以上の周波数成分を持っていると，エイリアシングが起きてしまうんだった．
やる夫 そうそう，それが言いたかったお．
やらない夫 つまり，インパルス応答がサンプリング周波数の半分までに帯域制限されていないと，プロト
タイプフィルタの周波数特性とは違った特性のフィルタができてしまう．
やる夫 どんな風に違っちゃうのかお?
やらない夫 周波数領域でどうなるかちょっと見てみよう．プロトタイプフィルタのインパルス応答を周期1 でサンプリングするわけだから，周波数スペクトルは，元のスペクトルを 2π ごとに繰り返して足し合わせたものになる．

| H(ω) |ω-ππ

やる夫 だから，周波数 π 以上の成分があると，スペクトルの裾どうしが重なってエイリアシングが起きる
んだお．
やらない夫 さて，例えばさっきのバタワースフィルタはどうだった?
やる夫 うーん，式 (16.20) の上では Ω をどんなに増やしても周波数成分は 0 にはならないお．でもまあ，グラフを見ると次数によってはほとんど 0 と見なせそうだったりそうでもなさそうだったり，いろい
ろだお．
やらない夫 厳密に言うと常にエイリアシングが起きているわけだな．それでも影響が十分小さければまあそれほど問題にならない．しかし，次数が低い場合や，遮断周波数がナイキスト周波数に近い場合は影響が大きく出てしまう．
やる夫 ナイキスト周波数を超えても，まだだいぶ振幅が残ってしまってるので，その部分が折り返されてしまうわけだお．
やらない夫 実際の周波数特性を見てみようか．さっきの ωc = 0.4π のバタワースフィルタのうち次数N = 2, 4, 8, 16 のそれぞれをインパルス不変変換でディジタルフィルタ化したものの振幅特性だ．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章207

ディジタルフィルタの設計| H(ω) |

䢳

N=2
N=4

䢲䢰䢺

N=8
N = 16

䢲䢰䢸

䢲䢰䢶

䢲䢰䢴

䢲
䢯䣲䣫

䢲

-π

䣲䣫

π

0
ω [rad]N = 2 のときがわかりやすいかな．ω = π で折り返された結果，遮断域で振幅が下がりにくくなっている．
やる夫 なるほど…，ん? あれれ? 何かおかしくないかお? N = 2 のときは遮断域の振幅が大きくなってい
るけど，N = 4 のときはむしろやや小さくなってないかお? ていうか N = 2 のときも，通過域の振幅が小さくなってるお．折り返された分が足し合わされるのに，どうして振幅が減るのかお?
やらない夫 いや，別にそれはおかしくないぞ．振幅が足し合わされるんじゃなくて，振幅と位相からなる複素数の加算が起きるんだ．その結果振幅は増えることもあれば減ることもある．
やる夫 あー，そうか．足し合わせても常に振幅が大きくなるわけじゃないんだお．
やらない夫 まあいずれにせよ，低域通過フィルタはまだマシな方だ．それ以上に問題なのは，高域通過フィ
ルタとか，帯域阻止フィルタとかの場合だな．何しろある周波数以降，無限大までずっと 1 に近い振幅を持つようなプロトタイプフィルタを使おうってことだ．エイリアシングが起きるというか，もはやエイリアシングの影響しか残らないくらいだ．
やる夫 ああ…，確かにそれは困るお．
やらない夫 というわけで，インパルス不変変換が使える状況は割と限られている．まあその限られた状況の範囲内であれば，プロトタイプフィルタの特性を少なくともサンプリング定理の意味で忠実に再現できる手法だということもできるかな．

16.3.2双線形変換

やる夫 じゃあエイリアシングが無視できないようなときはどうするんだお?
やらない夫 インパルス不変変換とは別のやり方を考えよう．方針はこうだ．プロトタイプフィルタの Ω = −∞〜∞ の範囲を，ディジタルフィルタの ω = −π 〜 π の範囲に対応させるような変数変換を考える．
もしそういうことができれば，Ω = −∞ 〜∞ まで広がったプロトタイプフィルタの周波数特性を，ギュっと縮めてディジタルフィルタの ω = −π 〜 π の範囲の周波数特性にすることができるだろう．
これならエイリアシングの心配はない．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章208

ディジタルフィルタの設計

Ω

−∞

∞
-π

π

ω

やる夫 んー，ピンと来ないお．
やらない夫 具体的な話を先にしてしまおうか．

s=2

1 − z −1
1 + z −1

(16.27)という式で s から z への変換を行うことを考えよう．
やる夫 なんだ，こりゃまた唐突だお．
やらない夫 この式はこの式でいろいろと意味づけができるんだが，その辺の話は置いといて，この変換でどういう周波数変換がされるかを見ていこう．
プロトタイプフィルタの伝達関数が H(s) だとすると，その周波数特性は s = jΩ を代入して H(jΩ)と書ける．一方，式 (16.27) で変数変換して作ったディジタルフィルタの伝達関数は

H(21 − z −1)
1 + z −1

(16.28)になって，その周波数特性は z = ejω を代入して

H(21 − e−jω)
1 + e−jω(16.29)と書ける．
やる夫 まあ淡々と代入してっただけだお．
やらない夫 これらが何を意味しているかというとjΩ = 2

1 − e−jω
1 + e−jω(16.30)が成り立つような周波数 Ω と ω が対応しているってことだな．Ω について整理すると

2 1 − e−jω
j 1 + e−jω
2 e−jω/2 ejω/2 − e−jω/2=
j e−jω/2 ejω/2 + e−jω/2(ejω/2 − e−jω/2 )/2j
= 2 jω/2(e+ e−jω/2 )/2sin ω/2=2
cos ω/2ω= 2 tan2

Ω=(16.31)(16.32)(16.33)(16.34)(16.35)になる．
やる夫 Ω = 2 tan ω2 のところでプロトタイプフィルタとディジタルフィルタの周波数特性値が同じになるってことだお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章209

ディジタルフィルタの設計

やらない夫 この関係をグラフにするとこんな感じだ．Ω = −∞ 〜∞ が ω = −π 〜 π に対応しているのがわかるだろう．

Ω

π

-π

ω

やる夫 あー，こういうことかお．しかし盛大にねじ曲がった関係だお．
やらない夫 無限の範囲を有限の範囲に対応付けようとするわけだから，対応関係に歪みが生じるのは無理もない．その点を認めてしまえるなら，エイリアシング無しでディジタルフィルタを作れるとても便利なものだと考えることができる．この変数変換を，双線形変換とか，双 1 次変換とか呼んでいる．
やる夫 この場合，遮断周波数とかはどうやって決めればいいのかお?
やらない夫 ちゃんと逆算してやらないとダメだな．遮断周波数が ωc のディジタルフィルタを作りたかったら，Ωc = 2 tan ω2c が遮断周波数になるようなプロトタイプフィルタを用意してやる必要がある．
やる夫 なるほど，で，あとはその伝達関数を改めて双線形変換してやればいいんだお．
やらない夫 そういうことだな．ただし，周波数が歪んで対応付けられる分，例えば遮断特性とかは正確に保存されないので注意が必要だ．その辺り，インパルス不変変換のようなわけにはいかない．
やる夫 まあそりゃそうだお．
やらない夫 実際の計算例を見てみようか．プロットされてる内容はインパルス不変変換のときと全く同じだ．エイリアシングの影響が出てないことがわかると思う．
N=2
N=4

䢳

N=8
N = 16| H(ω) | 䢲䢰䢺
䢲䢰䢸

䢲䢰䢶

䢲䢰䢴

䢲
䢯䣲䣫

-π

䢲

䣲䣫

π

0
ω [rad]やる夫 その代わり遮断特性はプロトタイプフィルタとはちょっと違った感じになってるお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

第 16 章210

ディジタルフィルタの設計

やらない夫 それが Ω と ω の間のねじ曲がった対応関係の影響だ．
まあこんなところで，ディジタルフィルタ設計の基本の基本の話はおしまいだ．まとめよう．


• 所望の特性を持つフィルタのインパルス応答を適当な窓関数で打ち切ることで FIR フィル
タを設計することができる．FIR フィルタの窓関数設計法と呼ぶ．

– 周波数特性を最小 2 乗近似する意味で最適なフィルタは矩形窓により設計できるが，リップルが大きい．
– 両端をなめらかに打ち切る窓関数を使えば，遮断特性は犠牲になるもののリップルを抑えることができる．
• 適当なアナログフィルタをプロトタイプとして IIR ディジタルフィルタに変換することができる．IIR フィルタの間接設計法と呼ぶ．

– プロトタイプフィルタのインパルス応答をサンプリングしたものをディジタルフィル
タのインパルス応答とするような変換方法を，インパルス不変変換と呼ぶ．プロトタ
イプフィルタの周波数特性がナイキスト周波数以上の成分を多く含んでいる場合，エイリアシングによって大きな誤差が生じる．

– エイリアシングを避けることのできる変換方法として，双線形変換がよく用いられる．
変換の際に周波数特性は Ω = 2 tan ω2 に従って歪んでしまうので，その点をあらかじ
め考慮して仕様を与える必要がある．

• フィルタの次数を大きくするほど理想的な特性に近づけやすくなるが，コストや遅延時間が発生する．

• 同じ次数であれば FIR より IIR フィルタの方が遮断特性を急峻にしやすい．しかし IIR
フィルタは線形位相特性を持てない• 要求仕様を満たすフィルタを設計する際，FIR フィルタの場合は試行錯誤が必要となる．


IIR フィルタの場合は試行錯誤の要らない設計法もある．

やる夫 基本の基本ってことは，まだ他にもいろんな設計法があるってことかお．
やらない夫 もちろんだ．俺たちの戦いはまだ始まったばかりだ．

(やらない夫先生の次回作にご期待ください)

やる夫で学ぶディジタル信号処理, ver. 2016.01.08



211

付 録A
A.1

伝達関数の部分分数展開

厳密にプロパーな伝達関数

やらない夫 ラプラス変換の意味について考えたときに，伝達関数を部分分数展開した (p. 153) のを覚えているか?
やる夫 覚えてるお．1/(s − λi ) みたいなシステムへの並列分解だと見なせて，分解された各システムのイ
ンパルス応答が指数関数になるんだったお．でも，ちょっと条件つきの議論だったお．あの条件が成り立たない場合はどうなるのかお?
やらない夫 いい質問だ．そうやって指数関数に並列分解できることを利用して「極の実部がすべて負だったら安定」とかの説明をしてきた (p. 151) からな．そういう分解ができない一般の場合にどうなるかを理解しておくことは重要だ．
順番に見ていこう．どんな条件を要求したんだった?
やる夫 えっと，

H(s) =

Mk
k=0 bk sNk
k=0 ak s(13.68)を考えてたんだけど，N > M ，つまり分母より分子の方が次数が小さいってことと，あと特性方程式，つまり 分母 = 0 という方程式が重解を持たないってことを条件にして話を進めたんだお．
やらない夫 まず，分子の方が次数が小さいという条件が満たされない場合から考えようか．
といっても大して難しい話じゃない．分母が Q(s) だったとしよう．分子と分母の次数が同じか，あるいは分子の方が次数が大きい場合は，分子を分母で割って，商を P (s)，余りを R(s) とするとH(s) = P (s) +

R(s)
Q(s)

(A.1)

と変形できるだろう．P (s)，Q(s)，R(s) はどれも多項式で，R(s) は余りなので割る式 Q(s) より次数が小さい．
やる夫 あー，うん，高校でやったと思うお．
やらない夫 P (s) の次数は，元の分子と分母の次数の差で決まるわけだ．分子と分母が同じ次数だったらP (s) は定数だし，分子の次数の方が 2 だけ大きければ P (s) は s の 2 次式になる．
やる夫 わかるお．
やらない夫 H(s) が例えば何らかのシステムの伝達関数だったとすると，それは多項式 P (s) を伝達関数とするシステムと，分子の方が次数が小さい有理式 R(s)/Q(s) を伝達関数とするシステムを並列につないだものになるわけだ．
やる夫 で，本編では R(s)/Q(s) に相当する部分だけ考えてたことになるお．

付 録A

212

伝達関数の部分分数展開

やらない夫 そういうことだな．多項式 P (s) の部分はというと，例えば P (s) = s2 + 2s + 3 だったとすると，2 階微分するシステムと，1 階微分して 2 倍するシステムと，入力を 3 倍して出力するだけのシ
ステムを並列につないだものになる．

X(s)

s2

1

s

2

Y(s)

3
R(s) / Q(s)やる夫 s 倍は微分に対応するわけだったから，そうなるお．で，R(s)/Q(s) の方は部分分数展開でやっぱり並列接続にバラして考えられるわけだったから，結局，全体を簡単な要素に並列分解できることになるお．
やらない夫 ここで用語を定義しておこう．分子の次数が分母の次数以下であるような有理式を，プロパー
な有理式と呼ぶ．プロパーな有理式で表される伝達関数をプロパーな伝達関数と呼んだりもする．
やる夫 んー，今までの話だと分子の次数が分母以下というより，分母より小さい場合が重要だったお．そういう場合は呼び名はないのかお?
やらない夫 あるんだが，ちょっと微妙な用語で「厳密にプロパー」であるという．
やる夫 えー，うーん，ていうかそのプロパーという言葉のニュアンスがわからないから，「厳密に」とか言われてもよくわからないお．プロパーって何なんだお?
やらない夫 プロパーって言葉自体は「きちんとした」とか「適正な」という意味の英語の proper なんだが…
やる夫 んー，厳密にきちんとした有理式って何のことだかわからんお．
やらない夫 いや，だから最後まで話を聞けよ．小学校で真分数とか，仮分数とか習ったな?
やる夫 そのくらいわかるお．3/4 みたいに分子が分母より小さいのが真分数で，5/4 みたいのを仮分数って呼ぶんだお．
やらない夫 真分数ってのは英語の proper fraction の訳だ．同様に，仮分数ってのは improper fraction のことだ．
やる夫 ん? あー，だから有理式の場合も，分子と分母の次数を見て，proper とか improper と呼ぶと，単にそれだけのことかお?
やらない夫 そういうことだな．まあ分数の場合は，例えば 4/4 みたいなのは真分数とは言わないと思うが，有理式の場合は分子と分母の次数が等しいものもプロパーだと考える．その代わり，いわゆる真分数に対応するものは strictly proper，つまり厳密にプロパーと呼んでやることにしたわけだ．
やる夫 何だ，それだけのことなら，真有理式とか，仮有理式とか呼んでくれればいいのに，プロパーとか
カタカナで言うから妙な深読みしちゃったお．
やらない夫 そうなんだが，そういう用語で定着しちゃったんだから仕方ない．あとそれから，これは後々説明する(p. 218) ことだが，実は伝達関数がプロパーかプロパーじゃないかの区別は，それが現実のシステムとして実現できるかできないかの区別に対応しているので，「きちんとした」伝達関数と解釈してもそれほど悪くはない．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

213

伝達関数の部分分数展開

やる夫 あ，そういうものなのかお．
やらない夫 ま，それは後で話すとして，ともかくこの用語を使ってこれまでの話をまとめると，有理式で表される任意の伝達関数は，多項式と厳密にプロパーな有理式の和に分解できる．で，多項式の方は，微分とか定数倍の組み合わせで理解できるので，残りの厳密にプロパーな部分について考えていこうということだな．

A.2

特性方程式が重解を持つ場合

やる夫 厳密にプロパーな部分は，必ず部分分数展開できて，つまり並列分解できるわけだお．えーと，じゃ
あ特性方程式が重解を持つ場合を除外したのはどういうことなんだお?
やらない夫 まず，重解を持つような場合の部分分数展開はどうなるか覚えているか? 例えば，

R(s)(s + 1)(s + 2)2(A.2)

で R(s) の次数が 2 以下の場合に，H(s) はどう分解できるか?
やる夫 えーと?

bca++s+1 s+2 s+2(A.3)

とかじゃダメだったかお?
やらない夫 典型的な間違いだな．だいたい，仮にそうだとすると，2 つめと 3 つめの項は (b + c)/(s + 2)にまとめられてしまうだろ．
やる夫 あ，そうか，えーと，あ，思い出したお．

b
a
c
+
+
2
s + 1 (s + 2)
s+2

(A.4)

みたいになるんだったお．そうそう，これも高校で習ったはずだお．
やらない夫 そうだな．一般に，分母が (s + α)p を因数として持つ場合は，部分分数として

w1
w2
wp−1
wp
+
+ ··· ++pp−1
2(s + α)(s + α)(s + α)s+α(A.5)

が現れるんだった．
もしも式 (A.3) みたいに分解できるんだったら，本編と全く同じように並列分解して考えることができたわけだが，残念ながらもう少し話は複雑になる．
やる夫 だから避けて通ったわけかお．
やらない夫 そういうことだな．というわけで，改めて立ち向かうことにしよう．伝達関数としてH(s) =R(s)(s − λ1 )p (s − λp+1 ) · · · (s − λN )(A.6)

を考えよう．分母は N 次で，分子は N − 1 次以下だ．λ1 が p 重解で，残りの N − p 個の解をλp+1 , · · · λN と書くことにしておこう．λ1 と λp+1 , · · · λN は相異なるってことだ．
やる夫 えーと，重解は λ1 だけってことかお? 重解が複数ある場合はこれでは表現できないお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

214

伝達関数の部分分数展開

やらない夫 そうなんだが，重解が複数ある場合も実は全く同じように考えられる．式を簡単にするために，
重解が 1 個の場合に限って見ていこうってことだ．このとき部分分数展開は

 

w1
wp+1
w2
wp−1
wp
wN
H(s) =++ ···+++ ··· ++(s − λ1 )p(s − λ1 )p−1
(s − λ1 )2s − λ1s − λp+1s − λN(A.7)となる．
やる夫 p + 1 項めより後ろは，本編でやったのと同じく 1/(s + λi ) への並列分解だお．問題は前半だお…
やらない夫 前半も 1/(s + λ1 ) が重要な構成要素になる． 1/(s + λ1 )p ってのは 1/(s + λ1 ) を p 個直列につなげば作れるわけだからな．そう理解すると，システムの入出力関係 Y (s) = H(s)X(s) はこんな
ブロック図の形に分解できることがわかる．
Z2(s)

Zp(s)
1
s – λ1X(s)1s – λ1

1s – λ1

L

Zp-1(s)w1

L

Zp-2(s)Z1(s)1s – λ1

wp-2
wp-1
wp

1
s - λp+1

Zp+1(s)wp+1

1
s - λp+2

Zp+2(s)

wp+2

L

L
1
s – λN

Y(s)

ZN(s)

wN

やる夫 えーと，なるほど 1/(s + λ1 ) を必要な数だけつなぐことで 1/(s + λ1 )2 とか 1/(s + λ1 )p とかを作っているわけだお．…んー，途中にちょいちょい出てくる Z1 とかってなんだお?
やらない夫 ああ，流れの途中の信号に名前をつけてみた．こう書くことで，今のブロック図を数式で表し直してみようと思う．Z1 , · · · , ZN はどう書ける?
やる夫 んー? まあブロック図の通り素直に書いてみることにしますお．まず Z1 から Zp までは

1
Z2 (s)s − λ11Z2 (s) =Z3 (s)s − λ1..
.
1
Zp (s)
Zp−1 (s) =s − λ1
1
X(s)Zp (s) =s − λ1Z1 (s) =

(A.8)
(A.9)

(A.10)(A.11)

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

215

伝達関数の部分分数展開になるお．で，Zp+1 以降は普通の並列分解なので，

1X(s)s − λp+1
1
Zp+2 (s) =X(s)s − λp+2
..
.
1
X(s)
ZN (s) =s − λN
Zp+1 (s) =(A.12)(A.13)(A.14)

こんな感じになるかお．
やらない夫 そうなるな．そして出力 Y (s) はこれら Z1 , · · · , ZN を使ってY (s) =N
wi Zi (s)(A.15)

i=1と表せるわけだ．

A.3

状態空間表現やる夫 ふーん，まあ重解の場合でも 1/(s − λ) の組み合わせに分解できることはわかったお．でも，構造が複雑過ぎてあまりピンとこないお．
やらない夫 そうか，じゃあもうちょっと話を進めて，これが実はどこかで見たことのある構造だということを示してみようか．
やる夫 え，そのもったいぶった話の振り方は何だお．
やらない夫 今の Y (s) と Zi (s) の式を，時間領域で表してみてくれ．
1
やる夫 時間領域? あー，まあ個々の式は 1/(s − λ) をかけているだけだから，Y (s) = s−λX(s) が ẏ(t) =λy(t) + x(t) に対応する関係 (p. 153) を実直に当てはめていけばいいんだお．
ż1 (t) = λ1 z1 (t) + z2 (t)(A.16)ż2 (t) = λ1 z2 (t) + z3 (t)(A.17)..
.
żp−1 (t) = λ1 zp−1 (t) + zp (t)(A.18)żp (t) = λ1 zp (t) + x(t)(A.19)żp+1 (t) = λp+1 zp+1 (t) + x(t)(A.20)żp+2 (t) = λp+2 zp+2 (t) + x(t)(A.21)..
.
żN (t) = λN zN (t) + x(t)y(t) =N

wi zi (t)(A.22)(A.23)

i=1になるかお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

216

伝達関数の部分分数展開

やらない夫 いいだろう．さて，これを行列を使って表してみよう．(z1 , z2 , · · · , zN )T というベクトルをまとめて扱うということだ．するとこうなる．
⎛
⎞ ⎛
λ1 1
ż1
0 ··· 0⎜⎟ ⎜⎜ ż2 ⎟ ⎜ 0 λ1 1 · · · 0⎜⎟ ⎜⎜ .. ⎟ ⎜..
..
⎜ . ⎟ ⎜ 0
.
. 0
0
⎜
⎟ ⎜
⎜
⎟ ⎜
0 · · · λ1 1⎜ żp−1 ⎟ ⎜ 0⎜⎟ ⎜⎜ żp ⎟ = ⎜ 0
0 ···
0 λ1
⎜
⎟ ⎜
⎜
⎟ ⎜
⎜ żp+1 ⎟ ⎜ 0
0 ···
0
0
⎜
⎟ ⎜
⎜ żp+2 ⎟ ⎜ 0
0
·
·
·
0
0
⎜
⎟ ⎜
⎜ . ⎟ ⎜⎜ .. ⎟ ⎜ 0
0 ···
0
0
⎝
⎠ ⎝
żN
0
0 ···
0
0

⎛
y = w1

w2

···

wN

0
0

0
0

···
···

0
0

0
0

···
···

0

0

···

λp+1
0

0
λp+2

0
0

0
0

···
···
..
.
···

⎞⎛
⎞ ⎛
⎞
z1
0
0
⎟⎜
⎟ ⎜
⎟
⎜
⎟ ⎜
⎟
0 ⎟
⎟ ⎜ z2 ⎟ ⎜ 0 ⎟⎟ ⎜ .. ⎟ ⎜ .. ⎟
⎜
⎟ ⎜
⎟
0 ⎟
⎟⎜ . ⎟ ⎜ . ⎟⎟⎜⎟ ⎜⎟0 ⎟ ⎜ zp−1 ⎟ ⎜ 0 ⎟
⎟⎜
⎟ ⎜
⎟
⎜
⎟ ⎜
⎟
0 ⎟
⎟ ⎜ zp ⎟ + ⎜ 1 ⎟ x⎟⎜⎟ ⎜⎟0 ⎟ ⎜ zp+1 ⎟ ⎜ 1 ⎟
⎟⎜
⎟ ⎜
⎟
⎜
⎟ ⎜
⎟
0 ⎟
⎟ ⎜ zp+2 ⎟ ⎜ 1 ⎟⎟⎜ . ⎟ ⎜ . ⎟⎜ . ⎟ ⎜ . ⎟0 ⎟⎠⎝ . ⎠ ⎝ . ⎠1
zN
λN(A.24)⎞z1⎜ ⎟⎜ z2 ⎟
⎜ . ⎟
⎜ . ⎟
⎝ . ⎠

(A.25)zN
この行列の部分の形は見たことないか?
やる夫 えっ，…あー，ジョルダン標準形かお!
やらない夫 今の話で導入したような z1 , · · · , zN を状態変数と呼ぶ．入力と出力の他に，システムの内部状
態を表す変数を考えていることになる．入力 x から出力 y がいきなり計算されるのではなくて，いったん状態変数に反映されて，それが出力に反映されると考えるんだな． (z1 , · · · , zN )T に関する微分方程式を状態方程式，状態から出力 y を計算する代数方程式を出力方程式と呼ぶ．状態変数ベクトルが構成する線形空間を考えていることになるので，状態空間表現と呼んだりする．
やる夫 あー，制御工学の授業で習ったやつだお．それにしても，線形代数を習ってたときはジョルダン標
準形なんて面倒くさいもの何の役に立つんだと思ってたけど，こんなところで出てくるとは驚きだお．
やらない夫 いや，制御工学を習ってるなら一度は聞いているはずなんだが…
まあともかく，伝達関数を部分分数展開するという操作が，状態空間表現では何に対応しているかが見えたんじゃないかと思う．特性方程式に重解がない場合は，さっきの状態方程式の zp+1 以降のよ
うに，全体が対角化される．そうやってシステムを対角化しようとするのが部分分数展開だということだ．ただし重解があると対角化はできなくて，ジョルダン標準形で我慢することになる．
やる夫 んー，確か線形代数で，固有値が全部違えば必ず対角化できて…みたいな話があったと思うお．その話かお?
やらない夫 まさにその話だ．対角行列とかジョルダン標準形の行列の対角要素に並んでいるのは固有値だ．
つまり，伝達関数の極 λ1 , · · · , λN ってのはこのシステムの挙動を時間領域で表す行列の固有値であって，すべての固有値が相異なれば対角化できるけど，重複するものがあればその限りではない．
やる夫 そっか，つまり伝達関数から状態空間表現を得るための方法が部分分数展開だってことかお?
やらない夫 うーん，それはちょっと違うな．別に状態方程式が欲しくないときでも，例えば単に逆ラプラス変換したいときだって部分分数展開は便利だろう．逆に，仮に状態空間表現を作りたい場合でも，その表現方法は他にもいくらでもあり得る．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

217

伝達関数の部分分数展開

一般に，状態方程式と出力方程式の組としては，入力・出力が多次元の場合も含めてż = Az + Bx

(A.26)

y = Cz + Dx

(A.27)という形のものを考える．x とか y とか z が太字なのはベクトルであるという意味だ．A, B, C, D
は行列になる．部分分数展開によって，こういう表現の一つが得られるってことだな．
やる夫 んー，他の表現もあるってことかお?
やらない夫 というか，無数にあるんだよ．伝達関数ってのは入力と出力の関係を規定しているだけなので，状態変数の取り方は自由だ．適当な座標変換行列 P を使って，z = P z  を満たすような新しい状態
変数 z  を定めたとすると，さっきの表現に代入してP ż  = AP z  + Bx

(A.28)

y = CP z + Dx

(A.29)になる．状態方程式の両辺に左から P −1 をかけるとż  = (P −1 AP )z  + (P −1 B)x(A.30)

y = (CP )z + Dx

(A.31)になる．改めて A = P −1 AP ，B  = P −1 B ，C  = CP と置くとż  = A z  + B  x(A.32) 

y = C z + Dx

(A.33)という新しい状態方程式・出力方程式の組が作れる．これだって，x と y の入出力関係は元の状態方
程式・出力方程式の組と全く同じだ．
やる夫 んー，ああ，新しい変数 z  に変わったのは z だけで，x とか y は元のままだから，入出力関係としては同じものを表しているわけだお．
やらない夫 こうやって変換するときに，A がうまいこと対角とかジョルダン標準形になるように P を選んだ結果が，さっきまでやってきた部分分数展開で得られる形式と一致する．
やる夫 そっか…，えっと，じゃあ逆に，何か適当な状態空間表現が与えられたときに，それを伝達関数表
現に変えたいときには，対角形なりジョルダン標準形に座標変換してから，部分分数展開形の伝達関数に対応させるのがよいってことかお?
やらない夫 いや，伝達関数が欲しいだけなら別に対角化しなくてもいいぞ．1 入力 1 出力の状態空間表現ż = Az + bx

(A.34)

y = cT z(A.35)が与えられたとしよう．このうち状態方程式の方をラプラス変換すると，

sZ(s) = AZ(s) + bX(s)(A.36)になる．ただし，Z(s) は z(t) の各要素のラプラス変換を並べたベクトルだ． z(t) の初期値は 0 だとしている．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

218

伝達関数の部分分数展開

やる夫 んー，ああ，ベクトルだからちょっと戸惑うけど，各要素のラプラス変換を普通に考えていけば確かにそうなるお．
やらない夫 これを Z(s) について整理するとZ(s) = (sI − A)−1 bX(s)(A.37)になる．ただし I は単位行列だ．出力方程式をラプラス変換したものにこれを代入すればいい．
やる夫 えーと，Y (s) = cT Z(s) に代入するってことだお．つまりY (s) = cT (sI − A)−1 bX(s)(A.38)になるかお．
やらない夫 そうだな．これで伝達関数が cT (sI − A)−1 b として得られたことになる．
やる夫 ん? えーと，これはベクトルなのかお? 行列なのかお? 伝達関数ってそんなものだったかお?
やらない夫 いや，もっと落ち着いて見てくれ．(sI − A)−1 b の部分は，縦ベクトルに行列を左からかけているので縦ベクトルだ．それに左から横ベクトル cT をかけていて，これは要は内積なので，スカラだ．
結局伝達関数はスカラになっている．変数 s が含まれているので，おなじみの「s の関数」の形だ．
やる夫 あー，そうか，見慣れないので焦ったお．
やらない夫 で，A が対角行列になっているとしよう． i 行 i 列の対角要素を λi と書くとする．もちろんsI − A も対角行列だ．その逆行列は，対角要素 s − λi をそれぞれ逆数 1/(s − λi ) にしたものだ．
T
b = (1, 1, · · · , 1)T にかけると (1/(s − λ1 ), · · · , 1/(s − λN )) というベクトルになる．これに左から
cT = (w1 , · · · , wN ) をかけると，本編でやった部分分数展開形になるわけだ．
やる夫 うーん，線形代数も勉強し直す必要がありそうだお．
やらない夫 そう思うきっかけになったなら素晴らしいことだ．

A.4

伝達関数のプロパー性と実現可能性

やる夫 んー，出力方程式は一般に y = Cz + Dx だって言ってたけど，さっきの例では Dx なんて使わな
かったお．座標変換行列 P をいろいろ変えてもここは変わらないから，結局この部分は要らないん
じゃないかお?
やらない夫 D が零行列になっているってことだな．そこのところは，最初の方に話したプロパーとか厳密にプロパーという概念と関係してくる．ちょっと振り返ってみよう．我々は，s の有理式で表される伝達関数を，まず厳密にプロパーな部分とそれ以外の部分に分けて，前者だけを考えることにしたんだった．
やる夫 厳密にプロパーな部分以外があるときは，これまで考えてきたようなシステムに，入力の定数倍とか，何階かの微分を出力するシステムを並列に結合したものになるんだったお．
やらない夫 式で書くとH(s) = P (s) +
=

M−N

k=0

R(s)
Q(s)

dk sk +

(A.39)R(s)Q(s)(A.40)という形になる．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

219

伝達関数の部分分数展開

やる夫 えーと，P (s) をM−Nk
k=0 dk s と書き直しただけだお．P (s) の次数は M と N の差だったから，確かにそうなるお．
やらない夫 H(s) が元々厳密にプロパーだったとしたら，P (s) の部分は存在しない．このとき出力方程式に Dx の項が出てこないのは今まで見てきた通りだ．
厳密にプロパーではないがプロパーな伝達関数，つまり M − N = 0 の場合は，P (s) = d0 だけになる．入力の定数倍を出力に加えているわけだから，出力方程式がy = Cz + d0 x

(A.41)になる．Dx の項が出てくることになる．このように Dx は 入力を直接出力に伝える項なので，直達項と呼ぶ場合がある．
やる夫 なるほど，今までは厳密にプロパーな伝達関数だけを考えていたから直達項がなかったわけだお．…
あれ? じゃあ，厳密にプロパーどころか，プロパーですらない伝達関数の場合はどうするのかお? さっ
きの状態方程式・出力方程式の枠組みじゃ，x の微分なんて y に加えられないお．
やらない夫 その通り．非プロパーな伝達関数は，状態方程式で表現することができない．制御工学の用語で言い直しておこう．ある伝達関数で表されたシステムの状態空間表現を作ることを「実現する」と呼ぶ．この意味で，非プロパーな伝達関数は「実現不可能」であるということだ．
やる夫 えー，何か変な用語だお．だって入力を微分して出力に足すだけなんだから簡単だお．それを実現不可能だなんて，意図がよくわからんお．
やらない夫 うん，ここはなかなか微妙な話ではあるんだが，その背景にある考えは，少なくとも実時間で動作する物理的な系において，「純粋な微分」は現実に作り得ないということなんだ．仮に入力の純粋な微分を出力するシステムがあったとすると，それは単位ステップ入力に対してデルタ関数を出力しなくてはならない．そんなものは現実にはあり得ないだろう．
やる夫 うーん，ええと，じゃあ例えば，電気回路でキャパシタの両端にかける電圧を入力だとして，そのときに流れる電流の量を出力だと考えたら，それは純粋な微分回路にならないかお? 物理的に存在す
るお!
やらない夫 では聞くが，寄生抵抗も寄生インダクタンスも全くない純粋なキャパシタなんて物理的に存在すると思うか?
やる夫 あ，そうか，うーん，だったら，世の中にある速度計とかそういう計器類はどうやって作られてるんだお? あるいは，PID 制御みたいに微分値をフィードバックする制御を習った記憶があるけど，ああいうのはどうするんだお．
やらない夫 まあいろいろ作り方はあるが，最近はディジタル方式が多いだろうな．時間微分じゃなくて時間差分で近似しているわけだ．純粋にアナログ方式で作る場合も，例えば

G(s) =

s
Ks=
s+K
s/K + 1

(A.42)

なんてのが微分の近似としてよく使われる．定数 K を十分に大きくすると G(s) は s に近づく．これは厳密にプロパーではないけど，プロパーなので実現可能だ．
やる夫 うーん，納得いくような，いかないような，変な気分だお．
やらない夫 ああ，「微妙な話」っていったのはそういうことだ．だから，微分が本当に物理的に作れるかどうかという方向で考え込むんじゃなく，「状態空間表現を作ること」を「実現」と呼ぶと約束されていて，その意味で，非プロパーな伝達関数は「実現不可能」と考える．そしてその約束の背景には，今考えたような「純粋な微分」を作ることの難しさがあると理解しておくのが良いんじゃないかと思う．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

伝達関数の部分分数展開

A.5

1/(s − λ)p の逆ラプラス変換

220

やらない夫 さて，これまでの話を踏まえて，1/(s − λ)p の逆ラプラス変換を求めよう．
やる夫 えーと，どういう流れでそういう話になるのかお?
やらない夫 おいおい，忘れたのか．特性方程式に重解がない場合は，伝達関数は 1/(s − λi ) の足し合わせに並列分解できて，分解されたそれぞれは逆ラプラス変換で指数関数になるんだった．だから λi の実部によって安定とか不安定とかの判断ができる．一方，重解がある場合は 1/(s − λi )p みたいな項が出てくる．これを逆ラプラス変換したときに，指数関数の代わりに何になるのかに興味があるわけだ．
やる夫 あー，そうか，何か途中で状態空間とかプロパーとかいっぱい出てきたので話を見失ってたお．
やらない夫 さっきのブロック図 (p. 214) で X(s) から Z1 (s) までの伝達関数が 1/(s − λ1 )p だ．その逆ラプラス変換，つまりこの部分のインパルス応答がどうなるかを考える．添え字はもう邪魔なので以降

λ = λ1 と書くとして，ż1 = λz1 + z2

(A.43)ż2 = λz2 + z3

(A.44)..
.

(A.45)żp−1 = λzp−1 + zp

(A.46)żp = λzp + x(A.47)

を考えるということだな．一番下の式の x に単位インパルスを入れたときに，zp がどう応答して，それによって下から 2 番目の zp−1 がどう応答して，と連鎖的に見ていって，最後に z1 がどう応答するかを見れば，1/(s − λ1 )p に対応するインパルス応答を見たことになる．
やる夫 なかなか大変そうだお．
やらない夫 まあ p 本全部計算しなくても，途中で規則性が見えれば OK だ．X(s) から Xp (z) までの伝達関数が 1/(s − λ)，X(s) から Xp−1 (s) までの伝達関数が 1/(s − λ)2 ，…という風に順繰りに対応
していることにも注意しておこう．
やる夫 できるだけ早く規則性が見つかることを祈るお．
やらない夫 まず，この p 本のシステムそれぞれは，インパルス応答がいずれも eλt u0 (t) だってことに注目
しよう．入力が違うだけだな．
やる夫 えーと，u0 (t) ってのは…，ああ，単位ステップ関数を表すんだったお．時刻が負のところを 0 にするんだお．
やらない夫 入力 x(t) として単位インパルスを入れた場合の出力を下から順番に見ていこう．まず zp はど
うなる?
やる夫 え，いや，インパルス応答が eλt u0 (t) のシステムに単位インパルスを入れたんだから，そのまんま

zp (t) = eλt u0 (t) だお．
やらない夫 ああ，当たり前だな．じゃあ次，zp−1 はどうなるか．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

221

伝達関数の部分分数展開

やる夫 んー，入力が zp なわけだから，インパルス応答 eλt u0 (t) を zp = eλt u0 (t) にたたみこむんだお．

zp−1 = (eλt u0 (t)) ∗ (eλt u0 (t))
 ∞(eλ(t−τ ) u0 (t − τ ))(eλτ u0 (τ ))dτ=(A.48)(A.49)−∞

うー，面倒くさそうだお．
やらない夫 そうでもないぞ．まず u0 (t − τ ) ってのは t − τ < 0 で 0 になる．つまり τ > t で 0 になるわ
けだから，積分範囲の上端を t までにするはたらきをする．

u0(t - τ)τt

やる夫 あ，そうか，同じように u0 (τ ) は τ < 0 で 0 だから，積分範囲の下端を 0 にする役目をするんだお．

u0(τ)
τ

0
つまり

 t
zp−1 =eλ(t−τ ) eλτ dτ

(A.50)

0

を計算すればいいのかお?
やらない夫 ほとんどそれで正解だが，t < 0 のときのことも考えておく必要がある．t < 0 では u0 (τ )u0 (t−τ )があらゆる τ に対して 0 なので，積分結果は常に 0 だ．

u0(t - τ)
t

τ
u0(τ)
0

τ

だから「積分範囲を 0 から t までにすればいい」というのは t < 0 のときは通用しなくて，t < 0 の範囲では常に 0 になるようにしなくちゃならない．というわけで，単位ステップ u0 (t) をかけて

 t
zp−1 = u0 (t)eλ(t−τ ) eλτ dτ

(A.51)0とするのが正しい．
やる夫 じゃ，続きを計算して tzp−1 = u0 (t)eλt dτ
0= u0 (t)eλt(A.52)

 tdτ

(A.53)

0= teλt u0 (t)(A.54)になるかお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

222

伝達関数の部分分数展開

やらない夫 そうだな．それが 1/(s − λ)2 の逆ラプラス変換だ．じゃあ次に zp−2 は?
やる夫 うー，先は長いけど，まあやることは同じだお．zp−1 = teλt u0 (t) が入力だから，

 teλ(t−τ ) teλτ dτ
0
 t
λt
tdτ
= u0 (t)ezp−2 = u0 (t)(A.55)(A.56)0=t2 λt
e u0 (t)2(A.57)

やらない夫 だな．同じように
 tt2
zp−3 = u0 (t)eλ(t−τ ) eλτ dτ
2
0
 t 2
t
dτ
= u0 (t)eλt
0 2
t3 λt
=
e u0 (t)2·3(A.58)(A.59)(A.60)になる．そろそろ規則性が見えてきたんじゃないか?
やる夫 ああ，そうか，入力に tn がかかっているときには，それを積分することになるから 1/(n + 1) が前に出るとともに次数が増えて tn+1 になるんだお．結局，p 本目はz1 =tp−1 λte u0 (t)(p − 1)!

(A.61)になるんじゃないかお．
やらない夫 正解だ．というわけで，晴れて ラプラス変換表 (p. 138) に 1 行つけ加えることにしよう．
時間領域

s 領域

p−1

1
(s − a)pt
eat u0 (t)(p − 1)!

やる夫 特性方程式に重解があると，システムは指数関数への並列分解だけじゃ済まなくて，指数関数に tの累乗をかけたものも出てくるってことだお．
やらない夫 そう，そして，高々 t の累乗がかかるだけだってのが重要な点だ．
やる夫 ん? どういうことだお?
やらない夫 システムの安定性は，伝達関数の極を見ればわかるんだったな．それは，重解がない場合はインパルス応答が常に指数関数に分解できて，極 λ に対応して eλt という応答が現れるためだった．λの実部が負なら eλt は 0 に収束するからな．重解の場合は，指数関数に t の累乗がかかった応答が出てくるが，t → ∞ にすると t の累乗より指数関数の方が圧倒的に強く効いてくるので，結果として収束するかしないかには影響がない．
やる夫 ああ，だから，特性方程式に重解があるかどうかに関わらず，極を見るだけで安定とか不安定とか判断してよいわけだお．
やらない夫 そういうことだな．伝達関数が厳密にプロパーじゃない場合も含めて整理しよう．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

223

伝達関数の部分分数展開• 非プロパーな場合，つまり入力の微分が出力にそのまま現れる場合は，単位ステップ入力という有界な入力に対して，デルタ関数という非有界な出力が出てきてしまうので BIBO 安定ではない．ただし，そういうものはそもそも現実のシステムとしては実現できないと考えるのがよい．

• プロパーだが厳密にプロパーではない場合，つまり直達項がある場合は，有界な入力がそのまま出力に加算されるだけなので，厳密にプロパーな部分の BIBO 安定性がそのまま全体の BIBO
安定性に一致する．

• で，厳密にプロパーな場合は，特性多項式に重解があろうとなかろうと，極の実部がすべて負な
ら安定になる．今までの説明では重解が 1 個だけの場合を示してきたが，もちろん複数の重解がある場合でも全く同じように議論できて，結果は変わらない．

A.6

離散時間伝達関数のプロパー性やらない夫 z 変換の場合も，条件つきで議論していた (p. 169) のを覚えているだろう．
やる夫 確か，z −1 についての有理式と見て，分子より分母の方が次数が大きいことと，分母 = 0 が重解を持たないことを前提にしたんだったお．そうすると，1/(1 − αi z −1 ) に並列分解できるんだったお．
やらない夫 そう，まず，次数についての条件がないと部分分数展開できないからな．
やる夫 でも，やっぱりラプラス変換のときと同じく，実際の問題では，分母の方が次数が大きいか，ある
いはせいぜい分子と分母の次数が等しいことがほとんどだったりするんだお?
やらない夫 いや，それは大きな勘違いだ．離散時間システムの伝達関数ってのはH(z) =

M−k
k=0 bk zN−k
k=0 ak z(14.39)だったな．これは線形差分方程式
N

ak y[n − k] =

k=0

M


bk x[n − k](12.15)k=0から導出されるんだった．M と N はどういう意味だった?
やる夫 えーと，M ってのは何時刻前までの入力を使うか，N は何時刻前までの出力を使うかなわけだお．
そっか，別に M > N でも何もまずいことはなさそうだお．どうもラプラス変換のときとは話が違うお．
やらない夫 そう，だから，M > N の場合もまともに考慮してやらないといけない．といっても，考え方はラプラス変換のときと同じで，分子を分母で割ればいいわけだ．ただし，もちろんあくまで z −1 についての式だと見て処理する．

H(z) = P (z) +

R(z)
Q(z)

(A.62)

ラプラス変換のときは，P (z) に相当する部分，つまりあのときは P (s) だったわけだが，そこが入力の微分を出力に渡すことになって，実問題では基本的にはあり得ないものになったわけだ．今の場合はどうなる?
やらない夫 んー，P (z) の部分は，例えば P (z) = z −2 + 2z −1 + 3 みたいな形になるんだお．入力を何時刻か遅らせるのと定数倍を組み合わせるはたらきをするわけだから，特に無理があるようには思えな
いお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

224

伝達関数の部分分数展開

X(z)

z-2

1

z-1

2

Y(z)

3
R(z) / Q(z)
やらない夫 そういうことだな．無限大に発散したりとかする心配もない．ラプラス変換の場合に，微分項が実現不可能とされるのとは対照的だ．だから安心して P (z) はそのまま置いといて，それとは別にR(z)/Q(z) だけを部分分数展開して考えようということになる．
やる夫 うーん，じゃあ，伝達関数がプロパーだとか非プロパーだとかとかの話は，離散時間システムでは意味がないってことかお?
やらない夫 いや，ちゃんと意味がある．ただし，z −1 の式として見るのではなくて，z の式として見たときのプロパー性を考えなくてはならない．
やる夫 えっ，あ，そういうものなのかお．えーと，じゃあ z の負のべきを消すために，M と N のうち大きい方を L として，z L を H(z) の分子・分母にかけるお．

H(z) =

M
L−k
k=0 bk zNL−k
k=0 ak z(A.63)

あれ? こうすると分子は係数 b0 の項，分母は a0 の項が両方とも z L で最大次数なので，分子と分母の次数は常に等しくないかお?
やらない夫 a0 と b0 が両方とも 0 じゃないならそうだけどな，一般にはそんなことはない．係数のうち，0 になれないのは分母の a0 だ．ここは差分方程式の y[n] = · · · のところが由来なので，無くせないからな．その他の係数は別に 0 でもいい．もちろん b0 もだ．
やる夫 ああ，そうか，だから b0 = 0 のときはこの伝達関数は厳密にプロパー，b0 = 0 のときは厳密にはプロパーじゃないけど，プロパーだということになるお．
やらない夫 元の差分方程式での b0 の意味を考えてみるといい．b0 = 0 ということは，y[n] を計算するために，同じ時刻の入力 x[n] を使うということだ．
やる夫 なるほど，直達項があるということだお．
…ん?ということは M と N がどんな組み合わせだったとしても，必ずプロパーになるということ
かお?
やらない夫 そういうことだな．そもそも式 (14.39) の伝達関数は，現実に計算できる差分方程式 (12.15)
から出てきたものだった．そういうものは全てプロパーになる．
やる夫 うーん，じゃあ逆に，非プロパーな伝達関数ってどんなものになるんだお?
やらない夫 具体的なものを考えてみるのがわかりやすいんじゃないかな．例えば

H(z) =

4z 2 + 5z + 6
z+2(A.64)

なんてのは，分子の方が z に関する次数が高いので非プロパーだ．これは，差分方程式に戻すとどうなる?
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

225

伝達関数の部分分数展開

やる夫 えーと，分子・分母を z 2 で割ってH(z) =

4 + 5z −1 + 6z −2
z −1 + z −2

(A.65)

で，H(z) = Y (z)/X(z) だから，(z −1 + z −2 )Y (z) = (4 + 5z −1 + 6z −2 )X(z)(A.66)

y[n − 1] + y[n − 2] = 4x[n] + 5x[n − 1] + 6x[n − 2]

(A.67)

あれ? y[n] = · · · にできなくなったお．
やらない夫 z 2 で割った結果，分母に定数項がなくなっちゃったからな．分母の定数項が y[n] に対応する部
分なので，y[n] = · · · の形にしたいのなら，それが残るように元の伝達関数の分子・分母を z で割っておくのがよかった．まあ，時不変なシステムなんだから，今の計算結果のまま n を 1 時刻進めても同じ答えになるけどな．
やる夫 あ，そうか，じゃあ 1 時刻ずらして，

y[n] = −y[n − 1] + 4x[n + 1] + 5x[n] + 6x[n − 1]

(A.68)という式で y[n] は計算できることにるお．
やらない夫 本当に何の問題もなく「計算できる」か?
やる夫 ん? あー，y[n] を計算するのに未来の入力 x[n + 1] が必要だお．因果的じゃないってことだお．
やらない夫 そういうことだ．離散時間の場合は，連続時間の場合の「微分の実現可能性がどうのこうの」という微妙な話とは違って，非プロパーなシステムは因果的にならないというわかりやすい話になっ
ている．

A.7

1/(1 − αz −1 )p の逆 z 変換

やる夫 なるほど，じゃあ，とりあえず次数の話はこれで解決したお．残りは 分母 = 0 に重解がある場合だけだお．α が p 重解のとき，部分分数展開すると

w2
wp−1
wp
w1
+
+ ··· ++
(1 − αz −1 )p(1 − αz −1 )p−1
(1 − αz −1 )2
1 − αz −1(A.69)が出てくるわけだお．これもラプラス変換のときと同じく，重複度の数だけ 1/(1 − αz −1 ) を直列につなげたものを考えればいいのかお?
やらない夫 そう考えるのが自然だな．時間領域で見ると，

z1 [n] = αz1 [n − 1] + z2 [n](A.70)

z2 [n] = αz2 [n − 1] + z3 [n](A.71)..
.

(A.72)

zp−1 [n] = αzp−1 [n − 1] + zp [n](A.73)

zp [n] = αzp [n − 1] + x[n](A.74)になる．x[n] から z1 [n] に至るシステムのインパルス応答を考えれば，1/(1 − αz −1 )p の逆 z 変換を得ることができる．これを求めてみよう．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

226

伝達関数の部分分数展開

やる夫 ええと，まず 1/(1 − αz −1) 単独のインパルス応答が αn u0 [n] になるのは本編でやった通りだお．連
続時間のときと同じように下から順にたたみこんでいくと，まずzp−1 [n] = (αn u0 [n]) ∗ zp [n](A.75)= (α u0 [n]) ∗ (α u0 [n])
n

∞


=

n

(A.76)(αn−m u0 [n − m])(αm u0 [m])(A.77)

m=−∞= u0 [n]nαn−m αm(A.78)

m=0= u0 [n]αnn

1(A.79)= (n + 1)αn u0 [n](A.80)

m=0になるお．単位ステップ関数の扱いも連続時間のときと同じだお．
やらない夫 それが 1/(1 − αz −1 )2 の逆 z 変換だな．zp−2 はどうだ?
やる夫 同じ流れでガリガリ計算するお．

zp−2 [n] = (αn u0 [n]) ∗ zp−1 [n]= u0 [n]n(A.81)

αn−m (m + 1)αm

(A.82)

m=0
n= u0 [n]αn(m + 1)(A.83)

m=0n(n + 1)
+ n + 1)αn u0 [n]2n2 + 3n + 2 n=
α u0 [n]2(n + 1)(n + 2) nα u0 [n]=2=((A.84)(A.85)(A.86)

これが 1/(1 − αz −1 )3 の逆 z 変換になるわけだお．
んー，なんか面倒な感じになったお．この先も続けていけるのかお?
やらない夫 ちょっと面倒なのは確かだな．だが総和の公式n

(m + 1)(m + 2) · · · (m + k) =m=0n(n + 1)(n + 2) · · · (n + k)(n + k + 1)
k+1

(A.87)

を使うと，zp−3 [n] =(n + 1)(n + 2)(n + 3) nα u0 [n]2·3(A.88)(n + 1)(n + 2) · · · (n + p − 1) n
α u0 [n](p − 1)!

(A.89)..
.
z1 [n] =(A.90)と計算できる．
やる夫 えー，そんな総和の公式初めて見たお．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録A

227

伝達関数の部分分数展開

やらない夫 まあ，この計算ができること自体はそれほど重要じゃない．必要になったときに参考書の変換表を見れば済むことだ．それよりも，特性方程式が重解を持つ場合も，それに対応して出てくる応答
は指数関数 αn に 高々 n の多項式をかけたものだってことを理解しておくのが重要だ．
やる夫 高々多項式だから，やっぱり収束・発散には指数関数の部分だけが効いて， |α| < 1 なら収束するといえるわけだお．
やらない夫 そう，だから重解の有無に関わらず， z 平面の単位円内にすべての極があることを安定条件としてよい(p. 185) ってわけだ．
まあ，せっかく作ったから一応z 変換表 (p. 168) に追加しておこう．
時間領域(n + 1)(n + 2) · · · (n + p − 1) n
α u0 [n](p − 1)!

s 領域
1(1 − αz −1 )p

やる夫で学ぶディジタル信号処理, ver. 2016.01.08

228

付 録B
B.1

バタワースフィルタ

バタワースフィルタの伝達関数

やらない夫 IIR フィルタの間接設計 (p. 202) の例として，バタワースフィルタというアナログフィルタをプロトタイプとしたものを紹介したんだが，バタワースフィルタ自体は完全に天下りで与えてしまったのがちょっと心残りだ．
やる夫 正直，あの式 (16.19) も，その極の配置も，さっぱり意味がわからんお．
やらない夫 まあ，アナログフィルタは本題じゃないとはいえ，さすがにひどかった気がするので，一応フォ
ローしておこうと思う．
やる夫 手短にお願いしますお．
やらない夫 話の出発点は，N 次バタワースフィルタの振幅特性|Hbw (jΩ)| = *
1+

1
Ω
Ωc

2N

(16.20)だ．こういう振幅特性を実現するような伝達関数が，どうして式 (16.19) のような形で表されるのかを知りたい．
やる夫 んー，s = jΩ を代入して Hbw (s) を求める，とかじゃダメなのかお?
やらない夫 それじゃ |Hbw (s)| が得られるだけだからな．伝達関数の振幅は決まるが，位相が手に入らない．
やる夫 あー，そういうことかお．
やらない夫 というわけで，もう少し遠回りが必要だ．
まず前提として，Hbw (s) のインパルス応答 hbw (t) は実信号だとする．すると，それをフーリエ変換
した Hbw (jΩ) は振幅が偶関数，位相が奇関数になる．これはわかるな?
やる夫 あ，えーと，フーリエ級数の話のとき (p. 28) とか，フィルタの線形位相特性の話のとき (p. 187)
とか，ちょくちょく出てきた話だったお．正の周波数と負の周波数成分どうしで虚数部分を打ち消し合う必要があるから，そうなるんだったお．
やらない夫 振幅が偶関数で位相が奇関数ということは，Hbw (jΩ) は Ω の符号を変えると複素共役になるということだ．

Hbw (−jΩ) = Hbw (jΩ)∗
やる夫 振幅が同じで，位相が逆になるんだから，まあそうなるお．

(B.1)

付 録B

229

バタワースフィルタ

やらない夫 このことを利用してやる．ちょっと唐突だが，伝達関数が G(s) = Hbw (s)Hbw (−s) であるような別のシステムを考える．そうすると今の関係から，このシステムの周波数応答，つまり G(jΩ) は，G(jΩ) = Hbw (jΩ)Hbw (−jΩ)

(B.2)

∗

= Hbw (jΩ)Hbw (jΩ)(B.3)

= |Hbw (jΩ)|2(B.4)と変形できるので，Hbw (s) の振幅特性の 2 乗に一致する．
やる夫 なるほど，共役な複素数をかけると絶対値になることをうまく使ってるんだお．
やらない夫 |Hbw (jΩ)| は与えられているので，G(jΩ) はG(jΩ) = |Hbw (jΩ)|21=
1 + (Ω/Ωc )2N
Ω2N= 2N c 2N
Ωc + Ω

(B.5)
(B.6)
(B.7)

と求まる．以下，ここから G(s) の形を定め，さらに Hbw (s) を定めようという話だ．
やる夫 ちっとも手短じゃなさそうだお…
やらない夫 まあそう言うな．まず G(s) だが，G(jΩ) に jΩ = s を代入してやればいい．
やる夫 えーと，つまり Ω = s/j だから，

G(s) =
=

Ω2N
c

(B.8)

2N

s
Ω2N
c + j 2N

Ω2N
c
N 2N
Ω2N
c + (−1) s(B.9)ってことになるかお．
やらない夫 いいだろう．分子が定数，分母が s の 2N 次式だから，零点は無く，極が 2N 個あるはずだ
な．極がどういう配置になっているか調べてみよう．
N 2N
やる夫 えーと，分母 = 0 を解けばいいんだから Ω2N= 0 を解いて…，あれ? どうすればいc + (−1) s

いんだお?
やらない夫 そうだな，極座標で表示してみるのが手っ取り早いかな．実数 r ≥ 0 と θ を使って s = rejθと表してみたらどうなる?
やる夫 そのまま代入してみるお．

Ω2N= −(−1)N r2N ej2N θc(B.10)

うー，まだややこしいお．
やらない夫 θ が複素指数関数の中にしかないので，両辺の絶対値を取れば r だけの方程式になるな．
やる夫 あー，なるほど，絶対値を取ると，r も Ωc も正だから

r2N = Ω2Nc

(B.11)

r = Ωc(B.12)
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録B

230

バタワースフィルタとなって r は定まるわけだお．残りは θ だけど，元の式に r = Ωc を代入して

ej2N θ = −(−1)N(B.13)

を満たせばいいわけだお．
やらない夫 そうだな．(−1)N があるので，N が奇数のときと偶数のときで場合分けしよう．
やる夫 N が奇数のときは ej2N θ = 1 だから，2N θ が 2π の整数倍ならいいんだお．だから，n を任意の
整数として

θ=

nπ
N

(B.14)になるわけだお．
で，N が偶数のときは ej2N θ = −1 だから，えーと，2N θ が π の奇数倍ってことかお．つまり

2N θ = (2n + 1)π だから，θ=

(2n + 1)π2N

(B.15)になると思うお．
やらない夫 いずれにせよ，極は半径 Ωc の単位円上に等間隔に並ぶわけだな．例として N = 3 と N = 4の場合はこうなる．

N=3

Im

N=4

Im
jΩc

jΩc

Ωc

Re

Ωc

Re

やる夫 おー，なんかどこかで見たような配置 (p. 203) に似てるお．
やらない夫 ああ，もう一息だ．ここまでで得られたのはあくまで G(s) の極であって，G(s) = Hbw (s)Hbw (−s)
だったから，これらの 2N 個の極を Hbw (s) と Hbw (−s) に分配したい．そうすれば Hbw (s) が定まる．
やる夫 んー，じゃあ好きなように N 個ずつに分ければいいのかお?
やらない夫 そういうわけにはいかんな．まず Hbw (s) と Hbw (−s) は，片方を決めればもう一方も自動的に決まってしまうような関係だ．具体的には，Hbw (s) の s のところに −s を代入すれば Hbw (−s) になるわけなので，極の配置もこの関係を満たさなくてはならない．
やる夫 えーと，じゃあ例えばある s = s1 が Hbw (s) の極だったとしたら，Hbw (−s) の極には s = −s1 が含まれていなくちゃならないってことかお．あ，つまり，原点に対して対称になるペアを 1 個ずつ

Hbw (s) と Hbw (−s) に分配してやればいいってことだお．
やらない夫 そういうことになる．もう一つの条件は，今フィルタとして使いたい Hbw (s) の方は，安定でなくてはならないということだ．
やる夫で学ぶディジタル信号処理, ver. 2016.01.08

付 録B

231

バタワースフィルタ

やる夫 そうか，Hbw (s) の極はすべて実部が負じゃないといけない (p. 151) んだったお．
やらない夫 そこまでわかればもう答えは一通りしかない．G(s) の極のうち，左半平面にあるもの全部を

Hbw (s) の極として選ぶことになる．
やる夫 Hbw (−s) の極との原点対称性も問題ないお．
やらない夫 というわけで，N 次バタワースフィルタの極配置は既に見たような配置 (p. 203) になる．この伝達関数を式で表すと，ちょっとややこしいが式 (16.19) のようになるわけだ．

B.2

バタワースフィルタの次数の決定

やらない夫 せっかくなのでもう一つ，要求仕様から次数 N を決める方法についても説明しておこう．
やる夫 あー，そういえばプロトタイプフィルタに使うようなアナログフィルタは，次数を一発で求められるものが多いって言ってたお (p. 204) ．バタワースフィルタもそうなのかお?
やらない夫 もちろんだ．実際に計算式を導出してみよう．
要求仕様を次のように与えることにする．阻止域に入る最小の周波数を ΩL として，そのときの振幅を A とする．
やる夫 えーと，つまり阻止域では最大でもこのくらいの振幅までに押さえてくれっていう値 A を決めて，ある周波数 ΩL 以上ではそれが守られるようにするってことかお．…あれ? それって遮断周波数とは違うのかお?
やらない夫 違うぞ．もう一度フィルタ仕様に関する用語 (p. 197) を確認して欲しいんだが，遮断周波数√
Ωc ってのは振幅が 1/ 2 倍になるところだ．そこよりさらに周波数を大きくしたときに，どれくらい急激に振幅が小さくなるかを決めるのが，今考えているパラメータだ．
やる夫 あ，そうか，遮断周波数が同じでも，遮断特性がどのくらい急かの違いがあるんだったお．
やらない夫 つまり与えられた要求仕様は |Hbw (jΩL )| = A だということだ．式 (16.20) の振幅特性をこれ
に代入して

1
= A2
1 + (ΩL /Ωc )2N(B.16)

が得られる．後はこれを N について解けばいい．

1
−1
A2
ΩL
1
2N log= log( 2 − 1)ΩcAlog( A12 − 1)N=L
2 log ΩΩc(ΩL /Ωc )2N =(B.17)(B.18)(B.19)

実際の次数は，こうやって得られた N を切り上げた最小の整数にする．
やる夫 なるほど，試行錯誤しなくても必要な次数が決まるわけだお．

やる夫で学ぶディジタル信号処理, ver. 2016.01.08