测定两种成分对测量光谱的相对贡献

2024-06-23 18:55:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想提前为这个问题的冗长表示歉意:我有使用MATLAB的经验,但对Python比较陌生,因此我无法用比用文字描述更合适的代码来表达这个问题

我有一个测量光谱,它由两个成分组成:a和B

因此,x给定值下的吸光度为:

Abs(x)~c*[(f*A(x))+((1-f)*B(x)]

其中,f是混合物中A的分数,c与A和B的总浓度成比例。由于测量光谱中存在噪声,吸光度仅为近似值

Absorbance of individual components

Absorbance of mixture with noise

我的问题是如何最好地去卷积测得的光谱(在整个x值范围内)通过确定各成分的相对贡献,并计算A+B的浓度-即,确定上述方程中给出最佳拟合的cf值的组合

作为新手,一种应该有效但效率低下的方法是在不同的时间间隔选择f的值(例如,0.1个时间间隔中的0到1)然后找到c的值,它给出了每个f的最小残差平方和,R^2。然后可以将给出最佳拟合的组合用作初始猜测,以优化f到所选数量的有效数字。然而,我想,这种方法是时间-一次运行数千个光谱以上的环路时,强度会非常高

Python是否包含任何功能,使这种反褶积能够比上述过程(部分或全部)更有效地完成

提前谢谢


Tags: of方法间隔时间光谱经验光度成分
1条回答
网友
1楼 · 发布于 2024-06-23 18:55:42

也许不是解决问题的最佳方法,尽管结果令人满意,而且现在知道了一般方法,我可以在将来调整代码

# Determine concentration and fraction of A in mixture by minimising the sum 
# of the square residuals for measured spectrum - sum of spectra A + B
from scipy.optimize import minimize
def objective(x)
    return sum(spec-(x1*((x2*spec_A)+((1-x2)*spec_B))))**2

# Initial guess for parameters
x0=[max(spec)/(0.5*max(spec_A+spec_B)),0.5]

sol=minimize(objective,x0,method='SLSQP')

相关问题 更多 >

    热门问题