与 Julia 的累积集成选项
Cumulative Integration Options With Julia
我有两个一维数组,我想在其中计算第一个数组相对于第二个数组指定的标量间距的近似累积积分。 MATLAB 有一个名为 cumtrapz 的函数可以处理这种情况。我可以在 Julia 中尝试类似的事情来完成同样的事情吗?
预期结果是另一个一维数组,其中计算了每个元素的积分。
Julia 有一个数值集成包(参见 link),它定义 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
我有两个一维数组,我想在其中计算第一个数组相对于第二个数组指定的标量间距的近似累积积分。 MATLAB 有一个名为 cumtrapz 的函数可以处理这种情况。我可以在 Julia 中尝试类似的事情来完成同样的事情吗?
预期结果是另一个一维数组,其中计算了每个元素的积分。
Julia 有一个数值集成包(参见 link),它定义 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