SonofSamlawのブログ

うひょひょ

デジタルフィルタとオーバーサンプリング

   

オーバーサンプリングについて考えました。
サンプル数を増やすことを言いますね。
どのようにするのか知っていますか?
簡単な例でやってみます。エクセルでやってみました(^^

 ■
 まず、やり方です。簡単です。信号のデータ列の間に、「0」を挿入します。これでサンプル数は倍になりました。しかし、でこぼこです。  
 これを図1に示します。
  

     


            図1「0」をサンプル間に挿入

 そして、このデータ列を、ローパスフィルタ(デジタルフィルタ)に通します。このでこぼこをとってしまうのです。簡単な1次のフィルタに入れた結果を図2に示します。きれいにならされていますね。振幅はこのため半分になっています。


 エクセルでの計算は、

    Y(n)=(X(n)+X(n-1)-Y(n-1)*(1ー6)/(6+1) 

です。Xは元データ、Yは変換後のデータです。     

 

 

    


        図2 オーバーサンプリングされたデータ列


■理論

  1次フィルタだから簡単です。
ローパスフィルタ

H(s)=a/(s+a)

で炉はすることを考えます。aはカットオフ周波数をf0とすれば2πf0です。


s=(2/T)(1-z)/(1+z)

と、代入することでデジタルフィルタとなります。Tはサンプル周期です

H(z)=a/((2/T)(1-z)/(1+z)+a)

=(a*(1+z))/((2/T)*(1-z)+a*(1+z))

=(a+az)/((2/T+a)+(aー2/T)*z)

=(1+z)/((2/(Ta)+1)+(1ー2/(Ta))*z)ーー(1)


これをエクセルデータにあてはめます。

(1)式でTaがエクセルデータ上でどうなるかがわかればいいのです。

エクセルの1コマをTとし、正弦波の一周期のデータの数をNとします。
すると、

周波数F=1/(T*N)

カットオフ周波数f0をFの5倍にしたければ、

a=2π*5/(T*N)
 Ta=2π*5/N

(1)式にこのTa値をいれればOKです。



(1)式のエクセルでの計算法

Y*((2/(Ta)+1)+(1ー2/(Ta))*z) 

=X*(1+z)

より、

Y(n-1)*(1ー2/(Ta))+Y(n)*(2/(Ta)+1)

=X(n)+X(n-1) 


Y(n)=(X(n)+X(n-1)-Y(n-1)*(1ー2/(Ta))/(2/(Ta)+1) 


この式が答です。
 X(n)という数列は、測定データ列です。Y(n)は雑音の炉はされた結果
です