미분 계산


9

일련의 데이터 (단일 배열)가 있습니다. 이 데이터를 가져 와서 플롯하면 여러 개의 피크가 있음을 알 수 있습니다. 그러나 데이터 섹션을 확대하면 상당한 노이즈가 있음을 알 수 있습니다.

CPU 시간과 에너지를 거의 사용하지 않고 데이터의 피크 수를 감지하고 싶습니다. 나는이 피크의 기울기를 감지 (날카 롭거나 부드럽게 상승 또는 하강 할 수 있음)하고 경사 수를보고 피크 수를 결정하려고 생각했습니다. (모든 피크에 대해 양의 경사와 양의 경사)

소음이있을 때 경사를 계산하는 방법에 대한 조언이 있습니까?

코드는 임베디드 시스템에 들어가고 메모리는 제한적이므로 중요한 데이터 복사가 필요없는 것을 구현하는 것이 좋습니다.


1
상점에서 필요한 것을 요구하는 것 같은 소리

2
잡음이 비교적 높은 주파수라면 데이터를 로우 패스 필터링 할 수 있습니다.
Paul R

4
하나 이상의 데이터 도표를 게시 할 수 있습니까? 그것은 우리가 어떻게 생겼는지 보는 데 도움이 될 것입니다. 신호의 미분을 계산하는 것은 잡음에 매우 민감하기 때문에 피크 검출은 일반적으로 미분 추정을 통해 수행되지 않습니다 (고역 통과 동작). 관심 신호에 악용 할 수있는 특성이있을 수 있습니다. 또한 피크를 정확하게 감지 할 확률과 실제로 관심이없는 피크를 잘못 선언 할 확률 사이에는 항상 상충 관계가 있습니다. 어떤 것이 응용 프로그램에 더 중요합니까?
Jason R

2
플롯을 만들 수 있다면 도움이 될 것입니다.
Jason R

1
피크를 감지하려면 피크 감지를 검색 할 수 있습니다 ( dsp.stackexchange.com/questions/1302/peak-detection-approach 참조 ).
Geerten

답변:


1

노이즈 유형과 신호 유형에 따라 다릅니다. 좋은 대답을 원한다면 모범을 보이십시오. 그러나 일반적으로 신호를 저역 통과 필터링하려고 할 것입니다. 내가 당신이라면, 푸리에 전력 스펙트럼을 사용하여 대부분의 잡음이 고주파인지, 내가 관심있는 신호가 주로 낮은 범위에 있는지 확인합니다. 그것들이 겹치면, 그것은 인생입니다. 나는 물건에 대해 더 생각해야 할 것입니다.

많은 경우에 시끄러운 신호에 적합한 저역 통과 필터는 Savitzky-Golay 필터입니다. Numerical Recipes에 설명되어 있으며 Python의 경우 Python Numpy Cookbook에 함수가 있습니다. 작은 커널과의 컨볼 루션 일뿐입니다. 피크 또는 기타 기능의 너비를 기준으로 창 크기를 선택합니다. 노이즈를 제거 할만큼 넓지 만 기능보다 넓지는 않습니다. 작을 수도 있고, 5 포인트 나 수십 정도 더 클 수도 있습니다.

또한 다항식 순서를 선택합니다. 일반적으로 2 또는 4를 사용합니다. 순서 2는 창이 작거나 <10 포인트이거나주기가 절반 미만인 경우 (신호가 사인과 유사 할 경우)에 적합합니다. 왜곡 된 피크 모양을 일치시키는 데 더 좋지만 약 9 개 이상의 점을 갖는 것이 좋습니다. 그러나 소음의 모양과 빈도에 따라 다릅니다.

의견에서 알 수 있듯이 파생 상품을 찾는 것이 최선의 전략은 아니지만 어쨌든 파생 상품을 찾으려면 Savitzky-Golay 필터가 신호 대신 파생물을 부드럽게 처리하고보고하는 것이 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.