【发布时间】:2015-09-03 21:00:32
【问题描述】:
我需要使用实验数据执行双重积分,但我的积分限制对于每个积分都是相同的,在这种情况下是时间。数学上我需要计算:
E [ a0+ ∫0T a(t)dt ] = a + limTx → ∞ sub> (1/T) ∫0T ∫0t a dt dT
经过一番搜索,我到达了:
T = 0:0.1:600;
x = T;
A = rand(1,length(T)); % my data
pp_int = spline(T,A );
DoubleIntegration = integral(@(x)arrayfun(@(T )(integral(@(T ) ppval(pp_int,T ),0, T )),x),0,T(end) );
代码需要很长时间才能运行并提供巨大的价值。我认为我的问题是 Matlab 可能无法处理样条曲线,但我不知道如何解决。
【问题讨论】:
-
有一个integral2函数可能会更有效。此外,考虑到您输入的数据,您的预期值约为 180,000(rand 在 0 和 1 之间是统一的,因此所有值都是正数。
-
我认为使用integral2函数虽然该函数需要两个变量的依赖关系,但我不知道如何使用样条线执行此步骤。我的真实数据有正值和负值,rand 函数只是为了提供更多信息。
标签: matlab integration splines