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

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

採用された回答

Kenta
Kenta 2020 年 5 月 27 日
最大値は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 件のコメント
R
R 2020 年 5 月 28 日
ご回答ありがとうございます.
大変わかりやすく分析が進んでいきそうです.
ちなみに,波形に山が複数存在し,それぞれの山における平均値を算出したい場合は,2番目に大きい値,3番目に大きい値という風に定義していけばよいですか...?
Kenta
Kenta 2020 年 5 月 28 日
ご返信ありがとうございます。役に立ったようでうれしいです。
複数の山が存在するときは、https://jp.mathworks.com/help/signal/ref/findpeaks.html こちらにある、
findpeaks関数を使って、ピークを検出すれば良いと思います。
2番目に大きな値と単にすると、最大のピークのすぐ横の値(山の少し左右の点)が検出されてしまってうまく行かないと思います。
ピークを取るために移動平均にしたり、適宜パラメータを調整したりする必要はあるかと思いますが、基本的にはfindpeak関数で大丈夫と思います。また問題があれば、ご質問ください。よろしくお願いいたします。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange記述統計 についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!