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

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

Réponse acceptée

Takashi Ueno
Takashi Ueno le 29 Août 2023
Modifié(e) : Takashi Ueno le 29 Août 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
のようにも数値積分でき、上記とほぼ一致しています。

Plus de réponses (0)

Catégories

En savoir plus sur 数値積分と微分 dans Help Center et File Exchange

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!