【发布时间】:2021-05-02 22:29:20
【问题描述】:
首先,我在编程方面不是最有经验的(或者也不是那么出色)。我有点只是谷歌功能和猜测,直到它工作。因此,很多关于 Stack Exchange 和文档的讨论都在我头顶上。
我在使用 Scipy 的优化曲线拟合功能时遇到问题。我正在尝试将高斯拟合到我得到的一些电压数据。我运行以下代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
data = np.genfromtxt("C:/Hydrogen Data/peak1.csv", delimiter = ',', skip_header=1)
position = data[:,1]
voltage = -data[:,2]
plt.plot(position, voltage)
plt.show()
def gaussian(x, *p):
A, mu, sigma = p
return A*np.exp(-(x-mu)**2/(2*sigma**2))
fit, pcov = curve_fit(gaussian, position, voltage, p0 = [0.2, 100, 2])
plt.plot(fit)
plt.show()
print(pcov)
我得到一个错误,协方差矩阵的元素不能被评估。更具体地说,我得到了这个:“OptimizeWarning:无法估计参数的协方差(category=OptimizeWarning)。”我不完全确定我能做些什么来解决它,因为我读过的一些论坛帖子让我大吃一惊。有人有什么建议吗?
这是我要拟合的数据及其图表
https://drive.google.com/file/d/19PGpqb5pBxCqspCyMOJPF-brI-hvjfbN/view?usp=sharing https://i.stack.imgur.com/v1MKY.png
谢谢!
【问题讨论】:
-
嗨内森。欢迎!我想轻轻地告诉你,社区中有一些粗鲁的成员会对“我只是在谷歌功能和猜测直到它起作用”做出相当消极的反应。话虽如此,我祝你好运。我知道你来自哪里。
-
您可以编辑您的问题以包含确切的输出吗?您是否收到 SVD 收敛错误?线性错误?
-
好的,刚刚编辑了它。它确实打印了矩阵,因此程序不会在优化功能上停止。所有的矩阵元素都只是无穷大......
标签: python python-3.x scipy scipy-optimize