应用巴特沃斯高通滤波器

Applying Butterworth High Pass Filter

我在将 Butterworth 高通滤波器应用于我的数据时遇到问题。我想为 BxBy 矩阵打印过滤器。如您所见,我有正值和负值,

how to apply math.fabs() to Bx and By to get only positive values?

对于我的高通滤波器,我有这些要求:

Fc = 2 赫兹

我想截断低于 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, )

图表是:

更新:我已经使用这个函数为 Bx 和 By 矩阵生成绝对值。

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,第二张图显示运河 3,第三张图显示两个运河(通道)的组合。

不,我需要(我猜)使用高通滤波器来截断所有低于 100 pT 的测量值。有任何想法吗?

我已经用这个方法解决了问题

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="-")