累积积分选项与Julia

4

我有两个一维数组,想要根据第二个数组指定的标量间距计算第一个数组的近似累积积分。MATLAB有一个名为cumtrapz的函数可以处理这种情况。在Julia中有类似的东西可以尝试实现相同的操作吗?

预期结果是另一个一维数组,每个元素都计算了积分。

1个回答

4

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接