1

具体来说,如果我们有一个表示设备上 x/y/z 加速度的事件流,rxjs 可以给我们,我们如何以流的方式实现这个算法高通滤波器,以便利用更长的样本滑动窗口震动检测?

Shake.js方法很有前途,但仅基于 2 个连续样本,并且 2 个样本不构成信号流。

我觉得一旦展示了如何在流式用户输入数据上使用我从音频/音乐工作中熟悉的信号处理概念,我利用这个框架的能力将真正起飞,在此先感谢。

4

1 回答 1

1

这就是我可以通过转换维基百科上的实现来做到的。

Rx.Observable.prototype.highpass = function (rc) {
  return this
    .timestamp()
    .bufferWithCount(2, 1)
    .scan(0, function (acc, x) {
      var dt = x[1].timestamp - x[0].timestamp;
      var a = rc / (rc + dt);
      return a * (acc + (x[1].value - x[0].value));
    });
};

以下示例效果不是很好。无论如何,假设您保持鼠标移动,它仍然有用。

http://jsfiddle.net/xixonia/j2H3k/

于 2013-12-14T03:06:32.280 回答