我有一组数据,我想用正弦函数来拟合。因此,我编写了以下代码:
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def sin_curve(rad, a, b, c, d):
result = []
for value in rad:
outcome = float(a*np.sin(b*value + c) + d)
result.append(outcome)
return result
# X data => polangle_rad, Y data => three_ara
[a_300, b_300, c_300, d_300], var_300 = curve_fit(sin_curve, polangle_rad, three_ara, p0=[10,2,-0.5,75])
polplt_xrange = np.arange(0,2*np.pi+unit,unit)
# Plotting
plt.figure()
three_line,_ = ax.plot(polangle_rad, three_ara, 'bo', polplt_xrange, np.array(sin_curve(polplt_xrange, a_300, b_300, c_300, d_300)), 'b-')
plt.show()
我得到的曲线图是这样的:拟合曲线由蓝色实线给出,而数据点由蓝色圆点给出。
从图中,我们可以看到拟合曲线稍微向左旋转。有没有更好的方法来拟合曲线?你知道吗
这个问题是不可复制的。使用生成的值时,拟合是完美的。因此,该方法工作良好。你知道吗
相关问题 更多 >
编程相关推荐