一个数组对另一个数组进行积分的规范方法是什么?



考虑两个数组:

x = [0 .05 .1 .3 .32 .4 .55 .7 1 1.3 1.4 1.45 1.6 1.8 1.9 2 2.2 2.3 2.6 2.8 2.91 3];
y = x.^2;

我想对y/x积分。到目前为止,我已经知道我可以在for循环中使用trapz()函数:

y1 = zeros(length(x));
for ii = 1:length(x)
y1(ii) = trapz(x(1:ii), y(1:ii));
end
plot(x, y1, x, y);

然而,我想知道是否有一种不使用for循环的规范方法来做到这一点。

p.s. 1。我想MATLAB/Octave是矢量化函数,应该有预定义的函数来处理这类东西。

P.S.2。我现在不拥有MATLAB许可证,但答案必须与MATLAB和Octave兼容。

听起来您想要cumtrapz( )功能:

y1 = zeros(length(x), 1);
y1 = cumtrapz(x, y)
plot(x, y1, x, y);

您可以使用cumsumdiff:

y1 = [0 cumsum((y(1:end-1) + diff(y)/2) .* diff(x))];

相关内容

  • 没有找到相关文章

最新更新