移動平均と指数平滑
|
|
移動平均 |
指数平滑 |
|
漸化式 |
|
|
|
回路 |
|
|
|
ステップ 応答 |
|
|
|
周波数 特性 |H(ω)| |
|
|
入力信号の変化を滑らかにしたいときの回路を考える。
◇
まず思いつく方法は、直近の入力R個を平均する移動平均である。
![]()
このまま回路にすると加算器が(R-1)個必要になるので

出力yをフィードバックするように変形して
![]()
![]()
R段の微分回路と積分回路を組合せた形にすれば加算器が2個で済む。

ここで積分するとビット幅は無限に大きくなりうるが、入力が最大値一定のときでもフィルタの出力はR倍にしかならないから、実際には出力ビット幅は(入力ビット幅+log2R)だけあれば桁あふれ分は捨てても結果は変わらない。
なお、微分と積分の順番を入れ替えても計算結果は同じだが、積分を先にするとシフトレジスタのビット幅が広くなる分だけ損である。

入力一定のとき出力はR倍になるから、ゲインを1にしたければ入力を1/R倍すればよい。
![]()
このときステップ入力
![]()
に対するステップ応答は
![]()
となり、立ち上がり時間Nの台形波形になる。

移動平均フィルタの係数は

となるから、周波数特性は、
![]()
となり、サンプリング周波数の1/R毎にゼロ点ができる特徴がある。
![]()

これは、R点の平均をとっているから、ちょうどR点周期の入力は一定値出力になってしまうので、あたりまえである。
◇
移動平均はレジスタをたくさん消費するので、レジスタ数を多くしない方法(その代わり乗算器が必要になるが)として指数平滑がある。
この方法では、重みづけ(フィルタ係数)を直近から過去へ指数関数的に減らしていく。
![]()
このまま回路にすると無限個のレジスタが必要になるので、出力yをフィードバックするように変形して
![]()
![]()
通常のフィードバックループの形にする。

入力一定のとき出力は1/(1-β)倍になるから、ゲインを1にしたければ入力を(1-β)倍すればよい。
![]()
このときステップ入力に対するステップ応答は
![]()
となり、指数関数的な波形になる。

振幅aまでの立ち上がり時間は
![]()
指数平滑フィルタの係数は
![]()
となるから、周波数特性は、
![]()
となり、移動平均と違ってゼロ点はできない。
