问题标签 [sliding-window]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
346 浏览

awk - 用于确定本地数据点密度 (AWK) 的滑动窗口

我认为我的问题并不完全清楚。所以,是时候用另一种方法来解释我的追求了。

  • 我有一个包含大约 27,500 个数据点的数据文件。每个数据点在第一列中都有一个介于 0 和 46041637 之间的唯一整数,在第 2 - 6 列中有描述。
  • 我想知道整数如何分布在 46M 的可能性中。例如,有多少(以及哪些)数据点在 1-1000 范围内,有多少在 1001-2000 之间等等,直到达到 46M。
  • 在前面的示例中,将创建大约 46K (46M/1000) 个较小的数据集(或 bin)。一些 bin 将包含多个数据点,而其中很多根本不包含任何数据点。
  • 在上面的示例中,bin 的大小/长度(我称之为 windowssize)是 1000。我还不知道最适合我的目的的 windowssize 是多少,所以,我希望能够有一个脚本有一个“可调”的窗口大小。
  • 此外,示例 1-1000, 1001, 2001, [...] 显然没有在 bin 中显示任何重叠。然而,这意味着我失去了很多“敏感性”,因此失去了知识/信息。所以我希望能够创建重叠的窗口/箱。例如,1-1000,501-1500、1501-2500、2001-3000。这些箱有 500 个重叠。我将能够设置箱之间的重叠量。
  • 我想将每个 bin 写入自己的文件,即使 bin 不包含任何数据点。

这是我之前给出的解释,显然不是很好


使用 AWK 我试图在整数列表上“滑动窗口”。如果我拆分这个数据集,每个(可能重叠的)bin 中会有多少个数据点?我喜欢设置 binsize(或 windowssize)并在 bin 之间重叠。这种方法使我能够了解本地数据点的密度。--> 我有一点 AWK 经验,有人告诉我 AWK 应该能够胜任这项工作,我更喜欢使用 AWK。但是,我也对其他想法持开放态度(例如 Python)。

  • 我有一个数据文件,其中包含大约 27,500 个介于 0 和 46041637(4600 万)之间的整数以及每个数据点的描述。
  • 因为我想了解“改变”分辨率的效果,所以我想在不同的窗口大小和各个窗口之间的重叠情况下玩一点。
  • 我喜欢将每个“窗口”的所有内容写入一个单独的文件,并根据“windows-startpoint”命名文件。

我准备了一些示例文件,附在下面。但是,为了更容易理解这里是另一个非常非常简化的示例:

示例输入文件

具有不同窗口大小和重叠的示例输出文件

非常感谢您的帮助!


我最初的问题几乎没有调整,因为我需要的计算时间比我预期的要多。

是否有可能不是将特定窗口中的所有记录写入其自己的文件,而是将每个窗口的“统计信息”写入表中的一行?对于统计数据,我的意思是特定窗口包含多少条记录以及每种类型有多少条记录。应用到上面的示例中,它看起来像这样:

0 投票
2 回答
601 浏览

r - Sliding window with higher precision than diff(cumsum(…))

What is the best R idiom to compute sums of elements within a sliding window?

Conceptually I want the following:

In other words, every output element should be the sum of a fixed number of input elements (called lag here), resulting in an appropriately shorter result vector. I know that I can theoretically write this as

but I am worried about the precision here. I have a setup in mind where all the values would have the same sign, and the vectors would be pretty large. Summing up the values up front might lead to prety large numbers, so there won't be many significant digits left for the individual differences. This feels bad.

I would imagine that it should be possible to do better than that, at least when using a single function instead of two. An implementation could maintain the current sum, aleays adding one element and subtracting another for each iteration. Since that would still accumulate rounding errors along the way, one could perform the computations separately from both ends, and if the results at the center were too far off, compute a fresh result from the center and thus increase precision in a divide-and-conquer approach.

Do you know of any implementation which does anything like this?
Or is there a reason why this won't work as I think it should?
Or perhaps a reason why the diff(cumsum(…)) approach isn't as bad as it seems?


Edit: I had some off-by-one mistakes in my above formulations, making them inconsistent. Now they seem to agree on test data. lag should be the number of elements summed, and I'd expect a shorter vector as a result. I'm not dealing with time series objects, so absolute time alignment is not that relevant to me.

I had seen some noisy-looking things in my real data, which I had assumed to be due to such numeric problems. Since several different approaches to compute these values, using different suggestions from answers and comments, still led to similar results, it might be that the strangeness of my data is not in fact due to numeric issues.

So in order to evaluate answers, I used the following setup:

The result for this looks as follows:

The result indicates that diff+cumsum is still surprisingly accurate. (It appeared even more accurate before I thought of adding that second runif vector.) filter and caTools both are almost indistinguishable from the perfect result. As for performance, I haven't tested that (yet). I only know that the Rmpfr cumsum with 128 bits was slow enough that I didn't feel like waiting on its completion. Feel free to edit this question if you have a performance benchmark, or new suggestions to add to the comparison.

0 投票
1 回答
1583 浏览

php - 从页面右下角弹出滑动 inwords 向下滚动

一旦用户完全向下滚动页面,我希望从右下角出现一个弹出窗口。弹出窗口可以有阅读更多链接或相关内容链接。

我正在使用 jquery 框架库和 php。我希望弹出窗口具有动态内容。

这就是我所指的:

http://economictimes.indiatimes.com/news/economy/finance/Finance-Minister-P-Chidambaram-holds-meeting-with-officials-over-rupee-fall/articleshow/20676682.cms

例如:
页面数据
页面数据
页面数据
页面数据
页面数据页面数据
页面数据
页面数据
页面数据
页面数据
滚动到这里<-----------从右到左弹出窗口。------

请指导我如何做同样的事情。

0 投票
1 回答
427 浏览

python - 滑动窗口函数内的操作(​​用于图像去噪)

我正在研究图像去噪,试图在我的矩阵中保持连续的线条(有一些宽大处理),并删除与我所追求的线条没有真正连接的随机非零元素。我遇到的问题详细如下:

我试图编写一个滑动窗口函数,它将搜索r我的二维矩阵行并查找非零数字。
对于每个非零数字,该函数应在行和行(如果存在)的2x2邻域内(非零元素两侧的 2 个数字)寻找非零元素的存在。 如果邻域为空,则行中的原始元素应为零,否则应保留窗口内的所有非零元素。 为了使事情复杂化,我还试图使滑动窗口成为圆形,这样当它到达行的末尾时,它不会被压缩,而是包含邻域中行开头的数字。rr+1r-1
r

对于所有行,我也只能保留一个“连接”元素,如果它以某种方式连接到第 1 行,那么我的矩阵中的连续线不能从第 2 行开始。

for在 Matlab 中用 -loops 编写了这个,并在尝试操作窗口内的值时遇到了问题。除此之外,我的功能真的很慢。有没有办法在 Matlab 或 Python 中做到这一点而不使用for-loops,并且没有任何预安装的工具箱?

示例 Matlab 代码:“test”是一个二进制矩阵(但并非我要查看的所有矩阵都是二进制的)。它包含 5 行。这是我为第 1 行编写的虚拟代码。窗口操作(代码的第 4 行)不起作用,但希望这能让您对我正在尝试做的事情有所了解。此代码还省略了矩阵的边缘,因为我不确定制作此圆形的最佳方法。

0 投票
1 回答
582 浏览

matlab - 如何在matlab中应用滑动窗口来减去两个不同的图像?

如何在matlab中应用滑动窗口来减去两个不同的图像,窗口大小必须是4X4,

请帮我

我想找到两个不同图像之间的相似度值。如果 A 和 B 是两个 2 图像以滑动窗口方式在每个 A&B 的每个 4x4 矩阵之间取差异我尝试了一个代码,我不知道它是否正确

0 投票
1 回答
4036 浏览

sql - SQL Lag or Lead - 如何根据日期/时间字段不同的行选择记录

我有一个包含数百万条记录的表,其中包含日期/时间戳 - 我正在尝试返回差异 > 给定秒数的记录。

该表包含日期/时间戳,但我无法使用位置和计算出的差异。(createddate 是日期字段,updatedon 是日期/时间)

0 投票
1 回答
514 浏览

median - 矩阵相关性的滑动窗口中位数

问题部分:

  1. 有没有“朱莉娅方式”来实现滑动窗口?
  2. Julia 需要什么来忽略NaNs?

有一个包含 264 个记录点(行)和 200 个时间点(列)的矩阵。我想在 10 个样本窗口中获得每个记录点与每个其他点的中值相关性。

我已经通过创建 3d 264x264x10 矩阵尝试了 matlab 方式(tm),其中第三个暗淡是该窗口的相关性。在 matlab 中,我会median(cors,3)像 julia 那样做mean(cors,3)。但是中位数对此没有支持。看起来mapslices(median,cors,3)可能是我想要的,但有些记录点有 NaN。在 R 中,我可能会查看na.omit()或使用类似的选项,na.ignore=T但对于 julia,我看不到这一点。

0 投票
2 回答
12992 浏览

tcp - TCP 拥塞窗口大小

我正在经历一些修改,但我被一个 TCP 问题难住了。也许有人可以给我一个快速提示或推动正确的方向,这样我就可以通过这一部分。

“为什么TCP中的发送实体在确定滑动窗口大小时需要考虑拥塞窗口的大小?”

0 投票
3 回答
8903 浏览

python - Python - 使用 Numpy 的多个矩阵的元素方式

我正在实现一个滑动窗口模型,我想将一个矩阵 @ 初始化t为前 N 个矩阵的元素方式,其中 N 是窗口大小。这是我最初的尝试,它显示了最后 N 个矩阵:

期望的答案是过去 N 个矩阵的元素均值。对于上面的系列,它是:

(list_of_arrays[2]+list_of_arrays[1]) / 2 = [[0.7,0.8],[0.9,1.0]]

我应该如何修改answer在线列表理解以获得所需的答案?

0 投票
1 回答
18154 浏览

sql-server - SQL Server:跨组(而不是组内)的领先/滞后分析功能

很抱歉,这篇文章很长,但我在下面提供了复制和粘贴示例数据以及可能的解决方案。问题的相关部分在帖子的上部(水平规则上方)。

我有下表

并想要一个查询来获得这个结果集

即:我希望每个客户 ( customer_id) 和每一天 ( Dt) 第二天同一客户访问过 ( Dt_next)。

我已经有一个查询给出了后者的结果集(数据和查询包含在水平规则下方)。但是,它涉及一个left outer join和两个dense_rank聚合函数。这种方法对我来说似乎有点笨拙,我认为应该有更好的解决方案。任何指向替代解决方案的指针都非常感谢!谢谢!

顺便说一句:我使用的是 SQL Server 11,该表有 >>1m 个条目。


我的查询:

样本数据: