Matlab 如何实现分段数值积分?

Matlab 如何实现分段数值积分?,matlab,integrate,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 看一看,哪个做了

在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
看一看,哪个做了类似的事情。它使用了,这是一种稍微好一点的数值积分方法。在您的情况下,应未经测试:

acc = cumtrapz(x, fx);
看一看,哪个做了类似的事情。它使用了,这是一种稍微好一点的数值积分方法。在您的情况下,应未经测试:

acc = cumtrapz(x, fx);
@如果您需要更高的精度,您可以使用Dyin。@如果您需要更高的精度,您可以使用Dyin。