我们可以在可观察流上使用高通滤波器来检测抖动事件吗?

时间:2013-12-13 11:09:51

标签: javascript gesture gesture-recognition rxjs

具体来说,如果我们在设备上有一个代表x / y / z加速度的事件流,rxjs可以给我们,我们怎么能以流式方式实现这个算法high-pass filter以便利用更长的滑动摇动检测中的样品窗口?

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

我觉得曾经如何使用我熟悉的音频/音乐工作的流量用户输入数据的信号处理概念,我提前利用这个框架的能力将会真正起飞。

1 个答案:

答案 0 :(得分: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));
    });
};

以下示例无法正常运行 super 。无论如何,它仍然有用,假设你保持鼠标移动。

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