something like this?
function centraldiff(v::AbstractMatrix)
dv = diff(v)/2
a = [dv[[1],:];dv]
a .+= [dv;dv[[end],:]]
a
end
function centraldiff(v::AbstractVector)
dv = diff(v)/2
a = [dv[1];dv]
a .+= [dv;dv[end]]
a
end
These methods are of course not optimized for performance, writing the loop manually would likely improve performance and reduce memory allocations.
Note, these functions do not reduce the length of the input array (as diff
does), by copying the first and last diff
elements.