我想将下面附带的数据与-a*sin(b*x + c)(或可能也可以使用-a*sin(2*x))与a b c作为要确定的值的函数拟合。我使用了scipy.optimize.curve_fit,但效果不好(如您在image中看到的那样)。我该如何改进?在Python中拟合正弦数据
代码:
import numpy as np
import matplotlib.pylab as plt
data = open('pruebaData.dat', 'r')
lines = data.readlines()[1:]
x = []
y = []
for line in lines:
pos = line.split()
if pos != []:
x.append(float(pos[0]))
y.append(float(pos[1]))
z = []
for k in range(len(x)):
z.append(np.deg2rad(x[k]))
valX = np.asarray(z)
valY = np.asarray(y)
from scipy.optimize import curve_fit
def fitFunc(X,a,b,c):
return (- a*np.sin(b*X + c))
fig = plt.figure(2, figsize = (10,8))
init_vals = [1,1,1]
best_vals, covar = curve_fit(fitFunc, valX,