我知道有與此有關的線程,但我很困惑,我想讓我的數據適合我的數據。Python - 從記錄值擬合指數衰減曲線
我的數據被導入並繪製成這樣。
import matplotlib.pyplot as plt
%matplotlib inline
import pylab as plb
import numpy as np
import scipy as sp
import csv
FreqTime1 = []
DecayCount1 = []
with open('Half_Life.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
FreqTime1.append(row[0])
DecayCount1.append(row[3])
FreqTime1 = np.array(FreqTime1)
DecayCount1 = np.array(DecayCount1)
fig1 = plt.figure(figsize=(15,6))
ax1 = fig1.add_subplot(111)
ax1.plot(FreqTime1,DecayCount1, ".", label = 'Run 1')
ax1.set_xlabel('Time (sec)')
ax1.set_ylabel('Count')
plt.legend()
問題是,我遇到困難設置常規指數衰減,在我不知道如何從數據集中計算的參數值。
如果可能的話,那麼我想要用圖表顯示擬合衰減方程的方程。但是,如果能夠生產出適合的產品,這可以很容易地應用。
編輯 ------------------------------------------- ------------------
所以使用Stanely基R提及
def model_func(x, a, k, b):
return a * np.exp(-k*x) + b
x = FreqTime1
y = DecayCount1
p0 = (1.,1.e-5,1.)
opt, pcov = curve_fit(model_func, x, y, p0)
a, k, b = opt
我與此錯誤消息
返回的擬合函數時TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('S32') dtype('S32') dtype('S32')
有關如何解決此問題的任何想法?
看看http://stackoverflow.com/questions/21420792/exponential-curve-fitting-in-scipy –