2013-12-13 3 views
1

특히 우리가 rxjs가 줄 수있는 장치상의 x/y/z 가속도를 나타내는 이벤트 스트림이있는 경우 흔들림에서 샘플의 더 긴 슬라이딩 윈도우를 활용하기 위해 스트리밍 방식으로이 알고리즘 high-pass filter을 어떻게 구현할 수 있습니까? 탐지?흔들림 이벤트를 감지하기 위해 관찰 가능한 스트림에서 하이 패스 필터를 사용할 수 있습니까?

Shake.js 접근법은 유망하지만 2 개의 연속 샘플에만 기반하고 2 샘플은 신호 스트림을 만들지 않습니다.

나는 사용자 입력 데이터를 스트리밍 할 때 오디오/음악 작업에 익숙한 신호 처리 개념을 사용하는 방법을 한 번 보여 주었고,이 프레임 워크를 활용할 수있는 능력은 정말 감사 할 것입니다.

+0

귀하의 질문에 이해가되지 않습니다. 하이 패스 필터를 적용하는 방법 또는 흔들기 이벤트를 감지하는 방법에 대한 도움을 요청하고 있습니까? – stackoverflowuser2010

답변

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/

+0

고마워 - 나는 약간의 조정으로 이제는 떨림을 깰 수있을거야! –

+1

좋은 질문이었습니다. RxDSP 라이브러리를 만들고 싶습니다. 또한, 당신은 아마도 하이 패스 창을 열어 장치가 의도적인지를 결정하기 위해 특정 시간 내에 얼마나 많은 시간 동안 흔들릴지를 계산할 수 있습니다 ... –

관련 문제