从数据中删除基线

Removing the baseline from data

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

按照 PeakUtils 库 (https://pythonhosted.org/PeakUtils/tutorial_a.html) 上的指南,作者将数据拟合为具有 polyval 的多项式,然后在此基础上找到基线并相减。

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

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 (below) except this has obviously already had the background removed.

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

然后他们将 peakutils.baseline 应用于结果 y2,指定参数 2 可能是拟合程度(同样,抛物线因为它看起来像抛物线,但你可能必须尝试其他人进行比较)。 peakutils.baseline 将拟合抛物线(即计算其系数),然后 return 抛物线上对应于每个 y2 点的点。最后,y2-base是针对基线修正后的数据。

您的数据看起来很平坦,所以应该不需要校正基线(垂直偏移可能除外)。