Python RuntimeError:未找到最佳参数:函数调用数已达到maxfev=800

Python RuntimeError:未找到最佳参数:函数调用数已达到maxfev=800,python,random,scipy,Python,Random,Scipy,我有一个图像,我在其中选择一个randow行,并尝试在该行拟合高斯曲线。我正在使用scipy.optimize curve_fit method拟合高斯曲线 randow行的拾取是根据数组向量[10,20,40,60,100]进行的,这意味着在第一次尝试中,我在该图像中拾取10个randow行(因此,10个高斯拟合),然后选择更多行,依此类推 大多数时候,代码都在工作,但是,有时我会遇到一个错误(特别是当行数很大时:大约60行或更多),这表示找不到最佳参数 我在stackoverflow中发现了

我有一个图像,我在其中选择一个randow行,并尝试在该行拟合高斯曲线。我正在使用scipy.optimize curve_fit method拟合高斯曲线

randow行的拾取是根据数组向量[10,20,40,60,100]进行的,这意味着在第一次尝试中,我在该图像中拾取10个randow行(因此,10个高斯拟合),然后选择更多行,依此类推

大多数时候,代码都在工作,但是,有时我会遇到一个错误(特别是当行数很大时:大约60行或更多),这表示找不到最佳参数


我在stackoverflow中发现了一些类似的帖子,但仍然无法解决这个问题。使用曲线拟合方法时,似乎经常出现此问题

激光束,有可能吗?;-)

无论如何,问题可能是被选中的行“很难”按函数拟合高斯曲线。我的第一个建议是调试(例如使用python的模块)以查看错误是否只在特定行上弹出

我的第二个建议是更改曲线拟合的初始猜测。从可以进行曲线拟合的行中,您应该能够提取一些参数。在其他行上,高斯分布的平均值处于大致相同的位置,且精度变化也不会太大。一个好的初始猜测肯定会有助于曲线拟合


如果您想分析这个问题,我肯定会同时做两件事:尝试查找800次迭代后曲线拟合失败的行。然后通过更改初始猜测来查看曲线拟合是否有效。

您可以使用signal.argrelmax来查找局部最大值,这是gaussiansArghhh该死激光束中心的最佳候选。。。!