出力データの移動平均は,Matlab/SimulinkではDSP System Toolboxを使用すればすぐ実装可能です。が,toolboxなしでも単純移動平均(SMA: Simple Moving Average)は簡単に実装できます。本記事では,Matlab/Simulinkで単純移動平均を実装する方法を紹介します。
1. 単純移動平均とは
単純移動平均は,直近のN個のデータの単純平均のことです。時系列データの平滑化等に用いられます。
2. 実装
時刻 $t=n$ での入力を $u_{n}$,出力を $y_{n}$ とすると,$N_{ma}$ 個の単純移動平均の差分方程式は次式のように導出できます。(計算過程は後述)
$$ y_{n}-y_{n-1}=\frac{u_{n}-u_{n-N_{ma}}}{N_{ma}} $$
この式を実装すると,下図のようになります。
試しに2つの正弦波の和を入力してみます。
移動平均が出力されていることがわかります。
パラメータ $N_{ma}$ を調整することで,交流波形の平均値を取得することも可能です。
3. 単純移動平均の差分方程式の導出
n番目とn-1番目の関係式の両辺の差を取れば,導出可能です。
$$ y_n=\frac{u_n+u_{n-1}+…+u_{n-N_{ma}+2}+u_{n-N_{ma}+1}}{N_{ma}} $$
$$ y_{n-1}=\frac{u_{n-1}+u_{n-2}+…+u_{n-N_{ma}+1}+u_{n-N_{ma}}}{N_{ma}} $$
$$ y_{n}-y_{n-1}=\frac{u_{n}-u_{n-N_{ma}}}{N_{ma}} $$
重み付きの移動平均も同様に導出可能です。
以上です。質問・コメント等ございましたら,コメント欄,メールやTwitterよりご連絡ください。