데이터 스트림에서 신호 평활화 / 범프 감지


11

(편집 :이 질문 은 원시 WAV에서 이진 자기 스트립 카드 데이터 추출에서 나옵니다 )

여기 내 신호 (상단)와 기본 IIR 필터가 적용되었습니다 (하단)

여기에 이미지 설명을 입력하십시오

(편집 : 내 임무는 신호를 이진 0 (주파수 F)과 이진 1 (주파수 2F)로 나누는 것입니다. 그래서 그것이 F2F라고 불리는 이유입니다. 그래서 허위 피크를 보장하지 않는 방식으로 처리해야합니다. 스크린 샷은 사소한 것처럼 보이며 이중 피크를 얻는 잠재적 인 문제가 있으며 실제 피크 사이의 트로프에서 오 탐지가 발생할 수도 있습니다.)

내 질문은이 신호를 평활화하는 데 사용할 수있는 방법은 무엇입니까? IIR이 최선의 선택입니까?

적어도 세 가지 가능성을 볼 수 있습니다.

  • IIR y [n] = 0.9 * y [n-1] + 0.1 * x [n] 여기서 x <0 일 때 y [x] = 0

  • 이동 / 윈도우 평균-주변에 면적 1.0의 종 곡선을 배치하여 w = 10 각면에 샘플을 말하고 bellSmooth (x) = integral [xw, x + w] {bell (k) .samp (k)} dk

  • 예상 주파수 및 FFT 결정 / 고급 빈 제거 / 역 FFT

내 자신의 질문에 대답했을 수도 있지만 이것은 불완전하며 잘못된 용어를 사용하고 있다고 확신합니다. 또한 장단점을 실제로 예측할 수 없습니다. 마지막 방법은 기본 신호 주파수에 대한 지식이 필요하므로 덜 매력적입니다. 그러나 두 번째 방법도 마찬가지입니다. 적절한 창 길이를 선택해야합니다.

다른 방법이 있습니까?


6
원래 신호의 어떤 특성을 유지 / 측정하려고합니까? 예를 들어, 피크 포인트 사이의 타이밍, 피크 높이, 임계 값을 초과하는 시간 등?
Martin Thompson

피크 사이의 타이밍 ... 그리고 이것조차도 너무 정확할 필요는 없습니다. F2F 신호입니다 (신호 소스를 참조하고 컨텍스트를 제공하도록 질문을 수정합니다)
P i

온라인 또는 오프라인 처리를위한 것입니까?

내 논문 주제는 데이터 스트림에서 노이즈 스무딩입니다. 이 기사 나 주제가 마음에 드십니까?

답변:


6

평균화의 효과

이동 평균 필터를 사용하면 신호의 불규칙성이 완화됩니다. 잡음은 E / N이되고 여기서 N은 이동 평균 필터의 길이입니다. MA 사용의 부작용은 신호 피크가 더 넓어지고 얕아진다는 것입니다.

또한 신호의 주파수 내용이 변경됩니다. 시간 영역에서 이동 평균 필터는 모든 것이 번져 나오는 sinc 함수에 의해 주파수 영역 신호를 변화시키는 것과 같습니다.

피크 검출 알고리즘 피크 검출은 9/10 엔지니어링 문제에서 일반적인 문제입니다. (실제로는 아니지만 TON은 그들에 의존합니다)

일반적으로이 작업이 수행됩니다.

중앙값 임계 값

1) Look for all peaks in your signal. (i.e., a point that is larger than the two
   adjacent points
2) take this list of points and for each one of them compute:
   med_threshold = median(Peak,Width) + constantThresholmedian   where median is the
   median value of the data centered at "Peak" with Width being the number of 
   points to look at.
       a) The Width(usually written as Lambda in literature) and constantThreshold
          (usually written as C) are determined by trial and error and using the ROC
          curve (Acronym below)
3) if the peak's magnitude is above this threshold accept it as a true peak. 
   Else: Discard it, its a false peak
4) Generate a Receiver Operating Characteristic Curve(ROC) to how well the algorithm
   is performing.

예를 들면 다음과 같습니다.

suppose we have the signal X = [ 0 0 0 0 1 3 **9** 2 1 1 **2** 1 1 ] 
1) 9 and 2 are both potential peaks 
2) Lets use a window of 5 and  a threshold =2
so at 9 we have [1 3 9 1 2] -> [1 1 2 3 9]  so Median(9,5) = 2
9 > 2 +2, therefor its a peak
Lets take a look at 2: [ 1 1 2 1 1] -> [1 1 1 1 2 ] Median(2,5) = 1
2 < 1+2, therefor it is NOT a peak. 

주파수 결정

피크의 현지화 시간을 효과적으로 찾았으므로 주파수를 찾으십시오.

1) Use the locations of the peaks to generate a pulse train
      a) this means create sum(Dirac_delta[t-L(n)]) where L(n) is the nth time that 
      you've localized through median thresholding
2) Apply FFT Algorithm
3) Look for largest peak. 

대체 주파수 추정

1) Think of this like a beat in a piece of music (I learned about thresholding by
   researching Onset Detection.
2) Compute the average time distance between detected peaks.
3) now call your results BPM or PPM (pulses per minute) 

추가 연구 거리

피크 신호 ​​만 있으면 만족할 수 있지만 Onset Detection이라는 완전히 다른 문제에 적용되는 알고리즘이 있습니다.

발병 감지는 음악 정보 검색 리서치에서 큰 영역입니다. 음표 연주 시점을 결정하는 데 사용됩니다.

발병의 음악 샘플

테이프 헤드 신호를 샘플링 된 신호로 생각하면이 백서에서 찾을 수있는 많은 알고리즘을 적용 할 수 있습니다.

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf


"[1 3 9 1 2]"창의 너비 = 5 인 경우 어떻게 2를 얻습니까?
Spacey

숫자를 어떻게 정렬했는지 주목하십시오. 중앙값은 순서 집합의 중간 숫자입니다. [1 1 2 3 9] <-주문, 중간 숫자는 2입니다.
CyberMen

당신의 숫자를보십시오, 그것들은 [1 3 9 1 1]입니다. 2를 어디서 얻었습니까?
Spacey

@Mohammad는 작업하는 동안 몇 가지 편집 작업을 거쳤으며 삭제되었습니다. 결정된.
CyberMen

멋진 감사합니다! 음악적 맥락에서 '음표'라고 말할 때 단일 주파수 또는 여러 주파수를 의미합니까? 아니면 상관 없어? 이것이 협 대역 (단일 톤) 인 다른 응용 프로그램과 함께 사용할 수있는 방법인지 확인하고 싶습니다.
Spacey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.