Excel VBAと用いて簡易的に波形からピークを抽出します。
なお、本ツールを使用したことによって発生した損害等は一切補償いたしません。 特に本ツールを流用する場合は、動作確認を十分に行ったうえでご利用ください。
「ファイルが破損しているため開くことができません」 コメントが出る場合は こちらで対応願います。
ピーク抽出したい波形データの横軸値(X)と縦軸値(Y)を、下図に従い入力します。 横軸値が不明な場合は連番(1,2,3,・・・)を入力します。
なお、横軸値は昇順に並んでいることが条件となります
入力したデータの例
ピーク抽出条件として、次の設定を行います。
(1)cutoff | : | 縦軸値の絶対値が指定値かなら、その点はピークとみなしません。 空白ならこの処理は行いません。 |
(2)MA_order | : | データのトレンド除去を行う移動平均の次数を指定します。 空白なら移動平均の計算は行いません。 |
(3)Ndiv | : | 波形と移動平均が公差する区間内に最低限必要なデータ点数(連続カウント)を指定します。 空白なら、区間内データが1点でもピークとみなします。 |
Ndivの設定例(例:Ndiv=3の場合)
処理実行ボタンを押すと、+側ピーク(山側)と-側ピーク(谷側)の2種類が抽出されます。
処理実行結果が下図のように出力されます。
"+Peak ID"は抽出したピークの横軸(X)値、"+Peak Y"は縦軸(Y)値になります("-"も同様です)。
下図のような波形からピークを抽出します(○印が抽出ピーク)。
波形ピーク抽出は、次の手順に従って行います。
波形データは、それ自体に大きな“うねり”を持つのが一般的です。 これをトレンドと呼びます。 このトレンドを除去することで、波形データ内のピークを顕著にすることができます。 トレンドの算出には今回移動平均を用います(下図赤点線)。
移動平均算出後、波形データからその移動平均を差し引きます。
ピークの抽出は、波形データと移動平均が公差する区間内で行います。 このとき、連続でn点以上同一符号が続く区間のみでピーク抽出を行います (本来、波形データと移動平均が繰り返し公差するようなケースはノイズによるものが多いため、このような処理を入れています)。
上記で設定した区間内から縦軸(Y)最大値となるデータをピーク位置として判定します (単に最大値だけを抽出すれば、ピークは山のみを取得します)。 このときの縦軸最大値はトレンドを除去した値ですので、それ自体がピーク値とはなりません。 従って、このとき抽出するのは横軸(X)値のみとなります。 この横軸値に対応する波形データの縦軸値をピーク値として抽出します。
本ツールは、トレンドを除去するのに任意の移動平均をもとにピーク取得を行っています。 そのため、必ずしも真のピークが抽出できているとは限りませんし、移動平均の次数によってピークの取れ方も変わります。
波形からのピーク抽出は本来かなり難しく、一意にこの方法ですべてが解決する、といったものはありません。 用途や目的に応じてトレンドの除去方法やノイズ除去方法などを独自に作成してみてください。