Matlab 如何知道生成向量的函数来计算 cumtrapz?

How Matlab knows the function that a vector is produced by to calculate cumtrapz?

我可能有一个愚蠢的问题。 当我在 Matlab y=[1 4] 中编写以下脚本时,然后当我使用 cumtrapz(y) 时,我得到 [0 2.5]。我知道 cumtrapz 认为此方法中的 deltaX=1。 我的问题是 matlab 如何知道向量 1,4 是由 f(x)=x^2 创建的? 可以说它是由 f(x)=3x-2 通过识别 y 向量值或许多其他类型的函数创建的。那么matlab如何知道哪个函数产生了Y向量以近似函数的积分? 谢谢

MATLAB 不知道这些值来自哪里

a = [1 4 5 9]
s = cumtrapz(a)
s =
0.00000    2.50000    7.00000   14.00000

标准步骤是 1 所以:

h = 1;
s(i) = s(i-1) + h*(a(i-1)+a(i))/2

Matlab 不知道您的矢量是由 f(x) = x^2 创建的。 trapz 计算每对值之间的 线性 插值。

所以cumtrapz简单地计算一个2乘2的移动和,然后将结果除以2。

% Sample data
Y = [1 4 9 16 25];

% Using cumtrapz
Q1  = diff(cumtrapz(Y))
%Q1 = [2.5, 6.5, 12.5, 20.5]

% Using a moving sum
Q2  = conv(Y,ones(2,1),'valid')/2
%Q2 = [2.5, 6.5, 12.5, 20.5]

带有 f(x) = sin(x) 的图形示例:

cumtrapz 简单地应用 cumsum 中间点的值。