2017-12-30 72 views
1

데이터에 버터 워스 하이 패스 필터를 적용하는 데 문제가 있습니다. BxBy 행렬에 대한 필터를 인쇄하고 싶습니다. 당신은 버터 워스 하이 패스 필터 적용

방법 Bxmath.fabs()을 적용하고 By는 긍정적 인 값을 얻기 위해, 나는 모두 양과 음의 값을 가질 볼 수 있듯이?

된 Fc = 2 Hz의

나는 100 pT를 아래 값을 차단하고 싶은 내 하이 패스 필터의 경우

나는 그 요구 사항이 있습니다.

plt.ylabel('Pico Tesle [pT]') 
plt.xlabel('Time [ms]') 
plt.grid() 
plt.plot(time[51:-14], Bx[51:-14], label='Canal 1', color='r', linewidth=0.1, linestyle="-") 
plt.plot(time2[1:-14], By[1:-14], label='Canal 3', color='b', linewidth=0.1, linestyle="-") 
plt.legend(loc='upper right', frameon=False,) 

그리고 차트이다 :

내 현재 코드의 일부이다 enter image description here

UPDATE : I는 Bx로 및 매트릭스에 의해 절대 값을 생성하기 위해이 기능을 사용했다. (- picoTesla PT) 나는 그 덕분에받은 무엇

plt.subplot(413) 
np.absolute(fft1) 
plt.plot(time[51:-14], np.absolute(fft1), color='r', linewidth=0.1, linestyle='-') 
plt.grid() 

plt.subplot(414) 
np.absolute(fft2) 
plt.plot(time2[1:-14], np.absolute(fft2), color='b', linewidth=0.1, linestyle='-') 
plt.grid() 

내 모든 측정 (여기가 대기 방전입니다)에만 양의 값에 있다는 것입니다. 첫 번째 줄거리는 채널 1을 보여주고 두 번째 줄거리는 채널 3을 보여주고 세 번째 줄거리는 두 가지 채널 (채널)을 결합한 줄을 보여줍니다.

아니요, 100pT 미만의 모든 측정을 차단하려면 하이 패스 필터를 사용해야합니다. 어떤 아이디어? enter image description here

+1

하이 패스 필터는 컷오프 주파수 이하의 주파수 성분의 진폭을 감소시킵니다. 귀하의 데이터는 2Hz 컷오프 이상의 주파수에서 변동을 나타내므로 하이 패스 필터의 영향을 거의받지 않습니다. 대신 로우 패스 필터를 사용하고 싶습니까? 그렇지 않으면'numpy.clip (np.absolute (fft1), 0,100)'은 진폭을 제한 할 것입니다 (그러나 염려스러운 부분은 손실 연산입니다). – SleuthEye

+0

글쎄, 좋은 생각이지만, 나는 데이터를 잃을 여유가 없다. 더 정확하게 말하면, 100pT를 초과하는 모든 측정 값을 얻을 필요가 있습니다. 하이 패스 필터를 사용하는 것에 대한 나의 생각은 무의미하지만, 내 마음에 더 좋은 것은 없습니다. – Hiddenguy

답변

0

이 문제를 해결하기 위해이 방법을 사용했습니다.

Wn = float(1)/HalfSampling 
b, a = signal.butter(3, Wn, 'high', analog=False) 
BxHPF = signal.filtfilt(b, a, Bxfft) 
ByHPF = signal.filtfilt(b, a, Byfft) 
plt.plot(BxTime, BxHPF, label='Canal 1', color='r', linewidth=0.5, linestyle="-") 
plt.plot(ByTime, ByHPF, label='Canal 3', color='b', linewidth=0.5, linestyle="-")