在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
答案 0 :(得分:4)
看看cumtrapz,它做了类似的事情。它使用了trapezoidal integration,这是进行数值积分的一种更好的方法。您的情况下的用法应该是(未经测试):
acc = cumtrapz(x, fx);