Timetableの​データから積分値を算​出する方法を教えてく​ださい

6 views (last 30 days)
雅史 久保田
雅史 久保田 on 24 Aug 2023
Edited: Takashi Ueno on 29 Aug 2023
Timetableで経時的なデータがあります。そのグラフのAUC(曲線化面積)を求めたいです。
データは0秒からサンプリング10Hzで計測されており、例えば開始10秒から20秒までの区間の積分値など区間ごとにAUCを算出したいです。
Matlab初心者で申し訳ありませんが、ご教示下さい。

Accepted Answer

Takashi Ueno
Takashi Ueno on 29 Aug 2023
Edited: Takashi Ueno on 29 Aug 2023
trapzを用いて台形則で数値積分することになるかと思います。
ただ、trapzはタイムテーブルではなく、通常の数値配列を受け入れます。
一例として、0秒から30秒まで10Hzで、f(x)=x.^2をサンプリングした場合を考えます。
もし、タイムテーブルとして持つのであれば、
t=seconds(0:0.1:30)'; % duration型で時刻の作成
y=seconds(t).^2; % duration型はsecondsなどの関数で、doubleに相互変換できます
tt=timetable(t,y);
のようなイメージです。
このタイムテーブルにおいて、10秒から20秒の区間を積分するのであれば、
t2=seconds(tt.t);
A=trapz(t2(t2>=10 & t2<=20),tt.y(t2>=10 & t2<=20))
A = 2.3333e+03
のようになります。
なお、参考までに、関数が既知であれば、integral関数を用いて、
fun=@(x)x.^2;
A2=integral(fun,10,20)
A2 = 2.3333e+03
のようにも数値積分でき、上記とほぼ一致しています。

More Answers (0)

Categories

Find more on 数値積分と微分 in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!