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

Can we use a High-Pass filter on an observable stream to detect a shake event?

本文关键字:滤波器 检测 事件 高通 抖动 观察 我们      更新时间:2023-09-26

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

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

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

这就是我通过转换维基百科上的实现所能做到的。

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/