次のように定義された関数を時系列データに適合させたいと思います。
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比較のあいまいさについて文句を言うことです。これは、funcがcurve_fit内で呼び出されたときに、tがデータポイントのリストになるのに対し、Tは数値(リストではない)であるために発生すると思います。
popt, pcov = curve_fit(func, t1, d1)
ここで、t1は時間のリストであり、d1は対応する時間に測定されたデータ値のリストです。私はこの問題を回避するためにいくつかの方法を試みましたが、役に立ちませんでした。なにか提案を?どうもありがとう!