为什么SciPy优化曲线拟合需要x数据从0开始

时间:2019-03-21 02:24:10

标签: python scipy curve-fitting

我已经编写了以下代码来导入数据并为其添加函数。该代码可以正常工作,但是如果我尝试选择一个不以第一个点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的值开头时,代码出了什么问题?

0 个答案:

没有答案