应用巴特沃斯高通滤波器
Applying Butterworth High Pass Filter
我在将 Butterworth 高通滤波器应用于我的数据时遇到问题。我想为 Bx
和 By
矩阵打印过滤器。如您所见,我有正值和负值,
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="-")
我在将 Butterworth 高通滤波器应用于我的数据时遇到问题。我想为 Bx
和 By
矩阵打印过滤器。如您所见,我有正值和负值,
how to apply
math.fabs()
toBx
andBy
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="-")