2017-12-30 53 views
1

データにバターワースハイパスフィルターを適用する際に問題があります。私はBxByマトリックスのフィルターを印刷したいと思います。あなただけの正 の値を取得するためにBxBymath.fabs()を適用する方法バターワースハイパスフィルターを適用する

、私は正と負の値の両方を持って見ることができるように?

のFc = 2 Hzの

I 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:私はBxのおよびマトリックスによって絶対値を生成するには、この機能を使用しています。

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() 

私はそれに感謝を受信すると、すべての私の測定は(ここでは大気中の放電がある)正の値(PT - picoTesla)のみであるということです。最初のプロットは運河1を示し、2番目のプロットは運河3を示し、3番目のプロットは両方の運河(チャネル)を組み合わせたものを示します。

いいえ、100 pT未満のすべての測定値をカットするにはハイパスフィルタを使用する必要があります(私は推測します)。何か案は? 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="-") 
関連する問題