我有一个实验数据,我试图用scipy中的单变量pline函数来拟合曲线。数据看起来像:
x y
13 2.404070
12 1.588134
11 1.760112
10 1.771360
09 1.860087
08 1.955789
07 1.910408
06 1.655911
05 1.778952
04 2.624719
03 1.698099
02 3.022607
01 3.303135
我正在做的是:
import matplotlib.pyplot as plt
from scipy import interpolate
yinterp = interpolate.UnivariateSpline(x, y, s = 5e8)(x)
plt.plot(x, y, 'bo', label = 'Original')
plt.plot(x, yinterp, 'r', label = 'Interpolated')
plt.show()
这就是它的样子:
我想知道是否有人考虑过其他曲线拟合选项,希皮可能有?我对西皮比较陌生。
谢谢!
有几个问题。
第一个问题是x值的顺序。从
scipy.interpolate.UnivariateSpline
的文档中,我们发现我增加了压力。对于你给出的数据,x的顺序是相反的。 要调试它,使用“普通”样条线确保一切都有意义是很有用的。
第二个问题,以及与您的问题更直接相关的问题,与s参数有关。它是做什么的?再次从我们发现的文件中
所以s决定了插值曲线到数据点的距离,在最小二乘意义上。如果我们设置的值非常大,那么样条曲线不需要靠近数据点。
作为一个完整的示例,请考虑以下内容
相关问题 更多 >
编程相关推荐