我编写了一个程序来拟合一些拉曼光谱峰值。\n我需要返回拟合的参数(位置、幅度、HWHM)。
\n\n我使用 modul lmfit 创建一个带有约束的洛伦兹峰。
\n\n根据我的图形,拟合峰值和原始数据之间有很好的一致性。\n但是当拟合后提取参数时,我遇到了一个问题,程序仅返回初始值。
\n\n我绑定了“report_fit 模块”并更改了初始参数,但没有成功。参数值不会变化。
\n\n令我困扰的是,这个程序在我同事的电脑上运行,但在我的电脑上运行不了。\n所以问题可能出在我的 python 版本上。
\n\n我正在使用spyder 2.3.9,并在Windows 10下使用anaconda安装了python 3.4。\nlmfit模块0.9.3似乎可以部分工作,因为我可以获得一个很好的拟合协议(从图plt.plot中)。\n但是拟合后无法返回参数值。
\n\n这是我的代码:
\n\n#!/usr/bin/python3\n# -*- coding:utf-8 -*-\n\nimport os\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom math import factorial\nfrom scipy.interpolate import interp1d\nfrom lmfit import minimize, Parameters #,report_fit\n\n##############################################################################\n# Fit of Raman peaks\n\ndef fmin150(pars,x,y): \n amp= pars[\'Amp_150\'].value\n cent=pars[\'Cent_150\'].value\n hwhm=pars[\'Wid_150\'].value\n a=pars[\'a_150\'].value\n b=pars[\'b_150\'].value\n peak = (amp*hwhm)/(((x-cent)**2)+(hwhm**2)) + ((a*x)+b)\n return peak - y \n\ndef fmin220(pars,x,y): \n amp= pars[\'Amp_220\'].value\n cent=pars[\'Cent_220\'].value\n hwhm=pars[\'Wid_220\'].value\n a=pars[\'a_220\'].value\n b=pars[\'b_220\'].value\n peak = …Run Code Online (Sandbox Code Playgroud)