import re
from decimal import *
import numpy
from scipy.signal import cspline1d, cspline1d_eval
import scipy.interpolate
import scipy
import math
import numpy
from scipy import interpolate
Y1 =[0.48960000000000004, 0.52736099999999997, 0.56413900000000006, 0.60200199999999993, 0.64071400000000001, 0.67668399999999995, 0.71315899999999999, 0.75050499999999998, 0.61494199999999999, 0.66246900000000009]
X1 =[0.024, 0.026000000000000002, 0.028000000000000004, 0.029999999999999999, 0.032000000000000001, 0.034000000000000002, 0.035999999999999997, 0.038000000000000006, 0.029999999999999999, 0.032500000000000001]
rep = scipy.interpolate.splrep(X1,Y1)
在上面的代码中我得到了
的错误Traceback (most recent call last):
File "/home/vibhor/Desktop/timing_tool/timing/interpolation_cap.py", line 64, in <module>
rep = scipy.interpolate.splrep(X1,Y1)
File "/usr/lib/python2.6/site-packages/scipy/interpolate/fitpack.py", line 418, in splrep
raise _iermess[ier][1],_iermess[ier][0]
ValueError: Error on input data
不知道发生了什么
答案 0 :(得分:11)
我认为这是由于X1值不是从最小到最大排序加上你还有一个重复的x点,即你需要对X1和Y1的值进行排序才能使用splrep并删除重复项。< / p> 来自文档的
splrep似乎是对FITPACK库的低级访问,这些库需要一个排序的,非重复的列表,这就是它返回错误的原因
interpolate.interp1d似乎有用,但你真的试过用它来找到一个新点吗?我认为你打电话时会发现错误,即rep(2)
答案 1 :(得分:1)
X值0.029999999999999999出现两次,有两个不同的Y坐标。它不会 如果这导致了一个试图拟合多项式样条曲线段的问题,我会感到惊讶....