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

조회 수: 7 (최근 30일)
雅史 久保田
雅史 久保田 2023년 8월 24일
편집: Takashi Ueno 2023년 8월 29일
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!