如何实现分段数值积分?

时间:2013-12-16 13:59:35

标签: matlab integrate

在Matlab中是否有任何方法可以缩短此功能,或者是否可以使用任何内置函数代替此函数?以下功能适用于我,但我想将其从我的脚本中排除。

function p = nintegrate(x, fx)
    acc = 0;
    for i = 1:length(x)-1
            p(i) = acc;
            delta_x = x(i+1) - x(i);
            acc = acc + delta_x * fx(i);
    end
end

1 个答案:

答案 0 :(得分:4)

看看cumtrapz,它做了类似的事情。它使用了trapezoidal integration,这是进行数值积分的一种更好的方法。您的情况下的用法应该是(未经测试):

acc = cumtrapz(x, fx);