Python基线校正库
作者:互联网
我目前正在使用一些拉曼光谱数据,我正在尝试纠正由于花期偏斜引起的数据.看看下面的图表:
我非常接近实现我的目标.正如你所看到的,我试图在我的所有数据中拟合多项式,而我应该只是在局部最小值处拟合多项式.
理想情况下,我希望有一个多项式拟合,当从我的原始数据中减去时会得到类似这样的结果:
是否有任何内置的库已经这样做了吗?
如果没有,可以为我推荐任何简单的算法吗?
解决方法:
我找到了一个问题的答案,只是为每个偶然发现的人分享.
P. Eilers和H. Boelens在2005年有一种叫做“Asymmetric Least Squares Smoothing”的算法.这篇论文是免费的,你可以在google上找到它.
def baseline_als(y, lam, p, niter=10):
L = len(y)
D = sparse.csc_matrix(np.diff(np.eye(L), 2))
w = np.ones(L)
for i in xrange(niter):
W = sparse.spdiags(w, 0, L, L)
Z = W + lam * D.dot(D.transpose())
z = spsolve(Z, w*y)
w = p * (y > z) + (1-p) * (y < z)
return z
标签:python,numpy,scipy,signal-processing 来源: https://codeday.me/bug/20190930/1835612.html