2013-05-03 2 views
0

을 존중하지 :대역 통과 필터는 파이썬에서이 필터를 사용하고 차단

def bandpass_firwin(ntaps, lowcut, highcut, fs, window='hamming'): 
    nyq = 0.5 * fs 
    taps = firwin(ntaps, [lowcut, highcut], nyq=nyq, pass_zero=False, 
        window=window, scale=False) 

어디에 내 ntaps = 128; 로우컷 = 0.7; 하이 컷 = 4; fs = 61

61 개의 샘플을 61Hz로 샘플링 한 신호를 필터링합니다 (따라서 10 초 길이입니다).

enter image description here

이 스펙트럼에서 PEEK 0.61 Hz에서이다

I이 대역 통과 필터에 의해 필터링 된 신호의 스펙트럼에서 보이는

는,이 참조. 0.7에서 4 Hz 범위에 속하지 않습니다.

어떻게 가능합니까? & 어떻게 방지 할 수 있습니까?

+0

결과를 재현 할 수 없습니다. 나는 당신의 코드를 사용하여 매우 훌륭한 밴드 패스 필터를 얻는다. 어떻게 그 음모를 꾸미고 있니? –

+0

아, 필터링 된 데이터입니다. –

+0

예 이미 벌리고 있습니다. taps_hamming = bandpass_firwin (ntaps, 0.7, 4, FS =에서의 FS) Ynew3 = np.convolve (Ynew2, taps_hamming "동일한") – Ojtwist

답변

0

귀하의 필터는 마법이 아닙니다. 대역폭에 고유 한 제한 사항이 있습니다. 타이트한 컷오프가 정말로 필요한 경우 더 많은 탭을 사용해보십시오.

사용하는 탭 수가 많을수록 가장자리 효과와 그 처리 방법에 대해 더 많이 생각해야합니다 (가장자리 가정이 데이터 블록으로 더 멀리 침투하여 더 많이 침투하므로). 아마도 가장자리에서 부드러운 롤을 원할 것입니까? 아니면 거울과 데이터의 반복? 아마도 당신은 그것을 완전히 무시할 수 있습니다 ...

컨볼 루션의 또 다른 기법은 원하는 스펙트럼을 단순히 곱함으로써 주파수 영역에서 직접 필터링하는 것입니다. 이렇게하면 신호가 반복된다는 가장자리 가정이 부과됩니다. 신호를 적절하게 확장하여이를 변경할 수는 있습니다. 동등한 FIR 필터의 지원을 알고 싶으면 창 IFFT를 사용하면 시간 블록의 시작 부분이 시작 부분에 얼룩 지는지 확인할 수 있습니다.

+0

나는 가장자리 효과가 내게 중요하다고 생각하지 않는다. 0.7Hz ~ 4Hz의 피크 주파수가 필요합니다. – Ojtwist

+0

피크 주파수가 궁극적 인 목표입니까? 필터링 된 신호가 필요합니까? 필터링 된 신호가 실제로 필요하지 않은 경우, 필터링되지 않은 신호의 스펙트럼에서 0.7 Hz와 4 Hz 사이의 피크를 찾을 수 있습니다. –

+0

@Ojtwist 그래서 해결책을 제시했습니다 ... 가장자리 효과의 영향을 알고 있어야합니다. 또한 Warren의 의견을 말합니다. –

관련 문제