从数据中删除基线

时间:2016-11-17 18:56:42

标签: python numpy scipy data-fitting peakutils

我想删除基线并最终使用python找到一些噪声数据的峰值(拉曼散射测量,如果有人曾经有过这方面的经验)。

在PeakUtils库(https://pythonhosted.org/PeakUtils/tutorial_a.html)上遵循本指南后,作者将数据拟合为具有polyval的多项式,然后根据此值找到基线并减去它。

我的问题是a)为什么要将多项式拟合到数据中,为什么不直接从数据中删除基线呢?和b)参数[0.002,-0.08,5]具有什么意义,它们传递给polyval?我需要为自己的数据微调这些吗? 有人可以解释这对我有用吗?

y2 = y + numpy.polyval([0.002,-0.08,5], x)
pyplot.figure(figsize=(10,6))
pyplot.plot(x, y2)
pyplot.title("Data with baseline")

base = peakutils.baseline(y2, 2)
pyplot.figure(figsize=(10,6))
pyplot.plot(x, y2-base)
pyplot.title("Data with baseline removed")

我的数据形状与here(下图)相同,但显然已经删除了背景。 raman_sample_data

1 个答案:

答案 0 :(得分:1)

在PeakUtils指南中,[0.002, -0.08, 5]传递给polyval代表y = 0.002 * x ^ 2 - 0.08 * x + 5,这是为了创建看起来像抛物线的示例数据( " U形"基线的右侧部分)。通过传递更短或更长的多项式系数列表,它可以是平坦的,直的或任何其他的。示例数据称为y2,它是前一个示例数据y与人工添加的polyval基线的总和。

然后他们在结果peakutils.baseline上应用y2,指定参数2,这可能是拟合的程度(再次,抛物线,因为它看起来是抛物线的,但你可能需要尝试别人比较)。 peakutils.baseline将拟合抛物线(即计算其系数),然后返回抛物线上与每个y2点对应的点。最后,y2-base是针对基线更正的数据。

您的数据看起来很平坦,因此不需要校正基线(除了垂直移位)。