ケィオスの時系列解析メモランダム

時系列解析,生体情報学,数学・物理などの解説です.

【信号処理の基礎】デジタルフィルタの周波数特性

デジタルフィルタの周波数特性について説明します.

 移動平均とか,差分とか,Savitzky-Golayフィルタとか,そういった計算はこの式

 y[n]= \displaystyle \sum_{k=-\infty}^{\infty} a_k\, x[n-k]

の形で書くことができます.この形で\{x[n]\}を,\{y[n]\}に変えるのが,線形のデジタルフィルタです.

 例えば,3点の移動平均は,a_{-1}=a_{0}=a_{1}=1/3,それ以外は0として,

 y[n]= \displaystyle \frac{1}{3} x[n-1]+\frac{1}{3} x[n]+\frac{1}{3} x[n+1]

です.

 隣り合う2点の差分は, a_{0}=1, a_{1}=-1,それ以外は0として,

 y[n]= \displaystyle x[n] - x[n-1]

です.

 このようなデジタルフィルタの特性を知りたいときどうするか?というのが今回のお話です.

単位インパルス応答

 畳込み定理を使えば,

 y[n]= \displaystyle \sum_{k=-\infty}^{\infty} a_k \, x[n-k]

が成り立つとき,\{x[n]\}\{y[n]\}\{a_n\}の離散フーリエ変換を,それぞれ,X\left(f\right)Y\left(f\right)A\left(f\right)とすれば,

 Y\left(f\right)= \displaystyle A\left(f\right) X\left(f\right)

が成り立ちます.

 畳込み定理なんて知らなくても導出できます.前に導出したように,

x[n]フーリエ変換X\left(f\right)のとき,x[n-k]のフーリエ変換e^{-i 2 \pi f k} X\left(f \right)

なので,

  \begin{eqnarray} y[n] &=& \displaystyle \sum_{k=-\infty}^{\infty} a_k \, x[n-k] \\ 
Y \left(f \right) &=& \sum_{k=-\infty}^{\infty} a_k \left( \,e^{-i 2 \pi f k} X \left(f \right) \right) \\
 &=& \left(\sum_{k=-\infty}^{\infty} a_k \,e^{-i 2 \pi f k} \right) X \left(f \right)  \end{eqnarray}

となります.最後の括弧の中身は,\{a_k\}の離散フーリエ変換

  \displaystyle A\left(f\right) = \sum_{k=-\infty}^{\infty} a_k \,e^{-i 2 \pi f k}

になってます.

 \displaystyle A\left(f\right) = \frac{Y\left(f\right)}{X\left(f\right)}はデジタルフィルタの周波数特性を表しています.

 x[n]が単位インパルス

   x[n] = \left\{\begin{array}{ll}
1 & (n=0) \\
0 & (n \neq 0)\end{array}
\right.

のときに, X \left(f \right) = 1になるので,出力 y[n] の応答 Y \left(f \right) は,Y\left(f\right) = A\left(f\right)です.そのため,\displaystyle A\left(f\right)は,単位インパルス応答と呼ばれます.単位インパルスのフーリエ変換 X \left(f \right) = 1なので,すべての周波数を均等に含んでいることを,忘れないでください.白色ノイズと,単位インパルスの,主な違いは,位相がそろっていないか,そろっといるかです.

3点移動平均フィルタの単位インパルス応答

 例として,次の3点の移動平均フィルタを考えます.

 y[n]= \displaystyle \frac{1}{3} x[n-1]+\frac{1}{3} x[n]+\frac{1}{3} x[n+1]

両辺をフーリエ変換すると,

  \begin{eqnarray} Y\left(f \right) &=& \left(\frac{1}{3} e^{-i 2 \pi f} + \frac{1}{3} + \frac{1}{3} e^{i 2 \pi f}  \right) X \left(f \right) \\
&=& \frac{1 + 2 \cos 2 \pi f}{3} X \left(f \right) \end{eqnarray}

です.入力x[n]と出力y[n]の関係を評価するために,

 \displaystyle \left| A\left(f\right) \right| = \left| \frac{Y\left(f\right)}{X\left(f\right)}\right|=\left|\frac{1 + 2 \cos 2 \pi f}{3}\right|

のグラフを描いてみました.下の真ん中の図です.

単位インパルス応答の読み方.(左) 入力信号 x[n].(中) 単位インパルスの絶対値.(右) 出力信号 y[n].中央の図の赤い点が,入力信号と出力信号の周波数を表す.

 単位インパルス応答は,周期成分を入力したとき,出力の振幅がどうなるかを表しています.上の図では,左が入力する周期成分x[n],右がそれを移動平均した出力y[n]です.単位インパルス応答の値が小さい周波数では,y[n]の振幅が小さくなることが分かります.さらに,周期成分の振動が細かくなると,正弦波っぽくないことに気づくと思います.離散時系列では,高い周波数できれいな正弦波にはならないんです.

差分フィルタの単位インパルス応答

 最近接の2点の差分をとるフィルタを考えます.

 y[n]= \displaystyle x[n] - x[n-1]

この場合,単位インパルス応答は,

 A\left(f\right) = \displaystyle \frac{Y\left(f\right)}{X\left(f\right)} = 1 - e^{- i 2 \pi f}

です.\displaystyle \left| A\left(f\right) \right| = \left| \frac{Y\left(f\right)}{X\left(f\right)}\right|と,周期成分の入出力の関係のグラフは下のようになります.

差分フィルタの単位インパルス応答.(左) 入力信号 x[n].(中) 単位インパルスの絶対値.(右) 出力信号 y[n].中央の図の赤い点が,入力信号と出力信号の周波数を表す.

線形フィルタは周波数ごとに特性が決まる

 線形フィルタでは,\sin\cosで記述される振動成分を入力したときに,入力と出力の周波数は同じになる,ということを意識してください.入出力の周波数は同じで,変化するのは振幅と位相です.

 確かめたければ,

 y[n]= \displaystyle \sum_{k=-\infty}^{\infty} a_k\, x[n-k]

の式に,

 \begin{eqnarray} x[n]= A \sin (2 \pi f n) + B \cos (2 \pi f n) \end{eqnarray}
 
を代入した場合を想像してください.この計算には,加法定理しか使わないので,周波数が変るわけありません.つまり,

 \begin{eqnarray} x[n-k] &=& A \sin (2 \pi f (n-k) ) + B \cos (2 \pi f (n-k)) \\
&=& A \sin (2 \pi f n ) \cos (2 \pi f k) - \cos (2 \pi f n ) \sin (2 \pi f k) ) \\
&& + B \cos (2 \pi f n) \cos (2 \pi f k)) + \sin (2 \pi f n)\sin (2 \pi f k)  \\ 
&=& A \left\{ \cos (2 \pi f k) + \sin (2 \pi f k)\right\} \sin (2 \pi f n )  \\
&& + B \left\{ \cos (2 \pi f k)) - \sin (2 \pi f k)\right\} \cos (2 \pi f n)   \\ 
&=& A_k \sin (2 \pi f n) + B_k \cos (2 \pi f n)\end{eqnarray}

を足しているだけなので,周波数 f が変りようがありません.ここで,定数部分を

  \begin{eqnarray} A_k &=& A \left\{ \cos (2 \pi f k) + \sin (2 \pi f k)\right\} \\
B_k &=& B \left\{ \cos (2 \pi f k) - \sin (2 \pi f k)\right\} \end{eqnarray}

とおきました.

 念のため計算しておくと.

 \begin{eqnarray} x[n]= A \sin (2 \pi f n) + B \cos (2 \pi f n) \end{eqnarray}


 
 y[n]= \displaystyle \sum_{k=-\infty}^{\infty} a_k\, x[n-k]

に代入すると,

 \begin{eqnarray} y[n] &=& \displaystyle \sum_{k=-\infty}^{\infty} a_k\, \left\{ A \sin (2 \pi f (n-k) ) + B \cos (2 \pi f (n-k)) \right\} \\
&=& \displaystyle \sum_{k=-\infty}^{\infty} a_k\, \left\{ A_k \sin (2 \pi f n) + B_k \cos (2 \pi f n)) \right\} \\
&=& \left( \sum_{k=-\infty}^{\infty} a_k\, A_k \right) \sin (2 \pi f n) + \left( \sum_{k=-\infty}^{\infty} a_k\, B_k \right) \cos (2 \pi f n) \\
\end{eqnarray}

となります.周期は変っていません.この計算を,e^{i 2 \pi f k}でやることを想像すれば,フーリエ変換で何をやっているかも見えてくると思います.

まとめ

 デジタルフィルタの係数から,単位インパルス応答を計算すれば,入力信号と出力信号を周期成分に分解したときの関係が分かります.ここでは,振幅の関係のみを説明しましたが,単位インパルス応答は,位相のずれの情報も含んでいます.

y[n]= \displaystyle \sum_{k=-\infty}^{\infty} a_k \, x[n-k] で記述される入出力 ( 入力x[n]と出力y[n])の周波数特性は,

  \displaystyle A\left(f\right) = \sum_{k=-\infty}^{\infty} a_k \,e^{-i 2 \pi f k}

で調べることができる.