* サンプリングレート変換 その2 [#ddefd37b] まずは,「サンプリング」するということについて考えてみましょう. ** フーリエ変換 [#bd6241da] ここらへんの議論の元になっている理論です. 要するに, -「時間と振幅」で表される波形を「周波数と振幅」という表現に変換 -「周波数と振幅」という表現から「時間と振幅」という表現に変換すると元の波形に戻る というところをベースにした話です. 理工系の学生なら,名前とその効能ぐらいは知っているはず. 特に電気・電子系の場合はこれ無しでは話が始まりません. 「細かい議論はともかく,感覚的に理解したい」と言う向きには「[http://www.amazon.co.jp/dp/4906519008 フーリエの冒険]」という本があるので,これを読むといいでしょう. ** サンプリング [#g4701d1a] というわけで,サンプリングについて. 理屈は抜きにして図で見てみましょう. #ref(cont.png,right,around,320x240) 例えばこういう波形をサンプリングすると #clear #ref(sample.png,right,around,320x240) こうなります. #clear 元の波形が連続した時間で連続した値を持っているのに対し,サンプリング後の波形は,飛び飛びの時刻以外での振幅は 0 となっています. で,サンプリング後の波形だが,ヒゲの先頭をなだらかな線で結んでやれば元の波形を復元できそうに見えます. が,それにはある条件が必要です. その「ある条件」を満たさない例を見てみましょう. ** エイリアジング [#oc2547e8] 図で説明します. #ref(7500.png,right,around,320x240) 7500 Hz の正弦波を 8000 Hz でサンプリングしてみると… #clear #ref(500.png,right,around,320x240) まるで 500 Hz の正弦波のようになってしまいます. #clear サンプリングした後は,赤線の波形になってしまうので,元の波形が 7500 Hz なのか 500 Hz なのか区別が付かなくなってしまいます. この現象は「エイリアジング」または「折り返し歪み」と呼ばれています. ** 周波数軸で見ると [#xd1d99b6] まず,元の波形をフーリエ変換してスペクトルを見ると,下図のようになるとします. #ref(spectrum_cont.png,center) この場合,元波形をサンプリングした波形のスペクトルは下図のようになります. 図中で fs とあるのはサンプリング周波数です. #ref(spectrum_sample.png,center) 元波形のスペクトルと同じスペクトルが fs, 2fs, 3fs …の上下に対称に現れます. 下図のように高い周波数が含まれている波形の場合は #ref(spectrum_cont_alias.png,center) サンプリングすると,fs の下側に生じるスペクトルが元のスペクトルと重なってしまいます. #ref(spectrum_sample_alias.png,center) で,fs の下側に生じるスペクトルは,元波形のスペクトルと対称なので,1/2 fs を中心に元スペクトルが折り返して現れているようにも見ることができます. で,fs の下側に生じるスペクトルは元波形のスペクトルと対称なので,1/2 fs を中心に元スペクトルが折り返して現れているようにも見ることができます. 「折り返し歪み」と呼ばれるのはこのためです. 先ほどのエイリアジングも,このために生じている現象です. ** エイリアジングを防ぐためには [#cb1b5315] 1/2 fs 以上の周波数成分がエイリアジングの原因であることがわかりました. ならば,エイリアジングを防ぐ方法もわかりますね. > 元波形の 1/2 fs 以上の周波数成分を除去してからサンプリングすれば良い のです. 元波形のほうを中心に考えると > 元波形に含まれる最高の周波数の 2 倍以上の周波数でサンプリングすれば良い とも言えます. いずれにしても 1/2 fs という,「サンプリング周波数の半分」の周波数が大事ですね. というわけで,これには「ナイキスト周波数」という名前が付いています.