2009-12-19 6 views
4

MATLAB에서 두 데이터 세트를 비교하려고합니다. 이렇게하려면 데이터를 푸리에 변환하여 데이터 세트를 필터링하고 필터링 한 다음 역 푸리에 변환해야합니다.내 역 푸리에 변환에서 스파이크가 발생했습니다.

그러나 데이터를 역 푸리에 변환하면 빨간색 데이터 세트의 양쪽 끝에 스파이크가 생기고 (그림은 첫 번째 스파이크를 보여줍니다) 파란색 선처럼 처음에는 0에 가까워 야합니다. 많은 데이터 세트를 비교 중이며 가끔씩 만 발생합니다.

이 현상에 관해 3 가지 질문이 있습니다. 첫째, 그 원인이 무엇인지, 둘째, 어떻게 해결할 수 있는가, 셋째, 시간 시리즈의 더 먼 곳 또는 시계의 시작과 끝 부분에 나타나는 데이터에 영향을 미칩니다.

도움을 주시면 감사하겠습니다.

alt text

+0

왜 주파수 영역에서 신호를 필터링 할 (사이드 참고로? 당신이 approprately fftshift을 사용하고 ifftshift 확인 않았다 이것은 항상 나를 위해 문제의 원천이되어)? 코드를 게시 할 수 있습니까? –

+0

여기에 x 축은 무엇입니까? –

답변

0

Gibbs' phenomenon의 수치 동등 할 수 없습니다. 그것이 맞다면, 필터링을 제외하고는 그것을 고칠 수있는 방법이 없습니다.

+0

* windowing methods * 사용 방법은 무엇입니까? – Amro

8

DFT를 사용할 때 DFT는주기 신호 (고조파 함수의 중첩)를 가정해야합니다. 보시다시피 시작점은 고조파 함수 방식으로 마지막 점의 정확한 연속입니다.

스펙트럼 도메인에서 제로 패딩을 수행 했습니까? 어쨌든 WindowingOvershooting을 줄일 수 있습니다.

필터 및 원본 데이터에 대해 자세히 알고 있으면 도움이 될 수 있습니다.

1

스파이크가 제로 근처에 있다고 말하면 DC 구성 요소를 확인합니다.

당신은 모양으로 관심 때문에

x -= mean(x) 

또는

x -= x.mean() 

x = x - mean(x) 

또는

하고있는 것 같다 (내가 NumPy와 사랑 해요!)

단지를 제한합니다 null로 시작하는 데이터 세트 진폭이 0 인 주파수에서 진폭을 측정하고 스펙트럼의 진폭을 완료하는 데 앞서 진행합니다.

: