시료 간 국소 피크 찾기


10

I는이 지진 신호의 이산 샘플 : ny[n]여기에 이미지 설명을 입력하십시오

신호에서 로컬 최대 값을 찾고 싶습니다.

이 최대 값 인지에 대한 순진 테스트 는 다음과 같습니다. y[n]

y[n]:maxima if y[n]>y[n1] and y[n]>y[n+1]

그러나 최대 값은 샘플 사이에있을 수 있습니다. 예를 들어 최대 값이있을 수 있습니다 .i=4.25

샘플 사이에서 최대 값을 찾으려면 을 보간해야한다고 생각합니다 .y[n]

  • 보간법을 사용하여 최대 값을 찾으려면 어떻게합니까?
  • 어떤 보간법을 사용해야합니까?

보시다시피 내 신호가 시끄럽지 않지만 최대 값이 트레스 홀드를 초과하고 특정 폭 (스파이크 없음)을 갖도록 방법을 약간 필터링하면 좋을 것입니다.

그러나 가장 큰 문제는 샘플 사이에서 피크를 찾는 것입니다. 이 작업을 수행하는 좋은 방법에 대한 제안 사항이 있습니까?

모든 답변에 미리 감사드립니다!


1
어쩌면 보는 질문 1질문 2 .
Geerten

주파수 스펙트럼에 대한 몇 가지 방법 : dspguru.com/dsp/howtos/how-to-interpolate-fft-peak
endolith

두 번째는 @Geerten ;-)에 대한 답변이 없습니다
Ivo Flipse

1
오 .. 하하, 좋은 지적. 글쎄, 나는 그 질문에 대해이 질문을 다시 언급 할 것이다;)
Geerten

답변:


7

서브 샘플 해상도 얻기

코드 크기 측면에서 매우 저렴한 솔루션은 신호를 업 샘플링하는 것입니다. matlab에서이 작업을 수행 할 수 있습니다 interp(y ,ratio). 약간 더 복잡한 해결책은 순진하게 피크를 감지하는 것입니다. 각각의 피크에 대해, 포물선을 y [peak-1], y [peak], y [peak + 1]에 맞추는 단계; 그런 다음이 포물선이 최대 인 지점을 실제 피크 위치로 사용합니다.

피크 검출에 대하여

도움이되는 많은 기술 :

  • 힐마 (Hilmar)가 제안한대로 신호를 가우시안 또는 한 (Hans) 창으로 변환합니다. 시간 정확도는 애플리케이션에 필수적인 것으로 보이므로 필터링에 의해 도입 된 시간 지연을 고려해야합니다!
  • 신호의 중간 필터링 된 버전 자체를 상당히 뺍니다 (관찰 창이 매우 큼). 결과를 표준 편차 필터링 된 버전으로 나눕니다. 이것은 추세를 제거하고 임계 값을 표준 편차 단위로 표현할 수있게합니다.
  • 피크 피킹의 경우 "탑 햇"필터를 사용하여 공식화합니다. 신호의 탑햇 필터링 된 버전을 yt [n] = max (y [n-W], y [n-W + 1], ..., y [n + W-1], y [n + W]); y [n] == yt [n] 및 y [n]> 임계 값 인 지점을 피크로 사용하십시오.

이 모든 것은 몇 번의 nlfilter 패스로 Matlab에서 매우 효율적으로 구현 될 수 있습니다.


업 샘플링과 포물선 보간의 조합은 어느 것보다 효과적 일 수 있습니다.
hotpaw2

3

손실 피크 검출기를 사용해보십시오.

y[n] = max(abs(x[n]),a*y[n-1]);

여기서 "a"는 검출기의 붕괴 속도를 제어하는 ​​1보다 작은 숫자입니다. 그것은 하나의 피크로 스무 싱하지 않고 인접한 피크가 얼마나 가까이있을 수 있는지를 결정합니다. 그런 다음 임계 값 감지를 수행하십시오.


방정식에 ax [n] 및 y [n]이 모두 있습니다. 이것이 정확합니까 아니면 y [n]이어야합니까?
Andy

x [n]은 입력이고, y [n]은 출력입니다. 전반적으로 나쁜 대답, 오타가 있습니다 (지금 수정 됨). 나는 그 질문을 오해했습니다. 사과
Hilmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.