我已经编写了以下代码来导入数据并为其添加函数。该代码可以正常工作,但是如果我尝试选择一个不以第一个点x = 0开头的数据范围,则会出现问题。
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
data = np.loadtxt('/home/alex/Downloads/Tuesday_trial1.txt');
x = [row[0] for row in data]
t = np.asarray(x)
y = [row[1] for row in data]
def sho(t,a,v,w,p,o):
return a*np.exp(-v*t/2)*np.cos(w*t-p)-o
popt,pcov = curve_fit(sho,t,y)
如果更改数据以使数据的x列中的第一项为100秒而不是0秒,则为结果(否则非常合适)。
fit curve with x data starting at 100
我还尝试过保留数据be并通过python通过
选择所需范围x = [row[0] for row in data]
t = np.asarray(x[100:1500])
y = [row[1] for row in data]
y = np.asarray(y[100:1500])
两种方法都可以得到上面的图像。有没有办法使此功能仅适合特定范围的数据?当x数据以非0的值开头时,代码出了什么问题?