Magicode logo
Magicode
0

[MATLAB]移動平均を用いたノイズ除去

はじめに

移動平均とは何か、移動平均を用いるメリット・デメリット、実装する際のソースコードなどをまとめる。

実行環境

  • Ubuntu20.04
  • MATLAB R2022a

移動平均とは

移動平均(Moving Average,MA)とは、ある時刻のデータとその前後の時間のデータの平均を求めることである。FXなどのチャートでよく用いられる移動平均線も同じである。高周波成分のノイズを減少させ、信号が強調される。

移動平均の原理

移動平均では、観測データx(k)に重畳するノイズを時刻kの前後L点のデータを利用し低減させる。 P=3の移動平均を3点MA、P=5の移動平均を5点MAと呼ぶ。

y(x)=x(k1)+x(k)+x(k+1)3y(x) = \displaystyle\frac{x(k-1)+x(k)+x(k+1)}{3}

y(x)=x(k2)+x(k1)+x(k)+x(k+1)+x(k+2)5y(x) = \displaystyle\frac{x(k-2)+x(k-1)+x(k)+x(k+1)+x(k+2)}{5}

移動平均の一般式

データx(k)の時刻kより前後L点(-L ~ L)のデータを利用し導出できる移動平均は下式の通りである。

y(k)=1Pm=LLx(k+m)y(k)=\displaystyle\frac{1}{P}\sum^{L}_{m=-L}x(k+m)
P=2L+1P = 2L + 1

移動平均の実装

MATLABで3点MAを実装する。

実行結果は以下の通りである。
移動平均でノイズを減衰出来ていることがわかる。

お次は5点MAの実装。

実行結果は以下の通りである。

最後に

移動平均はノイズを減衰させ信号の特徴を捉えやすくするが、前後の時間のデータを増やすとノイズだけでなく特徴まで平均化されて、信号が読み取れなくなるので注意する必要がある。

Discussion

コメントにはログインが必要です。