当前位置:   article > 正文

python滤波器处理数据的优点_使用Python对原始信号应用合适的butterworth滤波器

python信号滤波

我从我的TI AFE4490获得了一个10秒的原始PPG(光容积图)信号。我的硬件经过校准,我用每秒250个样本来记录这些信号。最后我得了2500分。在

我使用巴特沃斯带通滤波器,低切=0.5,高截=15,阶数=2。你可以看到我的原始和过滤信号如下:

我也试着用巴特沃斯低通滤波器,低切=15,阶数=2。如您所见,我的原始和过滤信号如下:

我在一些文章中读到0.5Hz和15Hz是这种信号的良好的低切和高截频率。在

在我应用过滤器之前,我使用了一个scipybartworth(来自Scipy docs)算法来显示过滤器的响应,这很好。在

我的过滤信号在“开始”之后似乎很好(开始时的仰角),但我不知道为什么会这样。有人能告诉我,在巴特沃斯过滤器,这种“启动”是否正常?是的,有没有办法?在

谢谢你的帮助。在

我的代码:RED, IR, nSamples, sRate = getAFESignal()

period = 1/sRate # Signal period.

# Desired cutoff frequency (in Hz) and filter order.

lowcut = 0.5

highcut = 15

orders = 2

plt.figure(1)

x = np.linspace(0, nSamples*period, nSamples, endpoint=True)

plt.subplot(2,1,1)

y = IR

plt.xlabel('Time (s)')

plt.ylabel('Voltage (V)')

plt.plot(x,y, label='Noisy signal')

plt.subplot(2,1,2)

yf = butter_bandpass_filter(IR, lowcut, highcut, nSamples, order=orders)

plt.xlabel('Time (s)')

plt.ylabel('Voltage (V)')

plt.plot(x, yf, label='Filtered signal')

plt.grid()

plt.show()

函数getAFEsignal()只是一个读取.txt文件并将所有文件放入两个numpy数组的函数。在

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/78346
推荐阅读
相关标签
  

闽ICP备14008679号