DC를 거부하는 좋은 FFT 윈도우 기능은 무엇입니까?


9

FFT를 사용하여 본질적으로 신호의 전력 엔벨로프가 무엇인지 분석하고 ( 포함하는 프로젝트에 대한 정보는 여기 참조 ) 전력 수는 항상 양수이므로 DC 구성 요소를 제거하기 위해 창을 사용하고 싶습니다. 일반적인 모든 양성 기능과 비교하여 50/50의 양성 및 음성 기능.

나는 " flat top "기능을 가져 와서 a0바이어스를 제거하고 코사인에서 사인으로 변환했지만 그것이 최적 (또는 의미있는)인지는 확실하지 않습니다.

어떠한 제안?


9
윈도 잉하기 전에 평균을 빼기 만합니까?
endolith

답변:


2

가장 일반적인 연속 윈도우 기능 (von Hann 등)의 1 차 미분은 DC를 거부하지만 원래 윈도우 기능과 유사한 크기 주파수 응답을 갖습니다. 따라서 단계와 관련이없는 경우 창 선택에 원래 "양호"기준을 계속 사용할 수 있습니다.


2
이 답변은 주로 정확하지만 더 많은 설명이므로 확장하면 매우 유용합니다.
Phonon

그러나 그것은 내 질문을 어느 정도 해결합니다.
Daniel R은

1
윈도 잉하기 전에 평균을 빼는 대신 이것을하는 이유가 있습니까?
nibot

JasonR의 대답이 맞다면, 창 함수를 통해 DC를 거부한다는 아이디어는 여전히 유효하지 않습니다.
nibot

@nibot : 가능한 더하기 빼기가 불가능하기 때문일 수 있습니다 (예 : 일부 고정 하드웨어 파이프 라인 또는 대기 시간에서는 사용할 수 없음)
hotpaw2

7

큰 DC 성분이있는 신호에 대한 스펙트럼 분석에 관심이 있고 해당 DC 피크를 억제하려면 윈도우 기능이 원하는 것이 아닙니다. 다른 답변에서 언급했듯이 고역 통과 필터 (또는 다르게 볼 때, 주파수가 0 인 노치 필터)는 적절한 솔루션입니다.

이유를 이해하려면 각 DFT 출력의 주파수 응답에 윈도우 기능을 적용하는 것이 무엇인지 생각해야합니다. DFT는 다음과 같이 정의됩니다.

X[k]=n=0N1x[n]ej2πnkN

DFT의 작동 방식에 대한 한 가지 해석은 와 사이의 간격이 같은 주파수 의 필터 뱅크입니다 . 다음과 같이 위의 합계를 다시 계산하십시오.Nfs2fs2

엑스[케이]==01엑스케이[]

어디:

엑스케이[]=엑스[]이자형제이2π케이

따라서, 번째 DFT 출력은 먼저 입력 신호 취하고 이를 주파수 에서 복소 지수로 곱하여 다운 컨버팅 된 신호 을 생성함으로써 생성 . 그런 다음 결과 신호를 샘플 윈도우에 합산 하여 DFT 출력 를 산출합니다 . 이것은 효과적으로 이동 평균 필터 (때로는 박스 카 필터라고도 함)이며 임펄스 응답은 다음과 같이 설명 할 수 있습니다.케이엑스[]2π케이엑스케이[]엑스[케이]

[]={1, 엑스=0,1,,10, 그렇지 않으면

박스 카 필터의 크기 응답 은 해당 임펄스 응답 의 이산 시간 푸리에 변환 (DTFT) 을 사용하여 찾을 수 있습니다 .

|H(에프)|=|(π에프에프에스)(π에프에프에스)|

이것은 Dirichlet 커널 이며 sinc 함수와 약간 비슷하지만 주기적으로 반복되기 때문에 "정기 sinc"라고도합니다. sinc는 그렇지 않습니다. 이 식은 각 DFT 출력의 크기 응답을 제공하며, 여기서 는 각 출력 빈의 중심 주파수에서 주파수 오프셋으로 측정됩니다. 이것은 스펙트럼 누출 효과를 보여줍니다 . 각 DFT 출력에는 각 출력의 개별 중심 주파수뿐만 아니라 입력 신호 스펙트럼의 일부 연속 스와 스를 포괄하는 주파수 응답이 있습니다.에프

이제 DFT를 수행하기 전에 입력 신호 윈도우 기능을 적용하면 상황이 어떻게 변하는 지 고려 하십시오.엑스[]

엑스[케이]==01[]엑스[]이자형제이2π케이==01[]엑스케이[]

윈도우 기능이 제 위치에 있으면, 하향 변환 된 은 윈도우 기능에 의해 설명되는 임펄스 응답을 갖는 FIR 필터를 효과적으로 통과한다. 따라서 DFT의 출력 당 크기 응답은 다음과 같습니다.엑스케이[]

|H(에프)|=|(에프)|

여기서 윈도우 함수의 DTFT . DC에서 0을 갖는 윈도우 함수를 선택하고이를 DFT 이전에 을 미리 곱하기 위해 사용한 경우 실제로 결과 스펙트럼에서 DC뿐만 아니라 중심 주파수를 무효화하는 의도하지 않은 결과를 초래할 수 있습니다. 모든 DFT 출력의 이것은 아마도 당신이 원하는 것이 아닙니다.(에프)[]엑스[]

따라서 신호의 DC 구성 요소를 진정으로 취소하려면 시간 영역 윈도우가 아닌 다른 유형의 전처리를 통해 신호를 제거하는 것이 좋습니다. 예를 들어 차단 주파수가 매우 낮은 선형 고역 통과 필터를 사용하거나 신호에서 추정 평균을 먼저 뺄 수 있습니다. 이 방법들 중에서 선택하는 것은 시스템이 가지고있는 다른 제약 조건에 기초해야합니다.


3

윈도우 기능을 사용하는 것이 DC를 제거하는 좋은 방법이라고 생각하지 않습니다. 엔도리스가 언급했듯이, 일반적인 방법은 윈도 잉하기 전에 평균을 빼는 것입니다. 또 다른 옵션은 약 10Hz의 컷오프 주파수로 분석하기 전에 신호에 고역 통과 필터를 적용하는 것입니다.


신호가 아날로그 형태로 존재하지 않는 경우 고역 통과 필터를 적용하는 것은 옵션이 아닙니다. 그러나 특히 엔드 포인트를 0으로 끌어내는 창을 사용하는 경우 평균을 빼면 효과가 있어야한다고 생각합니다 (& 엔 돌리 트). (그리고 신호를 0.01Hz로 분석 할 경우 하이 패스 필터는 더 낮은 컷오프가 필요합니다.)
Daniel R Hicks

2
고역 통과 필터를 적용하기 위해 왜 아날로그 신호가 필요하다고 생각하십니까? 디지털 HPF를 만들 수 있습니다.
Jason R

@JasonR-나는 그런 것들에 대해 꽤 무지하다는 것을 인정할 것입니다 (내 신호 과정은 40 년 전, FFT 등 전에 거의 없었습니다). 그러나 디지털 고역 통과 필터를 만드는 것은 나에게 보입니다. 먼저 신호의 푸리에 변환을 생성해야합니다.
Daniel R은

1
전혀 그렇지 않습니다. 저역 통과, 대역 통과뿐만 아니라 고역 통과 필터를 생성 할 수 있습니다. 실제로, 저역 통과 필터 프로토 타입 을 가져와 유사한 응답을 갖는 고역 통과 필터 로 변환 하는 기술이 있습니다 . 필터 설계를위한 대부분의 소프트웨어 (예 : MATLAB)를 사용하여 모든 유형의 필터를 만들 수 있습니다.
Jason R

1
고역 통과 필터를 구현하려면 차별화가 필요하다는 인상을 어디에서 얻었는지 잘 모르겠습니다. 미분은 고역 통과 동작이지만 고역 통과 필터에 적합한 구현은 아닙니다 (주파수 응답이 램프이므로 잡음이 자주 발생하는 더 높은 주파수를 증폭시킵니다). 위키 백과 문서 고역 통과 필터에 대한 좋은 시작이 될 것입니다.
Jason R
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.