Matlab/Simulinkで波形の単純移動平均を計算する方法

モータ技術

出力データの移動平均は,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よりご連絡ください。

4. 参考文献

移動平均-Wikipedia

タイトルとURLをコピーしました