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

博主使用Python的Scipy库实现了巴特沃斯带通和低通滤波器,对从TI AFE4490获取的PPG信号进行处理。通过设置低切为0.5Hz,高截为15Hz的带通滤波器,以及低切为15Hz的低通滤波器,观察了原始和过滤后的信号。在应用滤波器前,博主展示了滤波器的响应。尽管过滤信号在开始阶段表现出不寻常的‘启动’现象,博主寻求对这一现象的解释和可能的优化方法。
摘要由CSDN通过智能技术生成

我从我的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数组的函数。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值