【问题标题】:Applying Butterworth High Pass Filter应用巴特沃斯高通滤波器
【发布时间】:2017-12-30 17:18:22
【问题描述】:

我在将巴特沃斯高通滤波器应用于我的数据时遇到问题。我想为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 的所有测量值。有任何想法吗?

【问题讨论】:

  • 高通滤波器会降低低于截止频率的频率分量的幅度。由于您的数据显示了高于 2Hz 截止频率的变化,因此它们几乎不会受到高通滤波器的影响。您是否想使用低通滤波器?否则numpy.clip(np.absolute(fft1),0,100) 会限制幅度(但如果担心的话,这是一个有损操作)。
  • 嗯,这是个好主意,但我不能承受任何数据丢失。更准确地说,我需要获得所有高于 100 pT 的测量值,也许我使用高通滤波器的想法毫无意义,但没有更好的想法出现在我的脑海中。

标签: python-2.7 signal-processing highpass-filter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多