最大値前後の平均値の算出について

8 views (last 30 days)
R
R on 27 May 2020
Commented: Kenta on 28 May 2020
現在,以下の手順で筋電図の波形解析をしています.
➀欠損値の補完
②フィルター処理
➂Root mean square
➃最大値の確認
⑤最大値前後0.5秒の平均値を算出
➀-➃まではできたのですが,⑤でどのようにして最大値前後を範囲指定して平均するのかわかりません.
初歩的な質問で申し訳ありませんが,ご回答いただけますと幸いです.よろしくお願いします.

Accepted Answer

Kenta
Kenta on 27 May 2020
最大値はmaxという関数で出せます。また、その前後ということなので、
[maxvalue, index]=max(A);
という風にかくと、Aのあるインデックス(場所のようなもの)も同時に得られるので、そのインデックスから0.5秒前後分まで取り出し、最終的にmean関数で平均を出せます。
たとえば、Aの1ステップが0.1秒だと、
[maxvalue, index]=max(A);
B=A(index-2:index+2);
mean(B)
のようにかけます。ただ、お持ちのデータにあわせて適宜変更する必要があります。
  2 Comments
R
R on 28 May 2020
ご回答ありがとうございます.
大変わかりやすく分析が進んでいきそうです.
ちなみに,波形に山が複数存在し,それぞれの山における平均値を算出したい場合は,2番目に大きい値,3番目に大きい値という風に定義していけばよいですか...?
Kenta
Kenta on 28 May 2020
ご返信ありがとうございます。役に立ったようでうれしいです。
複数の山が存在するときは、https://jp.mathworks.com/help/signal/ref/findpeaks.html こちらにある、
findpeaks関数を使って、ピークを検出すれば良いと思います。
2番目に大きな値と単にすると、最大のピークのすぐ横の値(山の少し左右の点)が検出されてしまってうまく行かないと思います。
ピークを取るために移動平均にしたり、適宜パラメータを調整したりする必要はあるかと思いますが、基本的にはfindpeak関数で大丈夫と思います。また問題があれば、ご質問ください。よろしくお願いいたします。

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!