【发布时间】:2019-02-02 11:36:07
【问题描述】:
我从我的 TI AFE4490 获得了 10 秒的原始 PPG(光电容积描记图)信号。我的硬件已经过校准,我每秒使用 250 个样本来记录这些信号。我最后获得了2500分。
我使用了带有 lowcut=0.5 、 highcut=15 和 order=2 的 Butterworth 带通滤波器。您可以在下面看到我的原始和过滤信号:
我还尝试使用带有 lowcut=15 和 order=2 的巴特沃斯低通滤波器对此进行过滤。如您所见,我的原始信号和过滤信号如下:
我在一些文章中读到 0.5Hz 和 15Hz 是此类信号的良好低切和高切频率。
在应用过滤器之前,我使用了 Scipy Butterworth(来自 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数组的函数。
【问题讨论】:
标签: python scipy signal-processing digital-filter butterworth