流处理与统计函数

本文关键字:函数 统计 处理 | 更新日期: 2023-09-27 18:03:57

我正在编写一个解释时间延迟数据流的应用程序。数据以一致的时间间隔到达,每个数据包由3个基本值组成。

我需要处理这个流来计算每次新数据包到达时的值。计算需要包含"回看"值,因此它可能只在给定数量的数据包到达后才产生输出值。我应用于缓冲数据的函数类型包括,SD, MEAN(OVER RANGE), MAX/MIN等,所有基本的统计函数。

我已经使用缓冲区进行了编码,但我在想-我基本上是在构建一个固定的函数管道…

是否有一些库,我可以使用它来"流畅"(最好)构建我的函数管道,然后简单地将数据包泵入其中,并读出生成的各种结果?

谢谢

流处理与统计函数

听起来像响应式扩展(Rx)可能是您正在寻找的。Rx允许您将Linq(即"流畅"API)应用于数据流。它还允许您定义缓冲区的长度,例如,如果您希望计算最近100个观察值的窗口的运行平均值(您称之为"回看"值)。

在第九频道有几个视频可以让你入门。这个示例展示了如何根据"回看"值进行计算。

Reactive Extensions库可能会对你想要做的事情有所帮助,因为它提供了一种在异步数据流上使用Linq操作符的方法。您可以使用Buffer操作符仅在指定数量的项到达后返回值,即:

var seq = Observable.Interval(TimeSpan.FromSeconds(1));
var bufSeq = seq.Buffer(5);
bufSeq.Subscribe(values => Console.WriteLine(values.Sum()));
Console.ReadKey();

在react网站上有更多的例子和信息:

活性扩展