ディジタル信号処理による信号発生とエイリアス(6)

saw2.wav」の 46.875 Hz のエイリアス成分は、HPF を通せば除去できますが、基本波の 4359.375 Hz の周辺の -20 dB 程度のスプリアス成分 (10 倍波や 12 倍波のエイリアス) は除去できません。
いったん、サンプル値になったものから、本来のベースバンド成分に影響を与えず、エイリアス成分だけを除去することは不可能です。
波形生成の段階でエイリアスを除去しておかなければなりませんが、これといって特別な方法が存在しているわけではありません。
まず、オーバーサンプリングの状態で波形を発生させ、本来必要なベースバンド領域と、エイリアスの領域とが、なるべく重ならないようにします。
そして、フィルタリングにより、エイリアスをなるべく減衰させ、ダウンサンプリングして、必要なサンプリング周波数まで落とします。
しかし、オーバーサンプリング周波数で見れば、やはり、エイリアスの影響があるわけで、本質的な解決にはなっていません。
結局、実質的なサンプリング周波数を上げたため、ジッタの幅が狭くなるという効果になります。
「gen_saw2.py」プログラムでは、

  • 2 倍のサンプリング周波数で、理想のこぎり波をサンプリング
  • タップ数 2 のくし型フィルタ \left ( \frac{1+z^{-1}}{2} \right ) を使ってデシメーション

する方法で生成した波形を左チャンネルにおさめた「saw4.wav」ファイルが作られます。
プログラム中の「n_ovs」変数の値を変えれば、オーバーサンプリング比を変えることができます。
この wave ファイルをループ再生して、オシロスコープで観測したのが下の写真です。

上のトレースの左チャンネルの波形では、ジッタが少し減っています。
次の図は「saw2.wav」を波形編集ソフトの FFT 機能で見たグラフで、シアン色のグラフは左チャンネルのエイリアスを含む波形のスペクトルで、マゼンタ色のグラフは右チャンネルのエイリアスなしの波形のスペクトルです。

下の図は「saw4.wav」のスペクトルです。

デシメーション時の、くし型フィルタにより、左チャンネルの

などの成分のレベルが 30 dB 程度下がっていることが分かります。
一方、2 倍オーバーサンプリングではフィルタリングできない

などは、レベルが変化していないことが分かります。
「saw4.wav」についても、前と同様の FFT 結果を示すと、

周波数
[Hz]
saw4
L ch
[dB]
saw2
L ch
[dB]
0.000 -58.31 -69.91
46.875 -57.11 -20.83
93.750 -26.85 -26.84
140.625 -57.10 -30.36
187.500 -32.86 -32.84
234.375 -57.08 -34.77
281.250 -36.37 -36.33
328.125 -57.05 -37.65
375.000 -38.85 -38.78
... ... ...
4218.750 -45.08 -30.61
4265.625 -27.36 -27.23
4312.500 -37.56 -21.58
4359.375 -0.09 0.00
4406.250 -37.82 -20.00
4453.125 -26.49 -26.44
4500.000 -50.27 -30.09

となります。
DC 付近の 11 倍波、33 倍波、55 倍波などは 20 〜 30 dB 程度減少し、基本波付近の

などは 18 dB 程度減少していることが分かります。
一方、基本波付近の

などは、レベルにほとんど変化がないことが分かります。