我有两个一维数组,想要根据第二个数组指定的标量间距计算第一个数组的近似累积积分。MATLAB有一个名为cumtrapz的函数可以处理这种情况。在Julia中有类似的东西可以尝试实现相同的操作吗?
预期结果是另一个一维数组,每个元素都计算了积分。
我有两个一维数组,想要根据第二个数组指定的标量间距计算第一个数组的近似累积积分。MATLAB有一个名为cumtrapz的函数可以处理这种情况。在Julia中有类似的东西可以尝试实现相同的操作吗?
预期结果是另一个一维数组,每个元素都计算了积分。
Julia有一个数值积分包(请参见链接),它定义了cumul_integrate(X,Y)
并默认使用梯形规则。
即使没有这个包,您也可以轻松编写函数并且拥有非常高效的实现,因为循环不会导致性能下降。
编辑:添加了@assert以检查向量维度匹配并更正了一个拼写错误。
function cumtrapz(X::T, Y::T) where {T <: AbstractVector}
# Check matching vector length
@assert length(X) == length(Y)
# Initialize Output
out = similar(X)
out[1] = 0
# Iterate over arrays
for i in 2:length(X)
out[i] = out[i-1] + 0.5*(X[i] - X[i-1])*(Y[i] + Y[i-1])
end
# Return output
out
end