我想将定义如下的函数拟合到时间序列数据:
def func(t, a0, a1, a2, T, tau1, tau2):
if t < T:
return a0 + a1 * np.exp(-t/tau1) + a2 * np.exp(-t/tau2)
else:
return a0 + a1 * np.exp(-T/tau1) * (1 - t/tau1 + T/tau1) + a2 * np.exp(-T/tau2) * (1 - t/tau2 + T/tau2)
这里,t 表示进行测量的时间,其余参数是函数的参数。问题是当我将它输入curve_fit 时,Python 抱怨t < T 比较中的歧义。我相信会发生这种情况,因为当在 curve_fit 中调用 func 时 t 变成了数据点列表,而 T 是一个数字(不是列表):
popt, pcov = curve_fit(func, t1, d1)
其中 t1 是时间列表,d1 是在相应时间测量的数据值列表。我尝试了多种方法来解决这个问题,但无济于事。有什么建议吗?非常感谢!