第10章
サンプリング定理
この章のねらい
- サンプリングがスペクトルの周期的な複製を生むことを、くし型関数を使って式で導けるようになる
- サンプリング定理とナイキスト周波数を自分の言葉で説明できるようになる
- エイリアシング(折り返し)がいつ・どのように起きるかを予測できるようになる
10.1 サンプリングされた信号から元の連続時間信号を復元できるか
ずっと引っかかってたことがあるんだお。第4章でアナログ信号をサンプリングして離散時間信号にしたとき、サンプル点の間の値は全部捨てたんだお。あれ、本当に捨てちゃってよかったのかお?
いい引っかかりだ。この章はその伏線を全部回収する回だ。問題をはっきり書いておこう。
連続時間信号 を、間隔 で測った値の列 だけが手元にある。この数列だけから、元の を完全に取り戻せるか?
無理に決まってるお。サンプル点とサンプル点の間の埋め方なんて無数にあるお。点の上では同じ値を取って、間でこっそり暴れる別の信号がいくらでも作れるお。グラフの点つなぎだって、人によって違う絵になるんだお。
常識的に考えればそのとおりだ。実際、何の条件もなければ復元は不可能だ。お前の言うとおり、同じサンプル値を通る連続信号は無限にある。
ところが驚くべきことに、信号にある条件を課すと、その無数の候補の中から正解がただ1つに絞れる。サンプル値だけから元の連続時間信号が一意に、完全に復元できるんだ。
ただ1つに!? 点の間を見てもいないのに、点の間の値が当てられるのかお!?
当てられる。その条件と理由を導くのがこの章、サンプリング定理だ。結論だけ先に言っておくと「信号に含まれる最高周波数の2倍より速くサンプリングしていれば完全復元できる」。ディジタル信号処理という分野がそもそも成立する根拠だから、ここは本教材のクライマックスだと思って付き合え。
クライマックスかお…。気合いを入れるお。
10.2 くし型関数のフーリエ変換
まず道具を1つ用意する。間隔 でデルタ関数を無限に並べた関数だ。
形が櫛の歯に似ているのでくし型関数と呼ぶ。
デルタ関数の行進だお。こんなトゲトゲ、何に使うんだお。
次の節でサンプリングという操作そのものを表すのに使う。だがその前に、こいつのフーリエ変換を求めておきたい。
着眼点はこうだ。 は周期 で同じ形が繰り返す、つまり周期関数だ。周期関数なら第2章の複素フーリエ級数で展開できる。基本角周波数を と書くと、フーリエ係数は
ちょっと待つお、自力で確かめるお。積分区間は から で、この中に入ってる櫛の歯は の1本だけ…。あとは第3章のつまみ出し性質で、 の での値、つまり がつまみ出される…。だから によらず全部 かお!
完璧だ。くし型関数はすべての高調波を均等に含む。第3章で「 のスペクトルは定数1」とやったのと同じ匂いがするだろ。
あとは第3章の式 (3.8)、「周期信号のフーリエ変換は重み のデルタ列」に流し込むだけだ。
出てきたのもくし型だお! 時間側で間隔 のくし型をフーリエ変換すると、周波数側で間隔 のくし型になるのかお。
そうだ。「くし型のフーリエ変換はくし型」。これがこの章の主役の道具だ。歯の間隔に注目しておけ。時間側の間隔 と周波数側の間隔 は逆数の関係だ。細かくサンプリングするほど、周波数側の歯はまばらになる。この逆数関係があとで効いてくる。
10.3 くし型関数をたたみこむ
では本題だ。「サンプリングする」という操作を数式にする。信号 にくし型関数を掛け算してみろ。
えーと…デルタ関数は 以外で 0 だから、 のうち での値だけが各デルタの重みとして生き残る…。お、サンプル値 の列ができてるお! 点の間の情報はこの瞬間に消えたんだお。
そうだ。この がサンプリング後の信号のモデルだ。知りたいのはこいつのスペクトル だな。ここで第8章でやった性質を引っ張り出す。時間領域の積は、周波数領域ではスペクトルのたたみこみになる。
たたみこみと積のペアだお。畳む側がひっくり返るやつだお。
それだ。式 (10.4) に当てはめる。 のスペクトルが 、くし型のスペクトルが式 (10.3) だから
ここで2つの性質を使った。1つは「デルタ関数とのたたみこみは、デルタの立っている位置への平行移動コピー」、つまり 。もう1つは、定数 がたたみこみの外にそのまま出せること。
そして前に出た係数 を片付けよう。くし型の歯の間隔は (式 10.3 で確認したとおり)だったから、これを代入すると
と、 がきれいに打ち消し合って になる。よって
たたみこみの と、くし型の重み が、 を通じてちょうど相殺し、残るのは だけ——この一手がこの式の地味だが大事な急所だ。
が について全部足されてる…。つまり元のスペクトル が、 おきに無限にコピーされて並んでるのかお!?
そういうことだ。この一行が章の心臓部だから、言葉でもう一度言う。
信号をサンプリングすると、そのスペクトルは「元のスペクトルを間隔 でずらしながら無限に複製して足し合わせたもの」になる。
時間側でくし型を掛けたら、周波数側ではくし型がたたみこまれた。たたみこみの相手がデルタの列だから、結果は複製の列。下のデモで目に焼き付けろ。緑が元のスペクトル、水色が複製だ。
おお… を下げると、コピーの群れがじりじり寄ってくるお。なんか怖いお。で、 を切ったらピンクの線が出てきて「エイリアシング発生!」って言われたお。
その「重なるかどうか」が運命の分かれ目だ。まずは重なっていない平和な場合から片付けよう。
10.4 連続時間信号の復元
元の信号のスペクトルが の範囲にしかない、つまり帯域制限されているとしよう。デモの三角形なら だ。複製は おきに並ぶから、隣の複製とぶつからない条件は
だ。このとき式 (10.6’) の和のうち、 の範囲には の項、つまり元の がそのまま( 倍されただけで)無傷で残っている。
無傷で残ってるなら…そこだけ切り出せば元に戻るんじゃないかお? 真ん中だけ通すフィルタで。
それが答えだ。理想ローパスフィルタを用意する。
にこれを掛ければ、複製は全部消え、 の項の も利得 で打ち消されて、。スペクトルが完全に一致するなら信号も完全に一致する。復元完了だ。
あっさり勝ったお。…で、これを時間領域で見るとどういう操作になってるんだお? 「周波数領域で掛け算」は「時間領域でたたみこみ」だったお。
いい流れだ。式 (10.7) のフィルタのインパルス応答は、第3章でやった「矩形のフーリエ変換は sinc」の逆向きで
これと (デルタの列)のたたみこみだから、デルタの位置に sinc がコピーされて
サンプル点1個につき sinc 関数を1本立てて、全部足す。これが「点の間を埋める」操作の正体で、sinc 補間と呼ぶ。
待つお、検算するお。 は で 1、ほかのサンプル点 ()では だお。だから各サンプル点の上では自分の sinc だけが値 1 で立ってて、復元波形はちゃんと を通る…。点の間は、全部の sinc の裾が協力して埋めてるのかお。
そのとおり。しかも重要なのは、これが「それっぽい滑らかな補間」ではなく、帯域制限された信号に対しては唯一の正解だという点だ。10.1 節でお前が言った「埋め方は無数にある」は、帯域制限という条件がその無数の候補を1つに絞る、というのが種明かしだ。 より速く振動する成分を持たない関数で、全サンプル点を通るものは1つしかない。下のデモで、sinc の裾が点と点の間を埋める様子を目で確かめろ。
おお…薄い線が1個ずつ波打ってて、それを全部足すと点の間がスッと埋まるお。各 sinc は自分の点では 1、隣の点では 0 だから、点の上では1人だけが立ってて、点と点の間だけみんなで分担してるのが見えるお!
それが式 (10.9) の絵だ。サンプル数 M を増やしても各 sinc の役割は変わらない。1点1本、裾で間を埋める。これを無限和まで延ばしたものが理想の完全復元だ。
10.5 エイリアシング
さて、いよいよ重なる場合だ。 だと、隣の複製が基本帯域 にはみ出して足し込まれる。さっきのデモでピンクの線が見せていた状況だ。
はみ出した分は、もともとそこにあった成分と足し算されちゃうんだお? 足されたら最後、どっちがどっちか分からないお…。
そう、分からない。これが致命的なんだ。 の複製 のはみ出しは、元の信号の高い周波数成分が、低い周波数の位置に化けて現れたものだ。具体的には、周波数 付近の成分が という低い周波数に折り返ってくる。この現象をエイリアシング(折り返しひずみ)と呼ぶ。alias、つまり「偽名」だ。
一度混ざったら、ローパスフィルタだろうが何だろうが、後からは絶対に分離できない。そして、ここまでの話をまとめると有名な定理になる。
「最高周波数の2倍より速く」だお。ぴったり2倍じゃダメなのかお?
一般にはダメだ。反例が簡単に作れる。 をちょうど でサンプリングしてみろ。サンプル点は だから、値は 。全サンプルが 0 になって、信号があったことすら分からなくなる。だから不等号は厳密な だ。
それより、エイリアシングが起きたとき信号がどう見えるかを時間領域で体感しておけ。下のデモは Hz 固定で、周波数 の cos 波をサンプリングして sinc 補間で復元する装置だ。 をナイキスト周波数の 4 Hz を超えて上げてみろ。
f = 3 Hz までは橙の復元波形が原信号に完全に重なってるお。すごいお、本当に点の間が当てられてるお…。でも f = 7 Hz にしたら、サンプル点はちゃんと原信号の上に乗ってるのに、復元波形がゆーっくりした 1 Hz の波になっちゃったお!
それがエイリアシングの顔だ。7 Hz の波と 1 Hz の波は、8 Hz でサンプリングする限りまったく同じサンプル値の列を出す。受け取った側には区別する手がかりが一切ない。そして復元装置(理想ローパス)は、候補のうちナイキスト周波数以下の方、つまり 1 Hz を選ぶ。7 Hz の信号が 1 Hz の「偽名」を名乗るわけだ。
…あれ? この話、聞き覚えがあるお。第4章で「離散時間の世界では と の区別がつかない」ってやったお。あれと同じことかお?
同じことだ。よく繋げた。第4章では「離散時間信号の性質」として天下り的に出てきた話が、今は「スペクトルが おきに複製されるから」という理由付きで言える。正規化角周波数で ずれた波、実周波数で言えば と 、、… は、サンプリングされた瞬間に同じ顔になるんだ。
身近な実例もある。車の CM やレースの映像で、タイヤのホイールがゆっくり逆回転して見えたことはないか?
あるお! あれずっと不思議だったんだお。
カメラは毎秒の決まったコマ数(たとえば 30 fps)で撮影する。これは回転の位相を 30 Hz でサンプリングしているのと同じだ。ホイールの回転(×スポークの本数)がその半分を超えると、位相の進みが折り返して、「少しだけ戻った」ようにしか見えなくなる。扇風機の羽根やヘリのローターが映像で止まったり逆転したりするのも全部同じ、目の前で起きてるエイリアシングだ。
なるほどだお…。じゃあ音楽 CD のサンプリング周波数が 44100 Hz っていうのも、この定理から来てるのかお。
そうだ。人間の可聴域はせいぜい 20 kHz までと言われている。定理によれば 40 kHz より速くサンプリングすれば可聴域は完全に記録できる。44.1 kHz はそれに余裕を持たせた値だ。なぜぴったり 40 kHz にしないのか、その「余裕」が何のために要るのかは、次章のアンチエイリアスフィルタの話で分かる。
10.6 くし型関数で理解する4種類のフーリエ変換の関係
最後に、この章の道具で見晴らしのいい場所に登って終わろう。ここまでの教材で「フーリエなんとか」が4種類出てきたのに気づいてるか。フーリエ級数(第1・2章)、フーリエ変換(第3章)、離散時間フーリエ変換(第5章)、離散フーリエ変換(第6章)だ。
気づいてたお…。正直、4人の顔の区別に自信がないままここまで来たお…。
今日でけりをつける。実は4種類の違いは、たった2つの法則の組み合わせで全部説明できる。どちらもこの章でやったことだ。
- 時間をサンプリングする(くし型を掛ける)⇔ スペクトルが周期化する(くし型がたたみこまれて複製が並ぶ) — 式 (10.6) そのもの
- 時間が周期的(くし型がたたみこまれている)⇔ スペクトルが離散化する(くし型が掛かって線スペクトルになる) — 第3章の式 (3.8) そのもの
積とたたみこみはフーリエ変換で互いに入れ替わるから、この2つは同じコインの裏表だ。これで表が埋まる。
| 変換 | 時間側 | 周波数側 |
|---|---|---|
| フーリエ変換 | 連続・非周期 | 連続・非周期 |
| フーリエ級数 | 連続・周期的 | 離散・非周期 |
| 離散時間フーリエ変換 | 離散・非周期 | 連続・周期的 |
| 離散フーリエ変換 | 離散・周期的 | 離散・周期的 |
おお…。フーリエ級数は「時間が周期的だから周波数が離散(線スペクトル)」、離散時間フーリエ変換は「時間が離散だから周波数が周期的( ごとに繰り返す)」…。あ、ちょうど鏡写しになってるお! 第3章の最後の意味深な予告はこれだったのかお!
回収完了だ。そして4つ目の離散フーリエ変換は、時間側に両方の細工をした姿だ。サンプリングしたからスペクトルは周期的になり、さらに周期化した(N点で繰り返すとみなした)からスペクトルは離散的になる。結果、時間も周波数も「離散かつ周期的」で、どちらも有限個の数列で書ける。だからコンピュータで計算できる。第6章で出てきた「N点の循環する世界」の正体は、時間側の周期化が連れてきたものだったわけだ。
4人は別人じゃなくて、同じフーリエ変換に「くし型の化粧」をどっち側に施したかの違いだったんだお…。なんか視界が開けたお。
その視界を持ってスペクトル解析の実務に降りるのが次章だ。サンプリング定理が「原理上できる」を保証し、次章は「実際にやるとどう汚れるか」を扱う。
- くし型関数(間隔 のデルタ列)のフーリエ変換は、間隔 のくし型関数
- サンプリング=信号×くし型。スペクトルでは くし型とのたたみこみ になり、 が間隔 で無限に複製される:
- 複製が重ならなければ()、理想ローパスフィルタで基本帯域を切り出して完全復元できる。時間領域では sinc 補間
- サンプリング定理: なら帯域制限信号は完全復元可能。 がナイキスト周波数
- では複製が重なり、高い周波数成分が低い周波数に化けるエイリアシングが起きる。一度混ざると分離不可能(車輪の逆回転はその実例)
- 時間のサンプリング ⇔ スペクトルの周期化、時間の周期化 ⇔ スペクトルの離散化。この2法則で、4種類のフーリエ変換は1枚の絵にまとまる