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

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

Respuesta aceptada

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

Más respuestas (0)

Categorías

Más información sobre 数値積分と微分 en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023a

Community Treasure Hunt

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

Start Hunting!