我在把巴特沃斯高通滤波器应用到我的数据上有问题。我想打印Bx和By矩阵的过滤器。正如你所看到的,我既有正反两方面的价值,
如何将
math.fabs()应用到Bx和By中,只得到正值?
对于高通滤波器,我有以下要求:
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以下的测量值。有什么想法吗?

发布于 2018-01-01 12:43:08
我用这种方法解决了这个问题。
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="-")https://stackoverflow.com/questions/48036168
复制相似问题