面積を求めたい

83 views (last 30 days)
yuta
yuta on 4 Mar 2022
Commented: yuta on 7 Mar 2022
筋電図解析についてです。
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版]

Accepted Answer

Hernia Baby
Hernia Baby on 4 Mar 2022
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 Comments
yuta
yuta on 7 Mar 2022
ご回答いただきありがとうございます。
わかりやすくて、とても参考になりました!

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!