時系列データの変化をなだらかにするため、移動平均を求めることが多い。 移動平均は、加算と除算が必要になるので、除算を高速に実現するため シフト演算を利用する。目次 前 次
原理
配列を用意し、2のべき乗個の時系列データを入れる。 時系列データの、総和を求めて、2のべき乗であることを利用して シフトする。 データの個数が、2ならば1ビット右シフト、4ならば2ビット右シフト のようにする。256あれば、8ビット右シフトになる。 総和が、変数のサイズを超えないように、注意しなければならない。
関数
4データの移動平均を実現する関数は、以下となる。 UWORD average_filtering(UWORD *ptr) { UWORD result ; /* add */ result = 0 ; result += *(ptr+0) ; result += *(ptr+1) ; result += *(ptr+2) ; result += *(ptr+3) ; /* shift */ result >>= 2 ; return result ; }