python中的连续删除算法

计算科学 Python 谱法 特殊功能
2021-12-29 04:52:01

我正在使用 python 2.7(在 jupyter notebook,win10 64 位)来执行我的分析。我需要对反射光谱数据执行连续去除 (CR)。我需要它像这里描述的那样。

编辑:

我使用以下代码对反射光谱执行 CR:

from scipy.spatial import ConvexHull
import numpy as np
import matplotlib.pyplot as plt

i = Xdata.iloc[15,:] #get the data from a pandas df
ii = i.tolist()
mat = np.column_stack((wavelenght_list,ii))
hull = ConvexHull(mat)
plt.plot(mat[:,0], mat[:,1], 'o')
for simplex in hull.simplices:
    plt.plot(mat[simplex, 0], mat[simplex, 1], 'k-')

我得到的结果是:

在此处输入图像描述

我有3个问题:

1)为什么它没有在 550 处捕获局部最大值?

2) 如何移除 convelHull 的基线(黑色曲线)?

3)如何将我的光谱除以“上部”conveHull 以获得 CR 光谱?

2个回答

您需要为数据拟合一个凸包(例如,作为波长函数的反射率)。SciPy 包有您需要的工具,请参阅https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html

之后,您需要从沿凸包插值后的实际值中减去凸包值,请参阅https://docs.scipy.org/doc/scipy/reference/interpolate.html

@Biswajit Banerjee - 感谢您的帮助,但我找到了一个更适合我需要执行连续删除算法的模块:spectro inpysptools