微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

虽然使用scipy的splrep函数为以下给定的数据点拟合三次B样条,但输出结果为零数组,并表示输入数据有错误。我已经检查了doc中写的条件,因此输入似乎是理智的。

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.,72.5,72.5]),array([0.,0.,0.]),3),0.0,10,'Error on input data')

任何有关此错误来源及其解决方法的帮助将不胜感激。预先感谢!

解决方法

documentation注释

如果提供了结,则结点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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。