面積を求めたい
18 views (last 30 days)
Show older comments
筋電図解析についてです。
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 = 斜線が交差している部分
イメージ的には
- A筋とB筋の同じ時間における小さい方の値を抽出
- 1で抽出した面積およびA筋とB筋の面積を計算
- 面積を求める範囲(時間)を指定
- 上記の式に当てはめ計算する
のような手順になるのではないかと思っていますが、方法がわかりません。
MATLABを使い慣れておらず、素人質問で恐縮ですが、ご教示いただければと思います。
よろしくお願いします。
引用:
バイオメカニクス 人体運動の力学と制御 [原著第4版]
0 Comments
Accepted Answer
Hernia Baby
on 4 Mar 2022
まずは適当な関数作ります
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)
3 Comments
Hernia Baby
on 5 Mar 2022
1.trapz(t,xmin)について
スカラー間隔であれば大丈夫そうです
- X が座標のベクトルである場合、length(X) は Y においてサイズが 1 に等しくない最初の次元のサイズに等しくなければなりません。
- X がスカラー間隔の場合、trapz(X,Y) は X*trapz(Y) と等価です。
2.範囲指定について
indexに格納しましょう
t = 0:0.1:1;
x = 2*t;
t1 ~ t2 間の x を抜き出し、x1という変数に入れます
t1 = 0.2;
t2 = 0.6;
idx = t >= t1 & t <= t2;
x1 = x(idx)
これを0.1刻みとして台形積分を取ります
sumx_dt01 = trapz(0.1,x1)
刻み時間 dt = 0.1 はスカラー値なので以下でも同様です
sumx_dt01_2 = 0.1*trapz(x1)
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!