面積を求めたい

101 ビュー (過去 30 日間)
yuta
yuta 2022 年 3 月 4 日
コメント済み: yuta 2022 年 3 月 7 日
筋電図解析についてです。
2つの筋電図を正規化したデータ(%MVC)があり、それぞれの面積および重なり合う部分の面積を求め、下にあるような式に当てはめるにはどのようにすれば良いでしょうか。
また任意の時間(例:3〜5秒区間)を指定して、計算を行う方法についてもご教示いただければ幸いです。
すでにあるデータのイメージ:
sec = [0.001, 0.002, 0.003 .......]
A筋(%) = [20, 30, 40, 50, 60 .........]
B筋(%) = [60, 50, 40, 30, 20 .........]
以下求めたいものについてです。
上手く説明ができないため、図を貼ります。
上記図:
右上がり斜線:A筋の正規化したデータをプロットしたもの
右下がり斜線:B筋の正規化したデータをプロットしたもの
斜線の交差:両方の筋が重なっている部分
上記式:
area A = A筋の面積(図では右上がりの斜線と斜線が交差している部分)
area B = B筋の面積(図では右下がりの斜線と斜線が交差している部分)
commn area = 斜線が交差している部分
イメージ的には
  1. A筋とB筋の同じ時間における小さい方の値を抽出
  2. 1で抽出した面積およびA筋とB筋の面積を計算
  3. 面積を求める範囲(時間)を指定
  4. 上記の式に当てはめ計算する
のような手順になるのではないかと思っていますが、方法がわかりません。
MATLABを使い慣れておらず、素人質問で恐縮ですが、ご教示いただければと思います。
よろしくお願いします。
引用:
バイオメカニクス 人体運動の力学と制御 [原著第4版]

採用された回答

Hernia Baby
Hernia Baby 2022 年 3 月 4 日
mintrapz を使えば実現可能だと思います
まずは適当な関数作ります
clc,clear,close all;
Fs = 1e5;
t = (0:1/Fs:1-1/Fs)';
f1 = 5;
f2 = 7;
x1 = 1.2*abs(sin(2*pi*f1*t));
x2 = 1.5*abs(sin(2*pi*f2*t));
figure
hold on
area(t,x1,'FaceAlpha',0.3,'EdgeColor','none','FaceColor','r')
area(t,x2,'FaceAlpha',0.2,'EdgeColor','none','FaceColor','b')
hold off
ここから min で小さい方をとります
xmin = min(x1,x2);
ちょっと図示してみますか
figure
hold on
area(t,x1,'FaceAlpha',0.3,'EdgeColor','none','FaceColor','r')
area(t,x2,'FaceAlpha',0.2,'EdgeColor','none','FaceColor','b')
plot(t,xmin,'--k','LineWidth',.8)
hold off
最後に台形則による数値積分を行います
trapz(t,xmin)
ans = 0.6037
  3 件のコメント
yuta
yuta 2022 年 3 月 7 日
ご回答いただきありがとうございます。
わかりやすくて、とても参考になりました!

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

その他の回答 (0 件)

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!