python - scipy.optimize 曲线拟合在使用数据集的一部分时给出奇怪的结果
问题描述
我正在尝试使用 scipy.optimize curve_fit 来拟合指数函数:
def func(x, a, b, c):
return c - (c-a) * np.exp(-b * x)
我从 tdms 文件导入数据,在原始数据上一切正常:
data = td[gps[0].name][chns[10].name][:]
time = td[gps[0].name][chns[10].name].time_track()
popt, pcov = curve_fit(func, time, data)
resulting = func(time,popt[0],popt[1],popt[2])
plt.plot(time,data)
plt.plot(time,resulting)
plt.legend(['Actual Temp','Calculated Temp'])
但是,在这些数据集中,通常有一小部分数据我不想在开头和结尾包含。所以我试图抓取一部分数据,但是当我这样做时,我不再得到有意义的值:
data = td[gps[0].name][chns[10].name][:]
time = td[gps[0].name][chns[10].name].time_track()
start=30
end=len(data)-10
tt = np.array(time[start:end])
dt = np.array(data[start:end])
popt, pcov = curve_fit(func, tt, dt)
resulting = func(time,popt[0],popt[1],popt[2])
plt.plot(time,data)
plt.plot(time,resulting)
plt.legend(['Actual Temp','Calculated Temp'])
我想也许数据类型不正确,所以我将它强制转换为一个 numpy 数组,但它没有改变任何东西。
任何帮助,将不胜感激。
解决方案
推荐阅读
- c - 根据鼠标移动左右移动相机
- reactjs - 重定向到路由时找不到 React Routing Image
- python - 如何在 PySide2 中使用 Felgo
- python - 我究竟做错了什么。硒藻
- flutter - 我的自动屏幕更改应该发生在哪里 - 演示文稿或模型?
- c# - 提供的字符串在天数超过 9 时解析失败
- javascript - 查找数组中所有最长的字符串
- reactjs - 如何在“react-query”中声明 useMutation 返回类型
- javascript - 如何在 Angular 中处理 $numberDecimal 属性?
- python - 列表理解与列表中元素的总和