小编use*_*246的帖子

如何计算RxJava中的移动平均线

在金融领域,我们通常需要从时间序列数据流中计算移动窗口聚合值,以移动平均值为例,假设我们有以下数据流(T是时间戳,V是实际值):

[T0,V0],[T1,V1],[T2,V2],[T3,V3],[T4,V4],[T5,V5],[T6,V6],[T7,V7],[T8,V8],[T9,V9],[T10,1V0],......
Run Code Online (Sandbox Code Playgroud)

从流中计算出移动平均线3:

avg([T0,V0],[T1,V1],[T2,V2]),
avg([T1,V1],[T2,V2],[T3,V3]),
avg([T2,V2],[T3,V3],[T4,V4]),
avg([T3,V3],[T4,V4],[T5,V5]),
avg([T4,V4],[T5,V5],[T6,V6]),...
Run Code Online (Sandbox Code Playgroud)

为了计算移动平均线,似乎我们可以通过以下方式来实现:

  1. 从原始流构建一个Observable
  2. 通过将值聚合到组中,从原始流构建Observable
  3. 使用聚合运算符计算步骤2中Observable的最终结果.

步骤1和3很容易实现,但是,对于第2步,似乎当前的RxJava没有内置运算符来生成移动窗口组,窗口/ groupBy运算符似乎不适合这种情况,我没有找到从现有运营商构建解决方案的简单方法,任何人都可以建议如何以"优雅"的方式在RxJava中执行此操作吗?

reactive-programming rx-java

7
推荐指数
1
解决办法
3044
查看次数

标签 统计

reactive-programming ×1

rx-java ×1