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

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

采纳的回答

Takashi Ueno
Takashi Ueno 2023-8-29
编辑:Takashi Ueno 2023-8-29
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
のようにも数値積分でき、上記とほぼ一致しています。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 数値積分と微分 的更多信息

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!