拉曼光谱的位移和强度可以给我们提供拉曼光谱测定物质的含量相关信息,其中拉曼位移是定性与结构分析的依据。拉曼光谱分析技术在定性分析中的运用较为广泛。
但由于拉曼光谱是散射光,得到的浓度-强度曲线并不是完全线性的。其原因主要有以下三点:
迭代自适应加权惩罚最小二乘法(Adaptive Iterative Re-weighted Penalized Least Squares,airPLS),是一种精度较高,常被用于去除拉曼光谱中的背景噪声。
def airPLS(X, lam, order, wep=0.05, p=0.05, itermax=20):
(m,n) = X.shape
Z = np.empty([m,n])
D = np.diff(np.eye(n), order, axis=0)
DD = np.matmul(lam * D.T,D)
for i in range(m):
w = np.ones([n,1]).T
x = X[i,:]
for j in range(1, itermax+1):
W = spdiags(w, 0, n, n)
C = cholesky(W + DD)
z = np.matmul(inv(C), np.matmul(inv(C.T), (w * x).T)).T
d = x - z
dssn = np.abs(sum(d[d<0]))
if dssn < 0.001 * sum(np.abs(x)):
break
w[d>=0] = 0
w[0][:math.ceil(n*wep)] = p
w[0][n-math.floor(n*wep)-1:] = p
to_exp = abs(d[d<0])/dssn
w[d<0] = j * np.exp(to_exp)
Z[i,:] = z
Xc=X-Z
return Xc,Z
代码改编自一条大鱼025的文章《近红外光谱基线校正—airPLS》中的MATLAB代码。