Я написал код ниже, чтобы импортировать данные и подогнать к ним функцию.Код работает нормально, однако возникает проблема, если я пытаюсь выбрать диапазон данных, который не начинается с первой точки 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 секундам, это результат (в противном случае он идеально подходит).
аппроксимирующая кривая с данными x, начинающимися с 100
Я также попытался оставить данные и выбрать желаемый диапазон через 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?