RollingFunctions.jl
This package makes it easy to summarize windowed data.
A function is applied to successive data subsequences.
You give a summarizing function 𝐹𝑢𝑛𝑐, the data𝐷𝑎𝑡𝑎, and a window span 𝑆𝑝𝑎𝑛.
The result 𝑅 is of length 𝑅ᴺ, 𝑅ᴺ = length(𝐷𝑎𝑡𝑎) - 𝑆𝑝𝑎𝑛 + 1.
- the result omits 𝑅ᴼ = 𝑆𝑝𝑎𝑛 - 1 indices into 𝐷𝑎𝑡𝑎.
there are ways for the results match the data in length
Use a single, shared padding value
rolling(function, data, window_span; padding = missing)
this will fill the initial result values with the padding value
- pads these values(result[1], .., result[pad_nindices])
rolling(function, data, window_span; padding = missing, padlast = true)
this will fill the final result values with the padding value
- pads these values(result[n-pad_nindices+1], .., result[n])
Pad with a vector of values with length matching the extra indicies ( 𝑅ᴼ)
- this fills the extra indices with values obtained bycopying
Use an empty vector
this fills the extra indices with values obtained bytrimming
trimming evaluates the window function over available data
- trimmed window spans are less than the specified window_span
Use a vector of𝓃 padding values
where1 <= 𝓃 < 𝑅ᴼ.
this first pads then trims to assign the extra indices
- the first𝓃 indices of the result will match this vector
- the next 𝑅ᴼ - 𝓃 indices of the result will be trimmed
- the remaining indices get the rolled results.