Numerical Analysis
Smoothing  Gaussian Filter

 信号処理に元のデータに重みづけをして足し合わせていくという、フィルタを掛ける方法がある。

これは前節で説明したように単純にΔxを動かしながらウィンドウ幅分足し合わせていくのとは少し異なる。

ここでの考え方はフィルター関数f(x)というものを用意して、

Filtered_y(x)=ΣData(x+nΔx)×f(nΔx)

という重み関数(フィルター関数)を考える。この式は移動平均のようにData(x+nΔx)を足し合わせていくのではなく

重み関数をかけている点に特徴がある。では具体的にみていこう。

まず、元データとしてガウス関数のデータを今までと同様に用意する。ガウス関数とは、



という関数であり、以下の例では、A=0.2,m=0.5、σ=0.01で、それをΔx=0.002ピッチで振幅Δy= -0.15〜0.15

のランダムノイズを付加して生成したガウス関数に倣うデータを生成する。

次にさらに、ガウスフィルタで、A=1/√(2πσ)、m=0、σ=(可変)のフィルタ関数f(x)のガウス関数のフィルタを用いる。

そして、そのデータをガウス関数でフィットすることを考えて、十分に元のA,m,σに近いパラーメータを持つ

ガウス関数となるかを確認する。

1.ガウスフィルタのσ=5のとき


で、フィッティングの結果は、A=0.19、m=0.50、σ=0.017である。

これを見てるとGaussianフィルタをかけることによって得られる信号(青線)は、ノイズ成分が低減されている。

一方で隠れていたガウス信号とノイズの信号とを識別するのは難しい。x=0.5以外の場所でも信号があるように見える。

2.ガウスフィルタのσ=2.5のとき



で、フィッティングの結果は、A=0.15、m=0.50、σ=0.019である。

フィルタのガウスのσを小さくすると元信号のσの幅とフィルタでかけてノイズの広がりが同程度になっているのが

見て取れる。ゆえにガウス信号とノイズにフィルタをかけた後のノイズのスペクトル幅がかなり同程度になっている。

結果として二つの信号の区別がつきづらいのがわかる。

事実、このフィルタのσが2.5の時はガウスフィッティングの結果も安定しなかった。


3.ガウスフィルタのσ=1のとき




で、フィッティングの結果は、A=0.18、m=0.50、σ=0.013である。

フィルタをかけた後、今回のガウスフィルタのσの幅は狭いので高周波成分しか平滑化されていない。

このように見てきたように、ガウスフィルタのσを変更することでどのくらいの周波数までのノイズを平滑化したいか

をコントロールすることが出来る。