如何使用python平滑这些信号轨迹?

时间:2014-09-15 23:59:28

标签: python numpy scipy signal-processing

快速上升和指数衰减瞬态"尖峰"您可以在绿色中看到左侧表示随时间变化的神经活动。蓝色是基线参考信号。正如你所看到的,蓝色和绿色都会有一些漂移。

因为我遇到了基线漂移和一般噪声信号,我试图通过高通滤波器。我能够通过反向低通滤波对它们进行高通滤波(参见简要教程here)。右边是滤波后的信号。

N=101
Fc=0.001  
Fs=1.14  # it's imaging data being acquired at just over 1Hz

h=scipy.signal.firwin(N, Fc, Fs/2)
h=-h
h[N/2] = h[N/2] + 1

#this is filter design output from the tutorial
#mfreqz(h)
#show()

y=scipy.signal.lfilter(h, 1.0, data)
yy=scipy.signal.lfilter(h, 1.0, data2)

尽管它引入了一些文物,例如引入了一个假峰,然后才能摆脱漂移。在开始时,缩小原始的绿色峰值,并导致看起来像#34;低于"在其中一个绿色山峰的底部。

我可以容忍一些这些文物,但它仍然太不稳定了我的喜好。有没有办法消除这里的嘈杂?

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以考虑先使用

删除数据中不需要的线性趋势
scipy.signal.detrend

文档为here

您可能还想尝试从科学上显着的(绿色)信号中减去与基线(蓝色)信号的最小二乘拟合。

然后,为了平滑数据,考虑低通滤波器,可能是移动平均(MA)滤波器或其他类型的低通滤波器。您可能需要尝试定义一个过滤器来消除噪声成分,而不是您感兴趣的信号。