本人有一组200800x700double的rate.mat数据(是一组速度数据),想对这组数据在时间范围为【0-700】内进行定积分计算,以便求出这段时间内的位移。
用
t=0:200799; %t取到200799是因为matlab说要和rate的长度相等,即长度应为200800
v=rate;
x=trapz(t,v)
这段代码积出来的数据并不正确,所以对求定积分有了些疑惑。
希望有人可以指导下如何正确的对这组数据进行定积分计算,非常感谢!!
本人有一组200800x700double的rate.mat数据(是一组速度数据),想对这组数据在时间范围为【0-700】内进行定积分计算,以便求出这段时间内的位移。
用
t=0:200799; %t取到200799是因为matlab说要和rate的长度相等,即长度应为200800
v=rate;
x=trapz(t,v)
这段代码积出来的数据并不正确,所以对求定积分有了些疑惑。
希望有人可以指导下如何正确的对这组数据进行定积分计算,非常感谢!!
你好,trapz要搞清楚你积分的维度在哪个方向,比如对V = T^2+X^2在x方向积分(即积分消去x留下对t的函数)
t = 0:1:10;
x = 0:1:20;
[T, X] = meshgrid(t,x);
V = T.^2+X.^2;
I = trapz(x, V);
I =
2670 2690 2750 2850 2990 3170 3390 3650 3950 4290 4670
真实值是
I = t.^2*(20^1-0^1) + 1/3*(20^3-0^3)
I =
1.0e+03 *
2.6667 2.6867 2.7467 2.8467 2.9867 3.1667 3.3867 3.6467 3.9467 4.2867 4.6667
可见trapz梯形法积分精度还是可以的
你要对T积分留下X也很简单
t = 0:1:10;
x = 0:1:20;
[T, X] = meshgrid(t,x);
V = T.^2+X.^2;
I = trapz(t, V')%V转置一下即可
结果也不差的
I =
列 1 至 11
335 345 375 425 495 585 695 825 975 1145 1335
列 12 至 21
1545 1775 2025 2295 2585 2895 3225 3575 3945 4335
题主对时间积分,那就是对那每一行的700列作积分:
t=0:699; %你是对时间积分应该取时间维度真实的时间【0-700】
v=rate;
x=trapz(t,v')