为什么 scipy 的 splrep 在输入数据上显示错误?



当使用scipy的splrep函数为以下给定的数据点拟合三次B样条时,输出结果是一个零数组,并且它表示输入数据有错误。我已经检查了文档中的条件,相应地输入似乎是合理的。

knot = [70.0]
X= [65. ,  67.5, 70. , 72.5]
Y= [70.9277775 , 50.40025663 , 42.45372799 , 57.39316434]
Weight= [0.13514246 , 0.33885943 , 0.87606185 , 0.31531958]
SplineOutput=intp.splrep(X, Y, task=-1, t=knot, full_output=1, w=Weight)
SplineOutput 
>>>((array([65. , 65. , 65. , 65. , 70. , 72.5, 72.5, 72.5, 72.5]), array([0., 0., 0., 0., 0., 0., 0., 0., 0.]), 3), 0.0, 10, 'Error on input data')

如有任何关于此错误来源及其解决方法的帮助,我们将不胜感激。提前感谢!

从文档中,Notes

如果提供,节点t必须满足Schoenberg-Whitney条件,即必须存在数据点x[j]的子集,使得t[j] < x[j] < t[j+k+1],对于j=0, 1,...,n-k-2

这实际上意味着,如果k为3(我认为这是默认值(,则n必须至少为5。在您的情况下,n是4,因此是错误的原因。为xyw提供一个附加条目,或者减少k。如果你选择后者,请记住以下几点:

k:int,可选

样条曲线拟合的程度。建议使用三次样条曲线。应避免k的偶数值,尤其是在s值较小的情况下。1<=k<=5

相关内容

  • 没有找到相关文章

最新更新