我从 TI AFE4490 获得了 10 秒的原始 PPG(光电体积描记图)信号。我的硬件已经过校准,我每秒使用 250 个样本来记录这些信号。最后我获得了2500分。
我使用了带有 lowcut=0.5 、 highcut=15 和 order=2 的巴特沃斯带通滤波器。您可以在下面看到我的原始和过滤信号:
我还尝试使用带有 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 数组的函数。