Julia 中的滑动窗口函数

dan*_*man 5 julia

我希望获取一个集合,并在其上滑动一个长度为“w”、步长为“s”的窗口,以获得许多子集合。

我见过Base.Iterators.partition但不允许滑动小于窗口(或分区)长度。

我自己写了一些有用的东西,但我希望已经有一个函数可以做到这一点,但我只是还没有找到它。

Prz*_*fel 7

假设z是您的Vectors您的步长 是您的步w长 是窗口大小 只需执行以下操作:

((@view z[i:i+w-1]) for i in 1:s:length(z)-w+1)
Run Code Online (Sandbox Code Playgroud)

例子:

z = collect(1:10)
for e in ((@view z[i:i+4]) for i in 1:2:length(z)-4)
    #do something, try display(e)
end
Run Code Online (Sandbox Code Playgroud)


Nil*_*dat 1

你看过RollingFunctions吗?在我看来,它可以实现您正在寻找的功能,它具有rollingrunning函数、向量和窗口大小作为输入的函数,并返回在连续窗口上应用函数的结果。