エイリアシング、違う速さの波が同じ測定値に見える理由

ゆるやかな水色の波と細かい桃色の波が、等間隔の白い板の後ろで重なる。

毎秒10回測った信号が、ゆっくりした波に見えたとします。それは本当にゆっくり変わっていたのでしょうか。測定の間で何が起きたかによっては、速い波でもまったく同じ値が並びます。この取り違えがエイリアシング(折り返し)です。後からグラフを滑らかにしても、失った区別が自動的に戻るわけではありません。

簡単にまとめると?

  • 等間隔の標本化では、異なる周波数の波が同じ標本列を作ることがあります。値を正確に測れても、元の波を一つに決められない場合があります。
  • 2 Hzと8 Hzの余弦波を10 Hzで標本化すると一致します。20 Hzで取り直すと、間に増えた測定点で違いが現れます。
  • 対策は、必要な帯域に合った取得速度と、標本化前の低域通過フィルターです。記録後の補間やFFTのゼロ埋めとは役割が違います。

測った値と、値の間の形は違う

標本化(サンプリング)は、連続した信号から、離れた時刻の値を取り出す操作です。1秒あたりの取得回数をサンプリング周波数 fs と書きます。10 Hzなら0.1秒ごとです。ここでは等間隔で瞬間の値を正確に測れる理想的な場合を考えます。

ある時刻の値が分かっても、その次の測定時刻までの形は直接には記録されません。二つの点の間を穏やかにつなぐ曲線も、その間に何度も上下して同じ点へ戻る曲線も考えられます。元の信号について何の条件もなければ、点を通る曲線は一つではありません。

2 Hzと8 Hzが一致する小さな計算

振幅を1にそろえた二つの余弦波を用意します。時間を秒で表すと、x(t)=cos(2π×2t) と y(t)=cos(2π×8t) です。前者は1秒に2周期、後者は8周期あります。両方とも時刻0で値1から始まります。

10 Hzで測る時刻は t=n/10。整数nに対して、8 Hz側の角度は 2π×8n/10 = 2πn − 2π×2n/10 と書けます。余弦は一周分を引いても変わらず、角度の符号を反転しても同じなので、二つの標本値はすべて一致します。

実際に0、0.1、0.2、0.3、0.4、0.5秒で計算すると、どちらもおよそ 1、0.309、−0.809、−0.809、0.309、1 です。丸めた値が偶然近いのではなく、式の上で同じになります。

2ヘルツと8ヘルツの余弦波は毎秒10点の標本で一致する。毎秒20点では0.05秒の値が約0.809とマイナス0.809に分かれる。
独自に計算した余弦波。上段は10 Hzで共通になる測定点、下段は20 Hzへ増やした場合。線は測る前の波、点は取得した値を表す。

この標本列だけを受け取った人に「元は2 Hzですか、8 Hzですか」と尋ねても、答えを一つに絞る情報がありません。これがエイリアシングの核心です。センサーの値に雑音がなくても起こります。

取得回数を増やすと、区別できる点が現れる

今度は同じ二つの波を20 Hz、つまり0.05秒ごとに測り直します。時刻0.05秒で、2 Hz側は cos(0.2π) ≈ 0.809、8 Hz側は cos(0.8π) ≈ −0.809 です。10 Hzの記録では抜けていた時刻に、違いが現れます。

ここで増えたのは、本当に観測した値です。先ほどの10 Hzの記録をソフトウェアで20 Hz相当に補間しても、入力が同じ二つのケースからは同じ結果が作られます。補間方法は点の間の形を仮定できますが、どちらの波が実在したかという証拠を追加できません。

さらに10 Hzのまま観測時間を延ばしても、この二つの理想的な波はすべての整数nで一致し続けます。「長く測れば必ず解決する」わけでもないことが、この式から分かります。

標本化定理の「2倍」は、条件付きの境界

元の信号に含まれる最大周波数を fmax とし、それより高い成分がない帯域制限を仮定します。標本化定理では、fs > 2fmax を満たす等間隔の理想的な標本から、元の信号を再構成できます。実際の有限長記録や補間処理が、無条件に完全復元をするという意味ではありません。

「ちょうど2倍なら、どんな位相でも大丈夫」と考えないことも大切です。独自の境界例として、5 Hzの正弦波 sin(2π×5t) を10 Hzで測ると、各標本は sin(πn)=0 になります。波は存在するのに、測定点はすべて0です。位相を変えれば標本値も変わるため、境界での扱いには条件が必要です。

先ほどの2 Hzと8 Hzの例では、20 Hzは8 Hzの2倍を上回ります。ただし、この二つ以外に高周波成分がないという仮定も含みます。測りたい成分だけを見て取得速度を決め、入力に混じる他の成分を無視することはできません。

フィルターは、取り違える前に帯域を整える

アンチエイリアシングフィルターは、標本化する前に高い周波数成分を弱めるための低域通過フィルターです。目的は、記録後に折り返した成分を元の位置へ戻すことではなく、そもそも不要な成分が重なり込む量を抑えることです。

たとえば2 Hzのゆっくりした変化だけを取りたいのに8 Hzの振動が混じるなら、取得前に8 Hz側を十分弱める設計を考えます。一方、8 Hzそのものを知りたい測定で、それをフィルターで消してしまえば目的を満たせません。その場合は、必要な帯域を通せるフィルターと、より高い取得速度を組み合わせます。

現実のフィルターには、通す帯域から止める帯域までの移行幅と、有限の減衰量があります。境界まで欲しい信号を詰め込むのではなく、必要帯域、不要成分の強さ、許せる誤差を決めて余裕を持たせます。

測定を変える操作と、表示を変える操作

取得速度を上げること、観測を長くすること、補間やFFTのゼロ埋めで表示点を増やすことは、別々の操作です。今回の2 Hzと8 Hzを区別するには、同じ時刻の並びを長く眺めるより、0.05秒など新しい時刻の値を得ることが効きました。

計測条件を比べるときは、1秒あたりの実測点数、入力に含まれる帯域、取得前のフィルター、記録時間を分けて確認します。きれいなグラフに見えることと、元の現象を区別する情報があることを切り分けると、設定を変更する目的がはっきりします。

この図は無限に続く理想的な波の一部を描いたものです。計算では浮動小数点の丸め誤差も確認していますが、実機の量子化雑音、時計の揺らぎ、センサーの応答を測ったものではありません。

出典